@sokeai/cli 1.0.78 → 1.0.80

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.
Files changed (156) hide show
  1. package/package.json +1 -1
  2. package/scripts/install.js +8 -0
  3. package/scripts/run.js +3 -2
  4. package/skills/mono/.workbuddy/memory/2026-09-01.md +2 -0
  5. package/skills/mono/.workbuddy/memory/MEMORY.md +4 -0
  6. package/skills/mono/ARCHITECTURE_AND_EXTENSION_GUIDE.md +572 -0
  7. package/skills/mono/README.md +2 -0
  8. package/skills/mono/SKILL.md +125 -119
  9. package/skills/mono/SKILL_MD_/344/274/230/345/214/226/346/226/271/346/241/210.md +478 -0
  10. package/skills/mono/references/modules/README.md +74 -0
  11. package/skills/mono/references/modules/soke-ai-coach-director/CHANGELOG.md +1 -1
  12. package/skills/mono/references/modules/soke-ai-coach-director/MODULE.md +12 -0
  13. package/skills/mono/references/modules/soke-ai-coach-director/README.md +4 -1
  14. package/skills/mono/references/modules/soke-ai-coach-director/coaching/prompt-engineer/parts/part1-basic.md +1 -1
  15. package/skills/mono/references/modules/soke-ai-coach-director/coaching/prompt-optimizer/prompt-optimizer.md +3 -3
  16. package/skills/mono/references/modules/soke-ai-coach-director/platform/adapters/README.md +4 -2
  17. package/skills/mono/references/modules/soke-ai-coach-director/platform/adapters/qclaw.md +3 -1
  18. package/skills/mono/references/modules/soke-ai-coach-director/platform/adapters/{wukong.md → qwen.md} +18 -18
  19. package/skills/mono/references/modules/soke-ai-coach-director/platform/adapters/workbuddy.md +1 -1
  20. package/skills/mono/references/modules/soke-ai-coach-director/platform/api-fallback.md +1 -1
  21. package/skills/mono/references/modules/soke-ai-coach-director/platform/interaction.md +1 -1
  22. package/skills/mono/references/modules/soke-ai-coach-director/platform/platform-support-matrix.md +28 -0
  23. package/skills/mono/references/modules/soke-ai-coach-director/platform/publish-gate.md +1 -0
  24. package/skills/mono/references/modules/soke-ai-coach-director/platform/soke-ai-training/soke-ai-training.md +5 -3
  25. package/skills/mono/references/modules/soke-ai-coach-director/platform/sync-engine.md +2 -2
  26. package/skills/mono/references/modules/soke-ai-coach-director/references/env-check.md +3 -0
  27. package/skills/mono/references/modules/soke-ai-coach-director/references/exec-handbook.md +7 -7
  28. package/skills/mono/references/modules/soke-ai-coach-director/references/exec-part1.md +5 -5
  29. package/skills/mono/references/modules/soke-ai-coach-director/references/platform-api-pitfalls.md +1 -1
  30. package/skills/mono/references/modules/soke-ai-coach-director/references/self-learning-engine.md +4 -0
  31. package/skills/mono/references/modules/soke-ai-coach-director/references/subs/part1/SOP.md +2 -2
  32. package/skills/mono/references/modules/soke-ai-coach-director/references/subs/publish/SOP.md +3 -3
  33. package/skills/mono/references/modules/soke-ai-coach-director/scripts/activator.sh +4 -0
  34. package/skills/mono/references/modules/soke-ai-coach-director/scripts/error-detector.sh +4 -0
  35. package/skills/mono/references/modules/soke-ai-coach-director/scripts/extract-skill.sh +7 -0
  36. package/skills/mono/references/modules/soke-ai-coach-director/scripts/gate_check.py +2 -0
  37. package/skills/mono/references/modules/soke-ai-coach-director/scripts/validate_operations.py +9 -2
  38. package/skills/mono/references/modules/soke-ai-training/MODULE.md +57 -7
  39. package/skills/mono/references/modules/soke-assign/MODULE.md +50 -11
  40. package/skills/mono/references/modules/soke-certificate/MODULE.md +47 -1
  41. package/skills/mono/references/modules/soke-course/CHANGELOG.md +93 -0
  42. package/skills/mono/references/modules/soke-course/MODULE.md +110 -352
  43. package/skills/mono/references/modules/soke-course/README.md +45 -291
  44. package/skills/mono/references/modules/soke-course/cli-facts.md +107 -0
  45. package/skills/mono/references/modules/soke-course/intent-cases.md +41 -0
  46. package/skills/mono/references/modules/soke-course/scripts/check_readiness.sh +45 -0
  47. package/skills/mono/references/modules/soke-course/sop-publish-check.md +46 -0
  48. package/skills/mono/references/modules/soke-course/subs/assign/SOP.md +40 -0
  49. package/skills/mono/references/modules/soke-course/subs/batch/SOP.md +96 -0
  50. package/skills/mono/references/modules/soke-course/{references/subs → subs}/category/SOP.md +18 -27
  51. package/skills/mono/references/modules/soke-course/subs/charge/SOP.md +22 -0
  52. package/skills/mono/references/modules/soke-course/subs/copy/SOP.md +35 -0
  53. package/skills/mono/references/modules/soke-course/subs/exam/SOP.md +39 -0
  54. package/skills/mono/references/modules/soke-course/subs/phase1-create/SOP.md +66 -0
  55. package/skills/mono/references/modules/soke-course/subs/phase2-lesson/SOP.md +34 -0
  56. package/skills/mono/references/modules/soke-course/subs/photo/SOP.md +26 -0
  57. package/skills/mono/references/modules/soke-course/subs/publish/SOP.md +26 -0
  58. package/skills/mono/references/modules/soke-course/subs/query/SOP.md +36 -0
  59. package/skills/mono/references/modules/soke-course/{references/subs → subs}/settings/SOP.md +3 -4
  60. package/skills/mono/references/modules/soke-course/subs/template/SOP.md +58 -0
  61. package/skills/mono/references/modules/soke-exam/MODULE.md +49 -1
  62. package/skills/mono/references/modules/soke-exam-question-pool/MODULE.md +45 -5
  63. package/skills/mono/references/modules/soke-learning-map/MODULE.md +51 -11
  64. package/skills/mono/references/modules/soke-learning-profile/MODULE.md +46 -3
  65. package/skills/mono/references/modules/soke-lesson/MODULE.md +34 -20
  66. package/skills/mono/references/modules/soke-material/MODULE.md +33 -19
  67. package/skills/mono/references/modules/soke-photo-gallery/MODULE.md +40 -20
  68. package/skills/mono/references/modules/soke-shared/MODULE.md +9 -0
  69. package/skills/mono/references/modules/soke-supervisor/MODULE.md +32 -1
  70. package/skills/mono/references/modules/soke-task/MODULE.md +48 -1
  71. package/skills/mono/references/modules/soke-training-demand/MODULE.md +38 -17
  72. package/skills/mono/references/shared/README.md +50 -0
  73. package/skills/mono/references/shared/async-task.md +30 -0
  74. package/skills/mono/references/shared/auth-check.md +57 -0
  75. package/skills/mono/references/shared/command-discovery.md +34 -0
  76. package/skills/mono/references/shared/environment-check.md +31 -0
  77. package/skills/mono/references/shared/error-handling.md +27 -0
  78. package/skills/mono/references/shared/file-input.md +31 -0
  79. package/skills/mono/references/shared/interaction.md +39 -0
  80. package/skills/mono/references/shared/object-context.md +51 -0
  81. package/skills/mono/references/shared/output-policy.md +39 -0
  82. package/skills/mono/references/shared/pagination.md +41 -0
  83. package/skills/mono/references/shared/rule-ownership.md +57 -0
  84. package/skills/mono/references/shared/state-machine.md +35 -0
  85. package/skills/mono/references/shared/write-guard.md +34 -0
  86. package/skills/mono/references/shared/write-verify.md +33 -0
  87. package/skills/mono/references/workflows/README.md +115 -0
  88. package/skills/mono/scripts/check_package.py +310 -0
  89. package/skills/mono/scripts/check_readiness.py +1 -1
  90. package/skills/mono/scripts/check_syntax.py +35 -0
  91. package/skills/mono/scripts/validate_operations.py +2 -2
  92. package/skills/mono//357/275/223/357/275/217/357/275/213/357/275/205/357/274/215/357/275/203/357/275/214/357/275/211/346/225/264/344/275/223/346/236/266/346/236/204.html +13 -0
  93. package/skills/multi/soke-ai-coach-director/README.md +3 -0
  94. package/skills/multi/soke-ai-coach-director/assets/LEARNINGS-TEMPLATE.md +1 -0
  95. package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part1-basic.md +1 -1
  96. package/skills/multi/soke-ai-coach-director/platform/publish-gate.md +1 -0
  97. package/skills/multi/soke-ai-coach-director/references/exec-handbook.md +5 -5
  98. package/skills/multi/soke-ai-coach-director/references/exec-part1.md +5 -5
  99. package/skills/multi/soke-ai-coach-director/references/platform-api-pitfalls.md +1 -1
  100. package/skills/multi/soke-ai-coach-director/references/self-improvement-examples.md +3 -0
  101. package/skills/multi/soke-ai-coach-director/references/self-learning-engine.md +4 -0
  102. package/skills/multi/soke-ai-coach-director/references/subs/part1/SOP.md +2 -2
  103. package/skills/multi/soke-ai-coach-director/scripts/activator.sh +4 -0
  104. package/skills/multi/soke-ai-coach-director/scripts/error-detector.sh +4 -0
  105. package/skills/multi/soke-ai-coach-director/scripts/extract-skill.sh +7 -0
  106. package/skills/multi/soke-ai-coach-director/scripts/gate_check.py +2 -0
  107. package/skills/multi/soke-ai-coach-director/scripts/validate_operations.py +9 -2
  108. package/skills/multi/soke-ai-training/SKILL.md +2 -0
  109. package/skills/multi/soke-course/.skill-metadata.yaml +40 -0
  110. package/skills/multi/soke-course/CHANGELOG.md +77 -0
  111. package/skills/multi/soke-course/README.md +27 -274
  112. package/skills/multi/soke-course/SKILL.md +135 -353
  113. package/skills/multi/soke-course/_user_meta.json +5 -0
  114. package/skills/multi/soke-course/agents/openai.yaml +1 -5
  115. package/skills/multi/soke-course/references/cli-facts.md +105 -0
  116. package/skills/multi/soke-course/references/examples.md +30 -454
  117. package/skills/multi/soke-course/references/intent-cases.md +65 -99
  118. package/skills/multi/soke-course/references/sop-full-workflow.md +81 -177
  119. package/skills/multi/soke-course/references/sop-lesson-types.md +21 -58
  120. package/skills/multi/soke-course/references/sop-publish-check.md +14 -71
  121. package/skills/multi/soke-course/references/subs/assign/SOP.md +37 -0
  122. package/skills/multi/soke-course/references/subs/category/SOP.md +18 -27
  123. package/skills/multi/soke-course/references/subs/exam/SOP.md +28 -0
  124. package/skills/multi/soke-course/references/subs/lesson/SOP.md +28 -0
  125. package/skills/multi/soke-course/references/subs/material/SOP.md +24 -0
  126. package/skills/multi/soke-course/references/subs/photo/SOP.md +23 -0
  127. package/skills/multi/soke-course/references/subs/publish/SOP.md +15 -157
  128. package/skills/multi/soke-course/references/subs/query/SOP.md +22 -151
  129. package/skills/multi/soke-course/references/subs/settings/SOP.md +3 -4
  130. package/skills/multi/soke-course/references/subs/template/SOP.md +37 -210
  131. package/skills/multi/soke-course/references/troubleshoot.md +37 -54
  132. package/skills/multi/soke-course/scripts/check_readiness.sh +45 -0
  133. package/skills/multi/soke-course/{references/installation.md → soke-cli-install-guide.md} +3 -0
  134. package/skills/mono/references/modules/soke-course/agents/openai.yaml +0 -7
  135. package/skills/mono/references/modules/soke-course/references/course-list-courses.md +0 -216
  136. package/skills/mono/references/modules/soke-course/references/examples.md +0 -480
  137. package/skills/mono/references/modules/soke-course/references/intent-cases.md +0 -99
  138. package/skills/mono/references/modules/soke-course/references/sop-full-workflow.md +0 -177
  139. package/skills/mono/references/modules/soke-course/references/sop-lesson-types.md +0 -66
  140. package/skills/mono/references/modules/soke-course/references/sop-publish-check.md +0 -76
  141. package/skills/mono/references/modules/soke-course/references/subs/ai/SOP.md +0 -153
  142. package/skills/mono/references/modules/soke-course/references/subs/charge/SOP.md +0 -107
  143. package/skills/mono/references/modules/soke-course/references/subs/copy/SOP.md +0 -80
  144. package/skills/mono/references/modules/soke-course/references/subs/publish/SOP.md +0 -168
  145. package/skills/mono/references/modules/soke-course/references/subs/query/SOP.md +0 -165
  146. package/skills/mono/references/modules/soke-course/references/subs/template/SOP.md +0 -223
  147. package/skills/mono/references/modules/soke-course/references/troubleshoot.md +0 -68
  148. package/skills/multi/soke-course/examples/create-basic.md +0 -70
  149. package/skills/multi/soke-course/references/course-list-courses.md +0 -216
  150. package/skills/multi/soke-course/references/dependencies/soke-assign.md +0 -103
  151. package/skills/multi/soke-course/references/dependencies/soke-lesson.md +0 -119
  152. package/skills/multi/soke-course/references/dependencies/soke-material.md +0 -105
  153. package/skills/multi/soke-course/references/shared.md +0 -185
  154. package/skills/multi/soke-course/references/subs/ai/SOP.md +0 -153
  155. package/skills/multi/soke-course/scripts/check_readiness.py +0 -87
  156. /package/skills/mono/references/{installation.md → shared/installation.md} +0 -0
@@ -0,0 +1,105 @@
1
+ # CLI 事实表(唯一事实源)
2
+
3
+ > 实测于 soke-cli v1.0.77(2026-08-29)。本表为所有命令参数的唯一事实源;子 SOP 只写用法示例,参数以本表为准。
4
+ > 兜底规则:本表未覆盖的命令 → 跑 `soke-cli <cmd> --help` 实测后补录本表。
5
+ > 通用:所有命令支持 `--format json`(结构化输出推荐);时间戳均为毫秒。
6
+ > 返回契约:以下“必取字段”是进入下一步的最低要求;实际响应可能包裹在 `data/list/items` 中,先定位字段再继续。未知字段或未知状态不得按成功推断,需保留原始 JSON 并执行 `--help`/实测确认。
7
+
8
+ ## course 组
9
+
10
+ ### +create 创建课程
11
+ `--title`(必填) `--category-id`(必填) `--description`
12
+ 返回最低字段:`course-id`、`title`、`status`。
13
+
14
+ ### +update 更新/关闭课程
15
+ `--course-id`(必填) `--title` `--credit` `--description` `--category-id`
16
+ `--image`(封面,**只收图片库 photoUri**) `--image-x/y/w/h`(裁剪)
17
+ `--action` = update(默认) | **close(关闭课程,CLI 支持!删除才需后台)**
18
+
19
+ ### +advanced 高级设置
20
+ `--course-id`(必填);`--study-type` 1自由/2解锁;`--is-accelerate` 倍速;`--is-drag`/`--drag-type` 拖动;
21
+ `--open-face-recognition` 课前人脸;`--is-first-face` 0不/1首次/2每次;`--learning-face-recognition`/`--face-recognition-times` 学习中人脸;
22
+ `--open-workrecord` 待办;`--allow-after-expiration` 截止后学习;`--is-remind`/`--remind-days`/`--remind-time`/`--remind-content` 未学提醒;
23
+ `--evaluate-required` 打星评价;`--is-hang`/`--hang-time`(≤60分) 文档防挂机;`--comment-switch` 评论;
24
+ `--image-file`(本地二维码图,内部传 OSS 不进图片库,jpg/jpeg/png) 与 `--image-oss-url` 二选一
25
+
26
+ ### +publish 发布
27
+ `--course-id`(必填) `--publish-time`("YYYY-MM-DD HH:MM:SS" 北京时间;默认 0000-00-00 00:00:00=立即)
28
+ 返回最低字段:`course-id`、`status`;定时发布另需回查 `publish-time`。
29
+
30
+ ### +get-course / +list-courses
31
+ get: `--course-id`
32
+ list: `--keyword` `--category-path`(分类筛选,**不是 --category-id**) `--status`(0/1/2,**默认1**) `--is-in`(0外部/1内部,默认1) `--is-my` `--is-joint` `--joint-out` `--page` `--page-size`(默认10)
33
+ **⚠️ 无 --start-time/--end-time(旧文档的时间范围/365天限制对本命令不成立)**
34
+
35
+ ### +list-categories
36
+ `--page` `--page-size`(max 100)。当前事实表未确认 `--parent-id`/`--level`,不得直接使用;如需末级分类,先按返回的 parent_id/level 递归查询或执行 --help 实测后补录。
37
+
38
+ ### +lesson-create 创建课件
39
+ `--course-id`(必填) `--title` `--type` video/audio/photo_gallery/document/exam
40
+ 非 exam:`--media-id`(素材UUID,**不是 --uuid**) `--filename` `--ext` `--filesize` `--object` `--length`(秒,**不是 --duration**)
41
+ exam:`--paper-id` 或 `--paper-title`(列表匹配) `--pool-id`(可选) `--minute`(默认30)/`--second`
42
+ 通用:`--point` `--sort`
43
+ 返回最低字段:`lesson-id`、`course-id`、`type`、`status`;非 exam 还需保留上传对象字段。
44
+
45
+ ### +lesson-list / +lesson-get / +lesson-sort
46
+ list: `--course-id` `--keyword` `--type`(video/audio/image/document/link/live/exam/questionnaire/sign_in) `--page` `--limit`(默认10,**不是 --page-size**)
47
+ get: `--id`(课件ID,**不是 --lesson-id**)
48
+ sort: `--course-id` `--sort-list`("id1,id2,...",**不是 --order**)
49
+
50
+ ### 学习数据查询
51
+ +list-course-users: `--course-id` `--finish-start-time`/`--finish-end-time`(**必传,跨度≤7天**,回归实测) `--userid-list`(逗号,≤100) `--page` `--page-size`
52
+ +get-course-user: `--course-id` `--dept-user-id`
53
+ +list-lesson-learns: `--lesson-id` `--course-id` `--userid-list` `--finish-start-time`/`--finish-end-time` `--page` `--page-size`
54
+ +list-lesson-faces: `--target-id`(=课件uuid,**不是 --lesson-id**) `--userid-list` `--page` `--page-size`(**无时间参数**)
55
+
56
+ ## file 组(素材库)
57
+
58
+ +upload: `--file`(本地路径,**不是 --path**;不支持图片) `--type`(默认自动检测) `--length`(默认视频600/音频300/**文档120**) `--category-id` `--module`(默认material) `--object-name` `--storage`
59
+ 返回最低字段:`uuid`、`filename`、`type`、`ext`、`filesize`、`object`、`length`;图片不得使用此命令。
60
+ list-files: **无 + 前缀** → `soke-cli file list-files --page --page-size`
61
+ get-info: **无 + 前缀** → `soke-cli file get-info --file-id`
62
+ +create: 创建素材库文件(已有 OSS 对象时)
63
+
64
+ ## assign 组(指派)
65
+
66
+ +list-departments: `--keyword` `--parent-id`(默认"1"=仅顶级,**全树需递归**) `--page` `--limit`
67
+ +list-users: `--dept-id` `--keyword` `--search-target`(name/phone/job_number) `--list-all` `--is-in` `--page` `--limit`
68
+ +create: `--module`(course/exam/learning_map) `--target-id`(**不是 --module-id**) `--learn-type` **required/optional(不是 --compulsory 1|0)** `--user-ids` `--user-names`(对应) `--dept-ids` `--dept-names` `--date` `--set-message`/`--message-switch`/`--message-content`
69
+ 返回最低字段:`target-id`、目标类型、实际指派数量和已存在/新增/失败明细。
70
+ +list: `--module` `--target-id` `--keyword` `--learn-type` `--page` `--limit`
71
+
72
+ ## photo-gallery 组(图片库)
73
+
74
+ +create: `--file`(本地图片) `--title` `--category-id`(默认empty) → 返回 uuid/photoUri
75
+ +list: `--file-keyword` `--category-id` `--from` `--page` `--limit`
76
+ +get: `--uuid`(含完整访问 URL)
77
+
78
+ ## exam 最小建题链(subs/exam 专用)
79
+
80
+ +create-pool: `--title` `--path`('["分类uuid"]') `--description` `--status`
81
+ +create-question: `--pool-id` `--type`(single_choice/choice/uncertain_choice/determine/fill/essay/material) `--title`(fill 用 `[[答案N]]`,**不传 --answer**) `--score`(>0) `--difficulty`(simple/medium/hard) `--choices`('[{"key":"A1","value":"A"}]') `--answer`(选择/判断为索引数组) `--answer-type`(fill) `--analysis`
82
+ +create-paper: `--title`(≤50) `--pool-id`('["pool_uuid"]') `--pattern`(questionType/random/selection/import) `--type-metas`(JSON: {"single_choice":{"count":N,"score":N},...})
83
+ +update-paper: `--paper-id` `--title`(**publish 必重传**) `--action publish`
84
+
85
+ ## clock 组(作业查询,只读;**--page/--page-size 强制必传**)
86
+
87
+ list-learnings: `--target-id`(课程ID) `--start-time`/`--end-time`(毫秒) `--page` `--page-size`
88
+ list-logs: `--clock-id`(来自 list-learnings) `--start-time`/`--end-time` `--page` `--page-size`
89
+ list-log-lessons: `--target-id`(提交ID,来自 list-logs) `--page` `--page-size`
90
+
91
+ ## 漂移修正表(旧文档 → 实际)
92
+
93
+ | 旧 | 实际 |
94
+ |----|------|
95
+ | file +upload --path | --file |
96
+ | file +list-files / +get-info | 无 + 前缀 |
97
+ | lesson-create --uuid / --duration | --media-id / --length |
98
+ | lesson-get --lesson-id | --id |
99
+ | lesson-sort --order | --sort-list |
100
+ | lesson-list --page-size | --limit |
101
+ | list-courses --start-time/--end-time/--category-id | 不存在;用 --keyword/--category-path |
102
+ | list-lesson-faces --lesson-id + 时间范围 | --target-id,无时间参数 |
103
+ | assign --module-id / --compulsory 1\|0 | --target-id / --learn-type required\|optional |
104
+ | 关闭课程仅后台 | +update --action close |
105
+ | 文档默认时长 0s | 120s |
@@ -1,480 +1,56 @@
1
- # 课程查询使用示例
1
+ # 使用示例(v6.39.0,命令已实测)
2
2
 
3
- 本文档提供了使用 `soke-course` skill 的实际示例。
3
+ ## 示例 1:一条消息收集 + 创建 + 发布
4
4
 
5
- ## 示例1: 查询本月的课程
6
-
7
- ### 需求
8
- 查询2024年5月创建的所有已发布课程。
9
-
10
- ### 步骤
11
-
12
- **1. 计算时间戳**
13
-
14
- ```javascript
15
- // 2024年5月1日 00:00:00
16
- const startTime = new Date('2024-05-01 00:00:00').getTime();
17
- console.log(startTime); // 1714492800000
18
-
19
- // 2024年5月31日 23:59:59
20
- const endTime = new Date('2024-05-31 23:59:59').getTime();
21
- console.log(endTime); // 1717171199000
22
5
  ```
6
+ 主管: **请输入你要上传的课程标题**
7
+ | A | 来源 | A1 本地上传 / A2 素材库选择
8
+ | B | 分类 | B1 外部课程 … B8 产品迭代
9
+ | C | 模板 | C1 合规必修 … C7 不选择模板
10
+ > 请直接提供课程标题、课件来源、分类和模板;本地上传时同时提供文件路径。
23
11
 
24
- **2. 执行查询**
12
+ 用户: Python入门 A1B3C3 + demo.mp4
25
13
 
26
- ```bash
27
- soke-cli course +list-courses \
28
- --start-time 1714492800000 \
29
- --end-time 1717171199000 \
30
- --status 1
31
- ```
14
+ 主管: ✅ 课程已创建 (id: course_xxx) | 模板: 新人入职
15
+ 上传 demo.mp4 → 课件已创建(视频 · 转码中)
16
+ 加小测验吗?回复 D1 加 / D2 不加
32
17
 
33
- **3. 预期输出**
18
+ 用户: D2
34
19
 
35
- ```
36
- uuid title category_id status lesson_num create_time
37
- ------------------------------------ ----------------- ----------- ------ ---------- -------------
38
- abc123-def456-ghi789 Go语言入门 cat001 1 20 1714492800000
39
- xyz789-uvw456-rst123 Python基础教程 cat002 1 15 1714579200000
40
- ```
20
+ 主管: ✅ Gate Check 6 项通过
21
+ 指派课程并发布吗?回复 G1 指派 / G2 不指派;E1 发布 / E2 不发布
41
22
 
42
- ---
23
+ 用户: G1,E1
43
24
 
44
- ## 示例2: 统计课程完成率
45
-
46
- ### 需求
47
- 统计某个课程的学习完成情况,包括完成人数、平均进度等。
48
-
49
- ### 步骤
50
-
51
- **1. 获取课程学习记录**
52
-
53
- ```bash
54
- soke-cli course +list-course-users \
55
- --course-id "abc123-def456-ghi789" \
56
- --page-size 100
25
+ 主管: 已指派 → ✅ 已发布(status=1)
57
26
  ```
58
27
 
59
- **2. 分析返回数据**
28
+ ## 示例 2:素材库 + 小测验(引用试卷)
60
29
 
61
- 假设返回数据如下:
62
-
63
- ```json
64
- {
65
- "data": {
66
- "list": [
67
- {
68
- "dept_user_id": "user001",
69
- "dept_user_name": "张三",
70
- "study_progress": 100,
71
- "finish_status": 1,
72
- "study_duration": 7200
73
- },
74
- {
75
- "dept_user_id": "user002",
76
- "dept_user_name": "李四",
77
- "study_progress": 50,
78
- "finish_status": 0,
79
- "study_duration": 3600
80
- },
81
- {
82
- "dept_user_id": "user003",
83
- "dept_user_name": "王五",
84
- "study_progress": 100,
85
- "finish_status": 1,
86
- "study_duration": 6800
87
- }
88
- ]
89
- }
90
- }
91
30
  ```
31
+ 用户: A2B4C5,搜索 销售
92
32
 
93
- **3. 计算统计数据**
94
-
95
- ```javascript
96
- const data = response.data.list;
97
-
98
- // 总人数
99
- const totalUsers = data.length; // 3
33
+ 主管: 📚 匹配: 11 3231销售连带提升课件.pdf | 16 授客学堂价格表.xlsx …回复编号
100
34
 
101
- // 完成人数
102
- const completedUsers = data.filter(u => u.finish_status === 1).length; // 2
35
+ 用户: 11,D1,H1,试卷叫"安全卷一"
103
36
 
104
- // 完成率
105
- const completionRate = (completedUsers / totalUsers * 100).toFixed(2); // 66.67%
106
-
107
- // 平均进度
108
- const avgProgress = (data.reduce((sum, u) => sum + u.study_progress, 0) / totalUsers).toFixed(2); // 83.33%
109
-
110
- // 平均学习时长(小时)
111
- const avgDuration = (data.reduce((sum, u) => sum + u.study_duration, 0) / totalUsers / 3600).toFixed(2); // 1.62小时
112
-
113
- console.log(`总人数: ${totalUsers}`);
114
- console.log(`完成人数: ${completedUsers}`);
115
- console.log(`完成率: ${completionRate}%`);
116
- console.log(`平均进度: ${avgProgress}%`);
117
- console.log(`平均学习时长: ${avgDuration}小时`);
37
+ 主管: ✅ 课件已创建(文档)
38
+ 小测验已挂载(--paper-title 安全卷一 · 30 分)
39
+ 指派课程并发布吗?回复 G1 指派 / G2 不指派;E1 发布 / E2 不发布
118
40
  ```
119
41
 
120
- ---
121
-
122
- ## 示例3: 查询用户的学习情况
42
+ ## 示例 3:查进度 + 关闭
123
43
 
124
- ### 需求
125
- 查询"张三"在某个课程的学习情况。
126
-
127
- ### 步骤
128
-
129
- **1. 查询用户ID**
130
-
131
- ```bash
132
- soke-cli contact +search-user --name "张三"
133
44
  ```
45
+ 用户: 看看谁学完了
134
46
 
135
- 假设返回:
136
- ```json
137
- {
138
- "data": {
139
- "dept_user_id": "user001",
140
- "dept_user_name": "张三"
141
- }
142
- }
143
- ```
47
+ 主管: 📊 Python入门 — 完成 2/3(张三 100% / 王五 100% / 李四 50%)
144
48
 
145
- **2. 查询课程学习记录**
49
+ 用户: 这门课下线吧
146
50
 
147
- ```bash
148
- soke-cli course +get-course-user \
149
- --course-id "abc123-def456-ghi789" \
150
- --dept-user-id "user001"
151
- ```
51
+ 主管: ⚠️ 关闭后学员不可见,可重新发布。回复「确认关闭」执行
152
52
 
153
- **3. 预期输出**
53
+ 用户: 确认关闭
154
54
 
155
- ```json
156
- {
157
- "data": {
158
- "target_id": "record001",
159
- "dept_user_id": "user001",
160
- "dept_user_name": "张三",
161
- "study_progress": 100,
162
- "finish_status": 1,
163
- "study_duration": 7200,
164
- "create_time": 1714492800000,
165
- "update_time": 1714579200000
166
- }
167
- }
55
+ 主管: ✅ 已关闭(status=2)
168
56
  ```
169
-
170
- **4. 解读结果**
171
-
172
- - 学习进度: 100%(已完成)
173
- - 完成状态: 1(已完成)
174
- - 学习时长: 7200秒(2小时)
175
- - 开始时间: 2024-05-01
176
- - 最后更新: 2024-05-02
177
-
178
- ---
179
-
180
- ## 示例4: 查询课程的课件学习详情
181
-
182
- ### 需求
183
- 查询某个课程的所有课件,并统计每个课件的学习情况。
184
-
185
- ### 步骤
186
-
187
- **1. 获取课程课件列表**
188
-
189
- ```bash
190
- soke-cli course +list-lessons \
191
- --course-id "abc123-def456-ghi789"
192
- ```
193
-
194
- **2. 预期输出**
195
-
196
- ```json
197
- {
198
- "data": {
199
- "list": [
200
- {
201
- "uuid": "lesson001",
202
- "title": "第1课:Go语言简介",
203
- "type": "video",
204
- "duration": 1800,
205
- "sort": 1
206
- },
207
- {
208
- "uuid": "lesson002",
209
- "title": "第2课:环境搭建",
210
- "type": "video",
211
- "duration": 2400,
212
- "sort": 2
213
- }
214
- ]
215
- }
216
- }
217
- ```
218
-
219
- **3. 查询每个课件的学习记录**
220
-
221
- ```bash
222
- # 查询第1课的学习记录
223
- soke-cli course +list-lesson-learns --lesson-id "lesson001"
224
-
225
- # 查询第2课的学习记录
226
- soke-cli course +list-lesson-learns --lesson-id "lesson002"
227
- ```
228
-
229
- **4. 统计分析**
230
-
231
- ```javascript
232
- // 假设lesson001有50人学习,40人完成
233
- // 假设lesson002有50人学习,30人完成
234
-
235
- const lessonStats = [
236
- { title: "第1课:Go语言简介", total: 50, completed: 40, rate: "80%" },
237
- { title: "第2课:环境搭建", total: 50, completed: 30, rate: "60%" }
238
- ];
239
-
240
- console.table(lessonStats);
241
- ```
242
-
243
- ---
244
-
245
- ## 示例5: 按分类查询课程
246
-
247
- ### 需求
248
- 查询"技术培训"分类下的所有已发布课程。
249
-
250
- ### 步骤
251
-
252
- **1. 获取课程分类列表**
253
-
254
- ```bash
255
- soke-cli course +list-categories
256
- ```
257
-
258
- **2. 找到目标分类**
259
-
260
- 假设返回:
261
- ```json
262
- {
263
- "data": {
264
- "list": [
265
- {
266
- "uuid": "cat001",
267
- "title": "技术培训",
268
- "parent_id": "0"
269
- },
270
- {
271
- "uuid": "cat002",
272
- "title": "管理培训",
273
- "parent_id": "0"
274
- }
275
- ]
276
- }
277
- }
278
- ```
279
-
280
- **3. 查询该分类下的课程**
281
-
282
- ```bash
283
- soke-cli course +list-courses \
284
- --start-time 1704038400000 \
285
- --end-time 1735660799000 \
286
- --category-id "cat001" \
287
- --status 1
288
- ```
289
-
290
- ---
291
-
292
- ## 示例6: 查询人脸识别记录
293
-
294
- ### 需求
295
- 查询某个课件的人脸识别记录,确保学员本人学习。
296
-
297
- ### 步骤
298
-
299
- **1. 查询课件的人脸识别记录**
300
-
301
- ```bash
302
- soke-cli course +list-lesson-faces \
303
- --lesson-id "lesson001" \
304
- --start-time 1714492800000 \
305
- --end-time 1717171199000
306
- ```
307
-
308
- **2. 预期输出**
309
-
310
- ```json
311
- {
312
- "data": {
313
- "list": [
314
- {
315
- "uuid": "face001",
316
- "dept_user_id": "user001",
317
- "dept_user_name": "张三",
318
- "face_status": 1,
319
- "face_time": 1714492800000
320
- },
321
- {
322
- "uuid": "face002",
323
- "dept_user_id": "user002",
324
- "dept_user_name": "李四",
325
- "face_status": 2,
326
- "face_time": 1714493400000
327
- }
328
- ]
329
- }
330
- }
331
- ```
332
-
333
- **3. 分析识别结果**
334
-
335
- - `face_status = 1`: 识别成功(张三)
336
- - `face_status = 2`: 识别失败(李四)
337
-
338
- ---
339
-
340
- ## 示例7: 批量查询多个用户的学习记录
341
-
342
- ### 需求
343
- 查询多个用户在某个课程的学习情况。
344
-
345
- ### 步骤
346
-
347
- **1. 准备用户ID列表**
348
-
349
- ```bash
350
- # 用户ID列表(逗号分隔,最多100个)
351
- USER_IDS="user001,user002,user003,user004,user005"
352
- ```
353
-
354
- **2. 批量查询**
355
-
356
- ```bash
357
- soke-cli course +list-course-users \
358
- --course-id "abc123-def456-ghi789" \
359
- --userid-list "$USER_IDS"
360
- ```
361
-
362
- **3. 预期输出**
363
-
364
- ```json
365
- {
366
- "data": {
367
- "list": [
368
- {
369
- "dept_user_id": "user001",
370
- "dept_user_name": "张三",
371
- "study_progress": 100,
372
- "finish_status": 1
373
- },
374
- {
375
- "dept_user_id": "user002",
376
- "dept_user_name": "李四",
377
- "study_progress": 50,
378
- "finish_status": 0
379
- }
380
- // ... 其他用户
381
- ]
382
- }
383
- }
384
- ```
385
-
386
- ---
387
-
388
- ## 示例8: 查询某个时间段完成的学习记录
389
-
390
- ### 需求
391
- 查询2024年5月完成课程学习的所有用户。
392
-
393
- ### 步骤
394
-
395
- **1. 计算时间范围**
396
-
397
- ```javascript
398
- const finishStartTime = new Date('2024-05-01 00:00:00').getTime(); // 1714492800000
399
- const finishEndTime = new Date('2024-05-31 23:59:59').getTime(); // 1717171199000
400
- ```
401
-
402
- **2. 查询完成记录**
403
-
404
- ```bash
405
- soke-cli course +list-course-users \
406
- --course-id "abc123-def456-ghi789" \
407
- --finish-start-time 1714492800000 \
408
- --finish-end-time 1717171199000
409
- ```
410
-
411
- **3. 筛选已完成的记录**
412
-
413
- ```javascript
414
- const data = response.data.list;
415
- const completedUsers = data.filter(u => u.finish_status === 1);
416
-
417
- console.log(`5月完成学习的用户数: ${completedUsers.length}`);
418
- completedUsers.forEach(u => {
419
- console.log(`- ${u.dept_user_name}: ${u.study_progress}%`);
420
- });
421
- ```
422
-
423
- ---
424
-
425
- ## 常用脚本
426
-
427
- ### 脚本1: 课程完成率统计脚本
428
-
429
- ```bash
430
- #!/bin/bash
431
-
432
- COURSE_ID="abc123-def456-ghi789"
433
-
434
- # 获取学习记录
435
- RESULT=$(soke-cli course +list-course-users --course-id "$COURSE_ID" --page-size 100)
436
-
437
- # 使用jq解析JSON(需要安装jq)
438
- TOTAL=$(echo "$RESULT" | jq '.data.list | length')
439
- COMPLETED=$(echo "$RESULT" | jq '[.data.list[] | select(.finish_status == 1)] | length')
440
- RATE=$(echo "scale=2; $COMPLETED * 100 / $TOTAL" | bc)
441
-
442
- echo "课程ID: $COURSE_ID"
443
- echo "总人数: $TOTAL"
444
- echo "完成人数: $COMPLETED"
445
- echo "完成率: $RATE%"
446
- ```
447
-
448
- ### 脚本2: 批量导出课程数据
449
-
450
- ```bash
451
- #!/bin/bash
452
-
453
- START_TIME=1704038400000
454
- END_TIME=1735660799000
455
- OUTPUT_FILE="courses.json"
456
-
457
- # 导出所有课程
458
- soke-cli course +list-courses \
459
- --start-time "$START_TIME" \
460
- --end-time "$END_TIME" \
461
- --page-size 100 > "$OUTPUT_FILE"
462
-
463
- echo "课程数据已导出到: $OUTPUT_FILE"
464
- ```
465
-
466
- ---
467
-
468
- ## 注意事项
469
-
470
- 1. **时间戳格式**: 所有时间参数必须使用毫秒级Unix时间戳
471
- 2. **分页处理**: 如果数据量大,需要循环分页查询
472
- 3. **权限检查**: 确保已完成认证并有相应权限
473
- 4. **错误处理**: 建议在脚本中添加错误处理逻辑
474
- 5. **API限流**: 注意API调用频率限制
475
-
476
- ## 相关资源
477
-
478
- - [SKILL.md](../SKILL.md) - 完整文档
479
- - [README.md](../README.md) - 快速开始
480
- - [course-list-courses.md](./course-list-courses.md) - 详细参考