@sokeai/cli 1.0.15 → 1.0.18

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.
@@ -0,0 +1,531 @@
1
+ ---
2
+ name: soke-course
3
+ summary: 授客课程管理(课程列表/分类/课程详情/学习记录),通过 soke-cli 查询
4
+ version: 1.0.0
5
+ description: "授客课程管理:查询课程、课程分类、课程详情、学习记录。查询课程列表、课程分类、课程用户学习记录、课件列表、人脸识别记录。当用户需要查询课程信息、查看课程列表、查询学习记录、查看课程分类时使用。"
6
+ metadata:
7
+ requires:
8
+ bins: ["soke-cli"]
9
+ cliHelp: "soke-cli course --help"
10
+ ---
11
+
12
+ # 课程管理 (course)
13
+
14
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../soke-shared/SKILL.md`](../soke-shared/SKILL.md),其中包含认证、配置、权限处理**
15
+
16
+ ## 核心概念
17
+
18
+ - **Course(课程)**: 课程实体,包含标题、分类、讲师、学时等信息,通过 `uuid` 标识
19
+ - **CourseUser(课程用户)**: 用户的课程学习记录,包含学习进度、完成状态、学习时长等,通过 `target_id` 标识
20
+ - **Category(课程分类)**: 课程分类,支持层级结构,通过 `uuid` 标识
21
+ - **Lesson(课件)**: 课程下的课件,包含视频、音频、文章、文档等类型
22
+ - **LessonLearn(课件学习记录)**: 用户的课件学习记录
23
+ - **LessonFace(人脸识别记录)**: 课件学习过程中的人脸识别记录
24
+
25
+ ## 资源关系
26
+
27
+ ```
28
+ Course (课程)
29
+ ├── Category (课程分类)
30
+ ├── Lesson (课件)
31
+ │ ├── LessonLearn (课件学习记录)
32
+ │ └── LessonFace (人脸识别记录)
33
+ └── CourseUser (课程用户学习记录)
34
+ ├── dept_user_id (用户ID)
35
+ ├── study_progress (学习进度)
36
+ ├── finish_status (完成状态)
37
+ └── study_duration (学习时长)
38
+ ```
39
+
40
+ ## Shortcuts(推荐优先使用)
41
+
42
+ Shortcut 是对常用操作的高级封装(`soke-cli course +<verb> [flags]`)。有 Shortcut 的操作优先使用。
43
+
44
+ | Shortcut | 说明 |
45
+ |----------|------|
46
+ | [`+list-courses`](#list-courses) | 列出课程列表,支持时间范围、分类和状态筛选 |
47
+ | [`+get-course`](#get-course) | 获取单个课程的详细信息 |
48
+ | [`+list-categories`](#list-categories) | 列出课程分类 |
49
+ | [`+list-lessons`](#list-lessons) | 列出课程下的课件列表 |
50
+ | [`+list-course-users`](#list-course-users) | 列出课程用户学习记录列表 |
51
+ | [`+get-course-user`](#get-course-user) | 获取单个用户的课程学习详情 |
52
+ | [`+list-lesson-learns`](#list-lesson-learns) | 列出课件学习记录 |
53
+ | [`+list-lesson-faces`](#list-lesson-faces) | 列出课件人脸识别记录 |
54
+
55
+ ## 命令详解
56
+
57
+ ### +list-courses
58
+
59
+ 列出课程列表,支持按时间范围、分类和状态筛选。
60
+
61
+ **命令格式**:
62
+ ```bash
63
+ soke-cli course +list-courses \
64
+ --start-time <timestamp> \
65
+ --end-time <timestamp> \
66
+ [--category-id <category_id>] \
67
+ [--is-in <0|1>] \
68
+ [--status <0|1|2>] \
69
+ [--page <page>] \
70
+ [--page-size <size>]
71
+ ```
72
+
73
+ **参数说明**:
74
+ - `--start-time`: 课程创建开始时间(Unix时间戳,毫秒)**必需**
75
+ - `--end-time`: 课程创建结束时间(Unix时间戳,毫秒)**必需**(起始与结束时间差不超365天)
76
+ - `--category-id`: 课程分类ID(可选)
77
+ - `--is-in`: 课程来源(可选)
78
+ - `0`: 采购课
79
+ - `1`: 自建课
80
+ - `--status`: 课程状态(可选)
81
+ - `0`: 未发布
82
+ - `1`: 已发布
83
+ - `2`: 已关闭
84
+ - `--page`: 页码,从1开始(默认: 1)
85
+ - `--page-size`: 每页数量,最大100(默认: 100)
86
+
87
+ **返回字段**:
88
+ - `uuid`: 课程ID
89
+ - `title`: 课程标题
90
+ - `category_id`: 课程分类ID
91
+ - `certificate_id`: 关联证书ID
92
+ - `lector_id`: 关联讲师ID
93
+ - `study_type`: 学习模式(1=自由式, 2=解锁式)
94
+ - `credit`: 学分数量
95
+ - `point`: 积分数量
96
+ - `status`: 课程发布状态(-1=删除, 0=未发布, 1=已发布, 2=关闭)
97
+ - `lesson_num`: 课件数量
98
+ - `total_length`: 学时长度(单位:秒)
99
+ - `description`: 课程描述
100
+ - `pc_url`: PC端跳转链接
101
+ - `mobile_url`: 移动端跳转链接
102
+ - `create_time`: 创建时间
103
+ - `update_time`: 更新时间
104
+ - `create_dept_user_id`: 创建人ID
105
+ - `create_dept_user_name`: 创建人姓名
106
+
107
+ **示例**:
108
+ ```bash
109
+ # 查询2024年的所有课程
110
+ soke-cli course +list-courses \
111
+ --start-time 1704038400000 \
112
+ --end-time 1735660799000
113
+
114
+ # 查询已发布的自建课
115
+ soke-cli course +list-courses \
116
+ --start-time 1704038400000 \
117
+ --end-time 1735660799000 \
118
+ --is-in 1 \
119
+ --status 1
120
+
121
+ # 查询特定分类的课程
122
+ soke-cli course +list-courses \
123
+ --start-time 1704038400000 \
124
+ --end-time 1735660799000 \
125
+ --category-id "category123"
126
+ ```
127
+
128
+ **权限要求**: `course:course:readonly`
129
+
130
+ ---
131
+
132
+ ### +get-course
133
+
134
+ 获取单个课程的详细信息。
135
+
136
+ **命令格式**:
137
+ ```bash
138
+ soke-cli course +get-course --uuid <course_id>
139
+ ```
140
+
141
+ **参数说明**:
142
+ - `--uuid`: 课程ID **必需**
143
+
144
+ **返回字段**:
145
+ 与 `+list-courses` 返回字段相同,但返回单个课程的完整详情。
146
+
147
+ **示例**:
148
+ ```bash
149
+ # 查询指定课程详情
150
+ soke-cli course +get-course --uuid "course123"
151
+ ```
152
+
153
+ **权限要求**: `course:course:readonly`
154
+
155
+ ---
156
+
157
+ ### +list-categories
158
+
159
+ 列出课程分类,支持分页。
160
+
161
+ **命令格式**:
162
+ ```bash
163
+ soke-cli course +list-categories \
164
+ [--page <page>] \
165
+ [--page-size <size>]
166
+ ```
167
+
168
+ **参数说明**:
169
+ - `--page`: 页码,从1开始(默认: 1)
170
+ - `--page-size`: 每页数量,最大100(默认: 100)
171
+
172
+ **返回字段**:
173
+ - `uuid`: 分类ID
174
+ - `title`: 分类标题
175
+ - `parent_id`: 分类父ID
176
+ - `create_time`: 创建时间
177
+
178
+ **示例**:
179
+ ```bash
180
+ # 查询所有课程分类
181
+ soke-cli course +list-categories
182
+
183
+ # 分页查询
184
+ soke-cli course +list-categories --page 1 --page-size 50
185
+ ```
186
+
187
+ **权限要求**: `course:category:readonly`
188
+
189
+ ---
190
+
191
+ ### +list-lessons
192
+
193
+ 列出课程下的课件列表。
194
+
195
+ **命令格式**:
196
+ ```bash
197
+ soke-cli course +list-lessons \
198
+ --course-id <course_id> \
199
+ [--page <page>] \
200
+ [--page-size <size>]
201
+ ```
202
+
203
+ **参数说明**:
204
+ - `--course-id`: 课程ID **必需**
205
+ - `--page`: 页码,从1开始(默认: 1)
206
+ - `--page-size`: 每页数量,最大100(默认: 100)
207
+
208
+ **返回字段**:
209
+ - `uuid`: 课件ID
210
+ - `title`: 课件标题
211
+ - `type`: 课件类型(video=视频, audio=音频, article=文章, document=文档)
212
+ - `media_id`: 关联素材库ID
213
+ - `duration`: 课件时长(单位:秒)
214
+ - `sort`: 排序号
215
+ - `status`: 状态(-1=删除, 0=未发布, 1=发布)
216
+ - `create_time`: 创建时间
217
+
218
+ **示例**:
219
+ ```bash
220
+ # 查询课程的所有课件
221
+ soke-cli course +list-lessons --course-id "course123"
222
+ ```
223
+
224
+ **权限要求**: `course:lesson:readonly`
225
+
226
+ ---
227
+
228
+ ### +list-course-users
229
+
230
+ 列出课程用户学习记录列表,支持按用户ID和完成时间筛选。
231
+
232
+ **命令格式**:
233
+ ```bash
234
+ soke-cli course +list-course-users \
235
+ --course-id <course_id> \
236
+ [--userid-list <user_ids>] \
237
+ [--finish-start-time <timestamp>] \
238
+ [--finish-end-time <timestamp>] \
239
+ [--page <page>] \
240
+ [--page-size <size>]
241
+ ```
242
+
243
+ **参数说明**:
244
+ - `--course-id`: 课程ID **必需**
245
+ - `--userid-list`: 用户ID列表,逗号分隔,最多100个(可选)
246
+ - `--finish-start-time`: 完成开始时间(Unix时间戳,毫秒)(可选)
247
+ - `--finish-end-time`: 完成结束时间(Unix时间戳,毫秒)(可选)
248
+ - `--page`: 页码,从1开始(默认: 1)
249
+ - `--page-size`: 每页数量,最大100(默认: 100)
250
+
251
+ **返回字段**:
252
+ - `target_id`: 课程用户记录ID
253
+ - `dept_user_id`: 部门用户ID
254
+ - `dept_user_name`: 用户姓名
255
+ - `study_progress`: 学习进度(百分比)
256
+ - `finish_status`: 完成状态(0=未完成, 1=已完成)
257
+ - `study_duration`: 学习时长(单位:秒)
258
+ - `create_time`: 创建时间
259
+ - `update_time`: 更新时间
260
+
261
+ **示例**:
262
+ ```bash
263
+ # 查询某个课程的所有用户学习记录
264
+ soke-cli course +list-course-users --course-id "course123"
265
+
266
+ # 查询特定用户的学习记录
267
+ soke-cli course +list-course-users \
268
+ --course-id "course123" \
269
+ --userid-list "user1,user2,user3"
270
+
271
+ # 查询某个时间段内完成的学习记录
272
+ soke-cli course +list-course-users \
273
+ --course-id "course123" \
274
+ --finish-start-time 1704038400000 \
275
+ --finish-end-time 1735660799000
276
+ ```
277
+
278
+ **权限要求**: `course:courseUser:readonly`
279
+
280
+ ---
281
+
282
+ ### +get-course-user
283
+
284
+ 获取单个用户的课程学习详情。
285
+
286
+ **命令格式**:
287
+ ```bash
288
+ soke-cli course +get-course-user \
289
+ --course-id <course_id> \
290
+ --dept-user-id <dept_user_id>
291
+ ```
292
+
293
+ **参数说明**:
294
+ - `--course-id`: 课程ID **必需**
295
+ - `--dept-user-id`: 部门用户ID **必需**
296
+
297
+ **返回字段**:
298
+ 与 `+list-course-users` 返回字段相同,但返回单个用户的完整学习详情。
299
+
300
+ **示例**:
301
+ ```bash
302
+ # 查询张三的课程学习记录
303
+ soke-cli course +get-course-user \
304
+ --course-id "course123" \
305
+ --dept-user-id "user456"
306
+ ```
307
+
308
+ **权限要求**: `course:courseUser:readonly`
309
+
310
+ **使用场景**:
311
+ - 当用户询问"查询某人的课程学习情况"时使用
312
+ - 需要同时提供课程ID和用户ID
313
+ - 如果只知道用户名,需要先通过 `soke-cli contact +search-user` 查询用户ID
314
+
315
+ ---
316
+
317
+ ### +list-lesson-learns
318
+
319
+ 列出课件学习记录,支持按用户ID和时间范围筛选。
320
+
321
+ **命令格式**:
322
+ ```bash
323
+ soke-cli course +list-lesson-learns \
324
+ --lesson-id <lesson_id> \
325
+ [--userid-list <user_ids>] \
326
+ [--start-time <timestamp>] \
327
+ [--end-time <timestamp>] \
328
+ [--page <page>] \
329
+ [--page-size <size>]
330
+ ```
331
+
332
+ **参数说明**:
333
+ - `--lesson-id`: 课件ID **必需**
334
+ - `--userid-list`: 用户ID列表,逗号分隔,最多100个(可选)
335
+ - `--start-time`: 学习开始时间(Unix时间戳,毫秒)(可选)
336
+ - `--end-time`: 学习结束时间(Unix时间戳,毫秒)(可选)
337
+ - `--page`: 页码,从1开始(默认: 1)
338
+ - `--page-size`: 每页数量,最大100(默认: 100)
339
+
340
+ **返回字段**:
341
+ - `uuid`: 学习记录ID
342
+ - `dept_user_id`: 部门用户ID
343
+ - `dept_user_name`: 用户姓名
344
+ - `study_duration`: 学习时长(单位:秒)
345
+ - `finish_status`: 完成状态(0=未完成, 1=已完成)
346
+ - `create_time`: 创建时间
347
+ - `update_time`: 更新时间
348
+
349
+ **示例**:
350
+ ```bash
351
+ # 查询某个课件的所有学习记录
352
+ soke-cli course +list-lesson-learns --lesson-id "lesson123"
353
+
354
+ # 查询特定用户的课件学习记录
355
+ soke-cli course +list-lesson-learns \
356
+ --lesson-id "lesson123" \
357
+ --userid-list "user1,user2"
358
+ ```
359
+
360
+ **权限要求**: `course:lessonLearn:readonly`
361
+
362
+ ---
363
+
364
+ ### +list-lesson-faces
365
+
366
+ 列出课件人脸识别记录,支持按用户ID和时间范围筛选。
367
+
368
+ **命令格式**:
369
+ ```bash
370
+ soke-cli course +list-lesson-faces \
371
+ --lesson-id <lesson_id> \
372
+ [--userid-list <user_ids>] \
373
+ [--start-time <timestamp>] \
374
+ [--end-time <timestamp>] \
375
+ [--page <page>] \
376
+ [--page-size <size>]
377
+ ```
378
+
379
+ **参数说明**:
380
+ - `--lesson-id`: 课件ID **必需**
381
+ - `--userid-list`: 用户ID列表,逗号分隔,最多100个(可选)
382
+ - `--start-time`: 识别开始时间(Unix时间戳,毫秒)(可选)
383
+ - `--end-time`: 识别结束时间(Unix时间戳,毫秒)(可选)
384
+ - `--page`: 页码,从1开始(默认: 1)
385
+ - `--page-size`: 每页数量,最大100(默认: 100)
386
+
387
+ **返回字段**:
388
+ - `uuid`: 识别记录ID
389
+ - `dept_user_id`: 部门用户ID
390
+ - `dept_user_name`: 用户姓名
391
+ - `face_status`: 识别状态(0=未识别, 1=识别成功, 2=识别失败)
392
+ - `face_time`: 识别时间
393
+ - `create_time`: 创建时间
394
+
395
+ **示例**:
396
+ ```bash
397
+ # 查询某个课件的所有人脸识别记录
398
+ soke-cli course +list-lesson-faces --lesson-id "lesson123"
399
+
400
+ # 查询特定用户的人脸识别记录
401
+ soke-cli course +list-lesson-faces \
402
+ --lesson-id "lesson123" \
403
+ --userid-list "user1,user2"
404
+ ```
405
+
406
+ **权限要求**: `course:lessonFace:readonly`
407
+
408
+ ---
409
+
410
+ ## 常见工作流
411
+
412
+ ### 工作流1: 查询用户的课程学习情况
413
+
414
+ 当用户询问"查询张三的课程学习情况"时:
415
+
416
+ **步骤1**: 如果只知道用户名,先查询用户ID
417
+ ```bash
418
+ soke-cli contact +search-user --name "张三"
419
+ ```
420
+
421
+ **步骤2**: 获取课程列表,找到目标课程ID
422
+ ```bash
423
+ soke-cli course +list-courses \
424
+ --start-time 1704038400000 \
425
+ --end-time 1735660799000
426
+ ```
427
+
428
+ **步骤3**: 查询该用户的课程学习记录
429
+ ```bash
430
+ soke-cli course +get-course-user \
431
+ --course-id <course_id> \
432
+ --dept-user-id <dept_user_id>
433
+ ```
434
+
435
+ ### 工作流2: 统计课程学习完成情况
436
+
437
+ 当用户询问"统计某个课程的学习完成情况"时:
438
+
439
+ **步骤1**: 获取课程用户学习记录列表
440
+ ```bash
441
+ soke-cli course +list-course-users --course-id <course_id>
442
+ ```
443
+
444
+ **步骤2**: 分析返回的数据
445
+ - 统计 `finish_status` 字段的分布
446
+ - 计算平均学习进度(`study_progress` 字段)
447
+ - 统计完成人数和未完成人数
448
+ - 计算平均学习时长(`study_duration` 字段)
449
+
450
+ ### 工作流3: 查询某个时间段的课程
451
+
452
+ 当用户询问"查询本月的课程"时:
453
+
454
+ **步骤1**: 计算时间范围(Unix时间戳,毫秒)
455
+ ```bash
456
+ # 例如:2024年1月1日 00:00:00 = 1704038400000
457
+ # 2024年1月31日 23:59:59 = 1706716799000
458
+ ```
459
+
460
+ **步骤2**: 查询课程列表
461
+ ```bash
462
+ soke-cli course +list-courses \
463
+ --start-time 1704038400000 \
464
+ --end-time 1706716799000
465
+ ```
466
+
467
+ ### 工作流4: 查询课程的课件学习详情
468
+
469
+ 当用户询问"查询某个课程的课件学习情况"时:
470
+
471
+ **步骤1**: 获取课程的课件列表
472
+ ```bash
473
+ soke-cli course +list-lessons --course-id <course_id>
474
+ ```
475
+
476
+ **步骤2**: 查询每个课件的学习记录
477
+ ```bash
478
+ soke-cli course +list-lesson-learns --lesson-id <lesson_id>
479
+ ```
480
+
481
+ **步骤3**: (可选)查询课件的人脸识别记录
482
+ ```bash
483
+ soke-cli course +list-lesson-faces --lesson-id <lesson_id>
484
+ ```
485
+
486
+ ## 注意事项
487
+
488
+ 1. **时间格式**: 所有时间参数使用Unix时间戳(毫秒),不是秒
489
+ 2. **时间范围限制**: `+list-courses` 的起始与结束时间差不能超过365天
490
+ 3. **分页**: 默认每页100条,最大100条,超过需要分页查询
491
+ 4. **用户ID**: `dept_user_id` 是企业内的用户ID,不是用户名
492
+ 5. **课程ID**: `course-id` 和 `uuid` 是同一个字段,都表示课程ID
493
+ 6. **权限**: 所有操作都需要先完成认证(`soke-cli auth login`)
494
+ 7. **课程状态**:
495
+ - `-1`: 删除
496
+ - `0`: 未发布
497
+ - `1`: 已发布
498
+ - `2`: 关闭
499
+ 8. **学习模式**:
500
+ - `1`: 自由式(可以任意顺序学习)
501
+ - `2`: 解锁式(必须按顺序学习)
502
+
503
+ ## 错误处理
504
+
505
+ ### 权限不足
506
+ 如果遇到权限错误,参考 [`../soke-shared/SKILL.md`](../soke-shared/SKILL.md) 中的权限处理章节。
507
+
508
+ ### 参数错误
509
+ 使用 `--help` 查看命令参数说明:
510
+ ```bash
511
+ soke-cli course +list-courses --help
512
+ ```
513
+
514
+ ### 数据不存在
515
+ 如果查询的课程或用户不存在,API会返回空数据或错误提示。
516
+
517
+ ### 时间范围超限
518
+ 如果 `+list-courses` 的时间范围超过365天,API会返回错误,需要缩小时间范围。
519
+
520
+ ## API 接口映射
521
+
522
+ | Shortcut | API 路径 | HTTP 方法 |
523
+ |----------|----------|-----------|
524
+ | `+list-courses` | `/course/course/list` | GET |
525
+ | `+get-course` | `/course/course/info` | GET |
526
+ | `+list-categories` | `/course/category/list` | GET |
527
+ | `+list-lessons` | `/course/lesson/list` | GET |
528
+ | `+list-course-users` | `/course/courseUser/list` | GET |
529
+ | `+get-course-user` | `/course/courseUser/info` | GET |
530
+ | `+list-lesson-learns` | `/course/lessonLearn/list` | GET |
531
+ | `+list-lesson-faces` | `/course/lessonFace/list` | GET |