@sokeai/cli 1.0.60 → 1.0.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -40,7 +40,7 @@ soke-cli config show # 验证登录状态
40
40
  │ 6. 创建学习地图阶段 → 添加课程内容,获取 stage-uuid │
41
41
  │ 7. 发布学习地图 → 学员可见 │
42
42
  │ 8. (可选) 指派 → 分配给部门/学员 → 学员开始学习 │
43
- │ 9. 查询学员进度 查看学习状态
43
+ │ 9. 查询学习地图详情 查看地图完整信息
44
44
  └─────────────────────────────────────────────────────────────────────┘
45
45
  ```
46
46
 
@@ -83,6 +83,7 @@ soke-cli config show # 验证登录状态
83
83
  | 5 | `+check-item-status` | `data.availabelIds[]` | 步骤6 `--item-uuids`(只传可用 UUID) |
84
84
  | 6 | `+create-stage` | `data.info.uuid` | 可创建多个阶段 |
85
85
  | 7 | `+publish` | `data.info.status=1` | 发布成功 |
86
+ | 9 | `+detail` | `data.info.*` | 查看完整地图信息 |
86
87
 
87
88
  ---
88
89
 
@@ -132,7 +133,7 @@ soke-cli learning-map +create-map \
132
133
  |------|------|------|
133
134
  | `--path` | 是 | 所属分类 UUID(步骤1 获取) |
134
135
  | `--title` | 是 | 学习地图名称 |
135
- | `--type` | 是 | `cycle`(周期学习)/ `free`(自由学习) |
136
+ | `--type` | 是 | `fixed`(固定时间)/ `cycle`(周期型) |
136
137
  | `--template` | 是 | 模板 ID,如 `14` |
137
138
  | `--picture` | 是 | 封面图片 URL |
138
139
  | `--description` | 否 | 简介(支持 HTML) |
@@ -321,23 +322,30 @@ soke-cli assign +create \
321
322
 
322
323
  ---
323
324
 
324
- ## 步骤9:查询学员进度
325
+ ## 步骤9:查询学习地图详情
325
326
 
326
327
  ```bash
327
- # 查询学习地图学员列表
328
- soke-cli learning-map +list-map-users --map-id "MAP-UUID"
328
+ soke-cli learning-map +detail --uuid "MAP-UUID"
329
329
 
330
- # 查询单个学员详情
331
- soke-cli learning-map +get-map-user \
332
- --map-id "MAP-UUID" \
333
- --dept-user-id "DEPT-USER-ID"
334
-
335
- # 查询阶段学员进度
336
- soke-cli learning-map +list-stage-users \
337
- --map-id "MAP-UUID" \
338
- --stage-id "STAGE-UUID"
330
+ # JSON 输出:
331
+ soke-cli learning-map +detail --uuid "MAP-UUID" --format json
339
332
  ```
340
333
 
334
+ **参数说明**:
335
+
336
+ | 参数 | 必填 | 说明 |
337
+ |------|------|------|
338
+ | `--uuid` | 是 | 学习地图 UUID |
339
+
340
+ **响应关键字段**:
341
+ - `data.info.uuid` → 地图 UUID
342
+ - `data.info.title` → 地图名称
343
+ - `data.info.status` → 状态(`0` 未发布 / `1` 已发布)
344
+ - `data.info.stage_number` → 阶段数量
345
+ - `data.info.learning_num` → 学习人数
346
+ - `data.info.finish_num` → 完成人数
347
+ - `data.info.point` / `data.info.credit` → 积分 / 学分
348
+
341
349
  ---
342
350
 
343
351
  ## 可用命令全览
@@ -359,6 +367,7 @@ soke-cli learning-map +list-stage-users \
359
367
  |------|------|------|
360
368
  | `+list-categories` | 查询学习地图分类 | read |
361
369
  | `+list-maps` | 查询学习地图列表 | read |
370
+ | `+detail` | 查询学习地图详情 | read |
362
371
  | `+list-stages` | 查询阶段列表 | read |
363
372
  | `+list-items` | 查询阶段内容列表 | read |
364
373
 
@@ -510,6 +519,7 @@ soke-cli learning-map +list-maps \
510
519
  | `learning-map +check-item-status` | `/skills/learningMap/item/checkUseStatus` | POST (form) |
511
520
  | `learning-map +create-stage` | `/skills/learningMap/stage/create` | POST (form) |
512
521
  | `learning-map +publish` | `/skills/learningMap/update/{uuid}` | PUT (form) |
522
+ | `learning-map +detail` | `/skills/learningMap/detail/{uuid}` | GET |
513
523
  | `learning-map +list-stages` | `/learningMap/stage/list` | GET |
514
524
  | `learning-map +list-items` | `/learningMap/item/list` | GET |
515
525
  | `learning-map +list-map-users` | `/learningMap/user/list` | GET |
@@ -30,79 +30,102 @@
30
30
 
31
31
  ## 安装步骤
32
32
 
33
- ### 通过 NPM 安装
33
+ > ⚠️ **先看这里**:以下步骤会将 `soke-cli` 安装到用户专属目录(`~/.npm-global`),无需 sudo、不依赖任何 AI 工具,任何终端打开即用。
34
+ >
35
+ > **三步走:① 改 npm prefix → ② 加 PATH → ③ 安装**
34
36
 
35
- 这是推荐的安装方式,简单快捷,适合所有用户。
37
+ ### 第一步:配置 npm prefix(所有平台通用)
36
38
 
37
- #### macOS / Linux 安装
38
-
39
- 打开终端,执行以下命令:
39
+ 设置 npm 全局安装路径为用户专属目录,这样:
40
+ - **不需要 sudo/管理员权限**
41
+ - **不会装到奇怪的系统目录**
42
+ - **任何终端都能找到**
40
43
 
41
44
  ```bash
42
- npm install -g @sokeai/cli@latest
45
+ mkdir -p ~/.npm-global
46
+ npm config set prefix ~/.npm-global
43
47
  ```
44
48
 
45
- #### Windows 安装
49
+ > 💡 这一步只需执行一次,之后所有通过 `npm install -g` 安装的工具都会放到统一位置。
46
50
 
47
- **方式一:使用 PowerShell(推荐)**
51
+ ---
48
52
 
49
- 1. 以管理员身份打开 PowerShell:
50
- - 按 `Win + X`,选择"Windows PowerShell (管理员)"
51
- - 或在开始菜单搜索"PowerShell",右键选择"以管理员身份运行"
53
+ ### 第二步:把 npm 全局 bin 目录加入 PATH
52
54
 
53
- 2. 执行安装命令:
54
- ```powershell
55
- npm install -g @sokeai/cli@latest
56
- ```
55
+ `~/.npm-global/bin` 加入 shell 搜索路径,这样终端才能找到 `soke-cli`。
57
56
 
58
- **方式二:使用 CMD 命令提示符**
57
+ #### macOS / Linux
59
58
 
60
- 1. 以管理员身份打开命令提示符:
61
- - 按 `Win + R`,输入 `cmd`,按 `Ctrl + Shift + Enter`
62
- - 或在开始菜单搜索"cmd",右键选择"以管理员身份运行"
59
+ `~/.zshrc`(Zsh)或 `~/.bashrc`(Bash)末尾追加一行:
63
60
 
64
- 2. 执行安装命令:
65
- ```cmd
66
- npm install -g @sokeai/cli@latest
67
- ```
61
+ ```bash
62
+ echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.zshrc
63
+ source ~/.zshrc
64
+ ```
68
65
 
69
- > 💡 **Windows 提示**:
70
- > - 如果提示"npm 不是内部或外部命令",请先安装 [Node.js](https://nodejs.org/)
71
- > - 安装过程中可能需要管理员权限
72
- > - 如果遇到权限问题,确保以管理员身份运行终端
66
+ > 💡 **Apple Silicon (M1/M2/M3) 用户**如果用 Homebrew 安装 Node.js,npm prefix 可能已指向 `/opt/homebrew`(arm64)或 `/usr/local`(x64)。上述 `npm config set prefix` 会覆盖默认值,所有全局工具统一走 `~/.npm-global`,不影响 Homebrew 自有工具。
73
67
 
74
- ---
68
+ #### Windows
69
+
70
+ **PowerShell**:
71
+ ```powershell
72
+ # 查看当前用户 PATH
73
+ [Environment]::GetEnvironmentVariable('Path', 'User')
75
74
 
76
- ### 安装过程说明
75
+ # 追加 npm-global 路径
76
+ $npmGlobal = "$env:USERPROFILE\.npm-global\bin"
77
+ [Environment]::SetEnvironmentVariable('Path', "$(([Environment]::GetEnvironmentVariable('Path', 'User') -split ';' -notlike '' -join ';'));$npmGlobal", 'User')
78
+
79
+ # 验证(需要重新打开 PowerShell 使改动生效,或手动刷新)
80
+ $env:Path = [Environment]::GetEnvironmentVariable('Path', 'User')
81
+ ```
77
82
 
78
- 无论使用哪个平台,安装过程都是自动化的:
83
+ **CMD**:
84
+ ```cmd
85
+ setx PATH "%PATH%;%USERPROFILE%\.npm-global\bin"
86
+ ```
79
87
 
80
- 1. NPM 会自动下载 `@sokeai/cli`
81
- 2. 安装脚本会根据你的操作系统(macOS/Linux/Windows)和架构(x64/arm64)自动下载对应的二进制文件
82
- 3. 二进制文件会被放置在对应的目录:
83
- - **macOS/Linux**: `$(npm root -g)/@sokeai/cli/bin/soke-cli`
84
- - **Windows**: `%APPDATA%\npm\node_modules\@sokeai\cli\bin\soke-cli.exe`
85
- 4. 如果你安装了 AI Agent(如 Claude Code),相关的 Skills 会自动同步到对应目录
88
+ > ⚠️ **Windows**: `setx` 修改的是**系统环境变量**,需要新的 CMD/PowerShell 窗口才能生效(当前窗口不会变)。
86
89
 
87
90
  ---
88
91
 
89
- ### 验证安装
92
+ ### 第三步:安装 soke-cli
90
93
 
91
- 安装完成后,验证是否安装成功:
94
+ PATH 配置完成后,新开一个终端窗口(或 `source` 刚改的文件),然后安装:
92
95
 
93
- **macOS / Linux**:
96
+ **macOS / Linux**:
94
97
  ```bash
95
- soke-cli --version
98
+ npm install -g @sokeai/cli@latest
96
99
  ```
97
100
 
98
- **Windows (PowerShell / CMD)**:
99
- ```cmd
101
+ **Windows (PowerShell / CMD)**:
102
+ ```powershell
103
+ npm install -g @sokeai/cli@latest
104
+ ```
105
+
106
+ > 💡 安装脚本会自动根据操作系统(macOS / Linux / Windows)和芯片架构(x64 / arm64)下载对应二进制文件,无需手动选择。
107
+
108
+ ---
109
+
110
+ ### 安装后验证
111
+
112
+ 新开一个终端(让 PATH 生效),依次执行:
113
+
114
+ ```bash
115
+ # 确认路径
116
+ which soke-cli
117
+ # 预期输出类似: /Users/你的用户名/.npm-global/bin/soke-cli
118
+
119
+ # 确认版本
100
120
  soke-cli --version
121
+ # 预期输出: soke-cli version x.x.x
101
122
  ```
102
123
 
103
- 如果显示版本号(如 `1.0.15`),说明安装成功。
124
+ 如果显示版本号,说明安装成功 ✅。
104
125
 
105
- **如果提示"命令未找到"**,请参考[常见问题](#常见问题)章节。
126
+ **如果 `which soke-cli` 无输出**,说明 PATH 未生效:
127
+ - macOS/Linux: 确认 `echo $PATH | tr ':' '\n' | grep npm-global` 有输出,若没有请重新执行第二步
128
+ - Windows: 确认环境变量中已添加 `C:\Users\你的用户名\.npm-global\bin`
106
129
 
107
130
  ---
108
131
 
@@ -246,51 +269,47 @@ soke-cli exam +list-exams --page 1 --page-size 10
246
269
 
247
270
  **原因**: 二进制文件不在系统 PATH 中。
248
271
 
249
- **解决方案**:
272
+ **解决方案(重新做安装步骤第二步)**:
250
273
 
251
- **macOS/Linux**:
274
+ **macOS / Linux**:
252
275
  ```bash
253
- # 检查安装位置
276
+ # 确认 npm-global/bin 是否已在 PATH
254
277
  which soke-cli
255
278
 
256
- # 如果没有输出,手动创建软链接
257
- sudo ln -s $(npm root -g)/@sokeai/cli/bin/soke-cli /usr/local/bin/soke-cli
279
+ # 若无输出,检查路径是否存在
280
+ ls ~/.npm-global/bin/soke-cli 2>/dev/null && echo "存在,但 PATH 未生效"
281
+
282
+ # 重新追加 PATH 并生效
283
+ echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.zshrc
284
+ source ~/.zshrc
285
+
286
+ # 再次验证
287
+ which soke-cli
288
+ soke-cli --version
258
289
  ```
259
290
 
260
- **Windows**:
291
+ **Windows**:
292
+ ```powershell
293
+ # 检查 .npm-global/bin 是否存在
294
+ Test-Path "$env:USERPROFILE\.npm-global\bin\soke-cli.exe"
261
295
 
262
- 1. **检查 NPM 全局路径是否在 PATH 中**
263
-
264
- 打开 PowerShell,执行:
265
- ```powershell
266
- npm config get prefix
267
- ```
268
-
269
- 记下输出的路径(例如:`C:\Users\YourName\AppData\Roaming\npm`)
296
+ # 若存在但命令找不到,手动刷新 PATH
297
+ $env:Path = [Environment]::GetEnvironmentVariable('Path', 'User')
270
298
 
271
- 2. **添加到系统 PATH**
272
-
273
- - 按 `Win + X`,选择"系统"
274
- - 点击"高级系统设置"
275
- - 点击"环境变量"
276
- - 在"用户变量"或"系统变量"中找到 `Path`
277
- - 点击"编辑",添加上面的 NPM 路径
278
- - 点击"确定"保存
279
-
280
- 3. **重启终端**
281
-
282
- 关闭并重新打开 PowerShell 或 CMD,再次尝试:
283
- ```cmd
284
- soke-cli --version
285
- ```
299
+ # 确认
300
+ where.exe soke-cli
301
+ ```
286
302
 
287
- **或者使用完整路径运行**:
288
- ```cmd
289
- # Windows 示例
290
- %APPDATA%\npm\soke-cli --version
303
+ **直接运行(临时方案,不推荐长期使用)**:
291
304
 
292
- # 或者
293
- C:\Users\YourName\AppData\Roaming\npm\soke-cli.exe --version
305
+ **macOS / Linux**:
306
+ ```bash
307
+ ~/.npm-global/bin/soke-cli --version
308
+ ```
309
+
310
+ **Windows**:
311
+ ```cmd
312
+ %USERPROFILE%\.npm-global\bin\soke-cli.exe --version
294
313
  ```
295
314
 
296
315
  ### Q3: 登录时浏览器没有自动打开
@@ -394,4 +413,4 @@ npx skills add liuchenlong1111/soke-cli -y -g
394
413
 
395
414
  ---
396
415
 
397
- **祝你使用愉快!** 🎉
416
+ **祝你使用愉快!** 🎉
@@ -141,6 +141,31 @@ soke-cli course +lesson-get --lesson-id "LESSON-UUID"
141
141
  **返回:**
142
142
  - 课件详细信息(包含素材信息、转换状态等)
143
143
 
144
+ ### 课件排序
145
+
146
+ #### `course +lesson-sort` - 调整课程课件顺序
147
+
148
+ 按指定顺序重新排列课程下的课件。
149
+
150
+ **参数:**
151
+ - `--course-id` (必填): 课程 UUID
152
+ - `--sort-list` (必填): 课件 ID 有序列表,多个 ID 用逗号分隔,顺序即为最终显示顺序
153
+
154
+ **示例:**
155
+ ```bash
156
+ # 将两个课件按指定顺序排列
157
+ soke-cli course +lesson-sort \
158
+ --course-id "F23F32C5-8586-45E5-B98D-5D005FD596B1" \
159
+ --sort-list "29F629AB-3FF6-4EC0-A7C5-CC6D7124518E,058B89B2-95CA-45EF-9F52-231E58AF2E91"
160
+ ```
161
+
162
+ **返回:**
163
+ - 调整成功提示及课件数量
164
+
165
+ **说明:**
166
+ - `--sort-list` 中课件 ID 的顺序即为调整后的最终排列顺序
167
+ - 先使用 `course +lesson-list` 查出所有课件 UUID,再按需排列后传入
168
+
144
169
 
145
170
  ## 使用场景
146
171
 
@@ -248,44 +273,20 @@ soke-cli course +lesson-create \
248
273
  soke-cli course +lesson-list --course-id "{course_id}" --format json
249
274
  ```
250
275
 
251
- **响应示例**:
252
- ```json
253
- {
254
- "success": true,
255
- "data": {
256
- "list": [
257
- {
258
- "uuid": "lesson-123",
259
- "title": "第一课",
260
- "type": "video",
261
- "length": 600,
262
- "sort_order": 1
263
- }
264
- ]
265
- }
266
- }
267
- ```
268
-
269
276
  **获取课件详情**:
270
277
  ```
271
278
  soke-cli course +lesson-get --lesson-id "{lesson_id}" --format json
272
279
  ```
273
280
 
274
- **响应示例**:
275
- ```json
276
- {
277
- "success": true,
278
- "data": {
279
- "uuid": "lesson-123",
280
- "title": "第一课",
281
- "type": "video",
282
- "length": 600,
283
- "media_id": "media-456",
284
- "filename": "lesson1.mp4",
285
- "filesize": 10485760,
286
- "object": "uploads/2024/01/abc123.mp4"
287
- }
288
- }
281
+ **调整课件顺序**:
282
+ ```
283
+ # 先查询出所有课件 UUID
284
+ soke-cli course +lesson-list --course-id "{course_id}" --format json
285
+
286
+ # 按期望顺序传入 UUID 列表(逗号分隔,第一个排在最前)
287
+ soke-cli course +lesson-sort \
288
+ --course-id "{course_id}" \
289
+ --sort-list "{lesson_id_1},{lesson_id_2},{lesson_id_3}"
289
290
  ```
290
291
 
291
292
  ## API 接口映射
@@ -295,6 +296,7 @@ soke-cli course +lesson-get --lesson-id "{lesson_id}" --format json
295
296
  | `course +lesson-create` | `/skills/course/lesson/create` | POST | 创建课件 |
296
297
  | `course +lesson-list` | `/skills/course/lesson/list` | GET | 列出课件列表 |
297
298
  | `course +lesson-get` | `/skills/course/lesson/{id}` | GET | 获取课件详情 |
299
+ | `course +lesson-sort` | `/skills/course/lesson/sort/{course_id}` | PUT | 调整课件顺序 |
298
300
  | `course +lesson-update` | `/skills/course/lesson/{id}` | PUT | 更新课件信息 |
299
301
  ## 课件与素材的关系
300
302
 
@@ -481,7 +483,8 @@ soke-cli file +upload --file "lesson.mp4" --format json
481
483
  1. **素材必须先上传**: 创建课件前必须先上传素材到素材库
482
484
  2. **类型匹配**: 课件类型必须与素材类型匹配
483
485
  3. **时长设置**: 视频和音频必须设置正确的时长,文档类型填 0
484
- 4. **排序规则**: 课件按创建时间自动排序,也可以手动调整 `sort_order`
486
+ 4. **排序规则**: 课件按创建时间自动排序,可通过 `course +lesson-sort` 手动调整顺序
487
+ 5. **排序需覆盖全部课件**: 调用 `+lesson-sort` 时建议传入课程下所有课件的 UUID,避免遗漏
485
488
  6. **发布要求**: 课程至少需要一个课件才能发布
486
489
 
487
490
  ## 权限要求