@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.
- package/package.json +1 -1
- package/scripts/install.js +8 -0
- package/scripts/run.js +3 -2
- package/skills/mono/.workbuddy/memory/2026-09-01.md +2 -0
- package/skills/mono/.workbuddy/memory/MEMORY.md +4 -0
- package/skills/mono/ARCHITECTURE_AND_EXTENSION_GUIDE.md +572 -0
- package/skills/mono/README.md +2 -0
- package/skills/mono/SKILL.md +125 -119
- package/skills/mono/SKILL_MD_/344/274/230/345/214/226/346/226/271/346/241/210.md +478 -0
- package/skills/mono/references/modules/README.md +74 -0
- package/skills/mono/references/modules/soke-ai-coach-director/CHANGELOG.md +1 -1
- package/skills/mono/references/modules/soke-ai-coach-director/MODULE.md +12 -0
- package/skills/mono/references/modules/soke-ai-coach-director/README.md +4 -1
- package/skills/mono/references/modules/soke-ai-coach-director/coaching/prompt-engineer/parts/part1-basic.md +1 -1
- package/skills/mono/references/modules/soke-ai-coach-director/coaching/prompt-optimizer/prompt-optimizer.md +3 -3
- package/skills/mono/references/modules/soke-ai-coach-director/platform/adapters/README.md +4 -2
- package/skills/mono/references/modules/soke-ai-coach-director/platform/adapters/qclaw.md +3 -1
- package/skills/mono/references/modules/soke-ai-coach-director/platform/adapters/{wukong.md → qwen.md} +18 -18
- package/skills/mono/references/modules/soke-ai-coach-director/platform/adapters/workbuddy.md +1 -1
- package/skills/mono/references/modules/soke-ai-coach-director/platform/api-fallback.md +1 -1
- package/skills/mono/references/modules/soke-ai-coach-director/platform/interaction.md +1 -1
- package/skills/mono/references/modules/soke-ai-coach-director/platform/platform-support-matrix.md +28 -0
- package/skills/mono/references/modules/soke-ai-coach-director/platform/publish-gate.md +1 -0
- package/skills/mono/references/modules/soke-ai-coach-director/platform/soke-ai-training/soke-ai-training.md +5 -3
- package/skills/mono/references/modules/soke-ai-coach-director/platform/sync-engine.md +2 -2
- package/skills/mono/references/modules/soke-ai-coach-director/references/env-check.md +3 -0
- package/skills/mono/references/modules/soke-ai-coach-director/references/exec-handbook.md +7 -7
- package/skills/mono/references/modules/soke-ai-coach-director/references/exec-part1.md +5 -5
- package/skills/mono/references/modules/soke-ai-coach-director/references/platform-api-pitfalls.md +1 -1
- package/skills/mono/references/modules/soke-ai-coach-director/references/self-learning-engine.md +4 -0
- package/skills/mono/references/modules/soke-ai-coach-director/references/subs/part1/SOP.md +2 -2
- package/skills/mono/references/modules/soke-ai-coach-director/references/subs/publish/SOP.md +3 -3
- package/skills/mono/references/modules/soke-ai-coach-director/scripts/activator.sh +4 -0
- package/skills/mono/references/modules/soke-ai-coach-director/scripts/error-detector.sh +4 -0
- package/skills/mono/references/modules/soke-ai-coach-director/scripts/extract-skill.sh +7 -0
- package/skills/mono/references/modules/soke-ai-coach-director/scripts/gate_check.py +2 -0
- package/skills/mono/references/modules/soke-ai-coach-director/scripts/validate_operations.py +9 -2
- package/skills/mono/references/modules/soke-ai-training/MODULE.md +57 -7
- package/skills/mono/references/modules/soke-assign/MODULE.md +50 -11
- package/skills/mono/references/modules/soke-certificate/MODULE.md +47 -1
- package/skills/mono/references/modules/soke-course/CHANGELOG.md +93 -0
- package/skills/mono/references/modules/soke-course/MODULE.md +110 -352
- package/skills/mono/references/modules/soke-course/README.md +45 -291
- package/skills/mono/references/modules/soke-course/cli-facts.md +107 -0
- package/skills/mono/references/modules/soke-course/intent-cases.md +41 -0
- package/skills/mono/references/modules/soke-course/scripts/check_readiness.sh +45 -0
- package/skills/mono/references/modules/soke-course/sop-publish-check.md +46 -0
- package/skills/mono/references/modules/soke-course/subs/assign/SOP.md +40 -0
- package/skills/mono/references/modules/soke-course/subs/batch/SOP.md +96 -0
- package/skills/mono/references/modules/soke-course/{references/subs → subs}/category/SOP.md +18 -27
- package/skills/mono/references/modules/soke-course/subs/charge/SOP.md +22 -0
- package/skills/mono/references/modules/soke-course/subs/copy/SOP.md +35 -0
- package/skills/mono/references/modules/soke-course/subs/exam/SOP.md +39 -0
- package/skills/mono/references/modules/soke-course/subs/phase1-create/SOP.md +66 -0
- package/skills/mono/references/modules/soke-course/subs/phase2-lesson/SOP.md +34 -0
- package/skills/mono/references/modules/soke-course/subs/photo/SOP.md +26 -0
- package/skills/mono/references/modules/soke-course/subs/publish/SOP.md +26 -0
- package/skills/mono/references/modules/soke-course/subs/query/SOP.md +36 -0
- package/skills/mono/references/modules/soke-course/{references/subs → subs}/settings/SOP.md +3 -4
- package/skills/mono/references/modules/soke-course/subs/template/SOP.md +58 -0
- package/skills/mono/references/modules/soke-exam/MODULE.md +49 -1
- package/skills/mono/references/modules/soke-exam-question-pool/MODULE.md +45 -5
- package/skills/mono/references/modules/soke-learning-map/MODULE.md +51 -11
- package/skills/mono/references/modules/soke-learning-profile/MODULE.md +46 -3
- package/skills/mono/references/modules/soke-lesson/MODULE.md +34 -20
- package/skills/mono/references/modules/soke-material/MODULE.md +33 -19
- package/skills/mono/references/modules/soke-photo-gallery/MODULE.md +40 -20
- package/skills/mono/references/modules/soke-shared/MODULE.md +9 -0
- package/skills/mono/references/modules/soke-supervisor/MODULE.md +32 -1
- package/skills/mono/references/modules/soke-task/MODULE.md +48 -1
- package/skills/mono/references/modules/soke-training-demand/MODULE.md +38 -17
- package/skills/mono/references/shared/README.md +50 -0
- package/skills/mono/references/shared/async-task.md +30 -0
- package/skills/mono/references/shared/auth-check.md +57 -0
- package/skills/mono/references/shared/command-discovery.md +34 -0
- package/skills/mono/references/shared/environment-check.md +31 -0
- package/skills/mono/references/shared/error-handling.md +27 -0
- package/skills/mono/references/shared/file-input.md +31 -0
- package/skills/mono/references/shared/interaction.md +39 -0
- package/skills/mono/references/shared/object-context.md +51 -0
- package/skills/mono/references/shared/output-policy.md +39 -0
- package/skills/mono/references/shared/pagination.md +41 -0
- package/skills/mono/references/shared/rule-ownership.md +57 -0
- package/skills/mono/references/shared/state-machine.md +35 -0
- package/skills/mono/references/shared/write-guard.md +34 -0
- package/skills/mono/references/shared/write-verify.md +33 -0
- package/skills/mono/references/workflows/README.md +115 -0
- package/skills/mono/scripts/check_package.py +310 -0
- package/skills/mono/scripts/check_readiness.py +1 -1
- package/skills/mono/scripts/check_syntax.py +35 -0
- package/skills/mono/scripts/validate_operations.py +2 -2
- 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
- package/skills/multi/soke-ai-coach-director/README.md +3 -0
- package/skills/multi/soke-ai-coach-director/assets/LEARNINGS-TEMPLATE.md +1 -0
- package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part1-basic.md +1 -1
- package/skills/multi/soke-ai-coach-director/platform/publish-gate.md +1 -0
- package/skills/multi/soke-ai-coach-director/references/exec-handbook.md +5 -5
- package/skills/multi/soke-ai-coach-director/references/exec-part1.md +5 -5
- package/skills/multi/soke-ai-coach-director/references/platform-api-pitfalls.md +1 -1
- package/skills/multi/soke-ai-coach-director/references/self-improvement-examples.md +3 -0
- package/skills/multi/soke-ai-coach-director/references/self-learning-engine.md +4 -0
- package/skills/multi/soke-ai-coach-director/references/subs/part1/SOP.md +2 -2
- package/skills/multi/soke-ai-coach-director/scripts/activator.sh +4 -0
- package/skills/multi/soke-ai-coach-director/scripts/error-detector.sh +4 -0
- package/skills/multi/soke-ai-coach-director/scripts/extract-skill.sh +7 -0
- package/skills/multi/soke-ai-coach-director/scripts/gate_check.py +2 -0
- package/skills/multi/soke-ai-coach-director/scripts/validate_operations.py +9 -2
- package/skills/multi/soke-ai-training/SKILL.md +2 -0
- package/skills/multi/soke-course/.skill-metadata.yaml +40 -0
- package/skills/multi/soke-course/CHANGELOG.md +77 -0
- package/skills/multi/soke-course/README.md +27 -274
- package/skills/multi/soke-course/SKILL.md +135 -353
- package/skills/multi/soke-course/_user_meta.json +5 -0
- package/skills/multi/soke-course/agents/openai.yaml +1 -5
- package/skills/multi/soke-course/references/cli-facts.md +105 -0
- package/skills/multi/soke-course/references/examples.md +30 -454
- package/skills/multi/soke-course/references/intent-cases.md +65 -99
- package/skills/multi/soke-course/references/sop-full-workflow.md +81 -177
- package/skills/multi/soke-course/references/sop-lesson-types.md +21 -58
- package/skills/multi/soke-course/references/sop-publish-check.md +14 -71
- package/skills/multi/soke-course/references/subs/assign/SOP.md +37 -0
- package/skills/multi/soke-course/references/subs/category/SOP.md +18 -27
- package/skills/multi/soke-course/references/subs/exam/SOP.md +28 -0
- package/skills/multi/soke-course/references/subs/lesson/SOP.md +28 -0
- package/skills/multi/soke-course/references/subs/material/SOP.md +24 -0
- package/skills/multi/soke-course/references/subs/photo/SOP.md +23 -0
- package/skills/multi/soke-course/references/subs/publish/SOP.md +15 -157
- package/skills/multi/soke-course/references/subs/query/SOP.md +22 -151
- package/skills/multi/soke-course/references/subs/settings/SOP.md +3 -4
- package/skills/multi/soke-course/references/subs/template/SOP.md +37 -210
- package/skills/multi/soke-course/references/troubleshoot.md +37 -54
- package/skills/multi/soke-course/scripts/check_readiness.sh +45 -0
- package/skills/multi/soke-course/{references/installation.md → soke-cli-install-guide.md} +3 -0
- package/skills/mono/references/modules/soke-course/agents/openai.yaml +0 -7
- package/skills/mono/references/modules/soke-course/references/course-list-courses.md +0 -216
- package/skills/mono/references/modules/soke-course/references/examples.md +0 -480
- package/skills/mono/references/modules/soke-course/references/intent-cases.md +0 -99
- package/skills/mono/references/modules/soke-course/references/sop-full-workflow.md +0 -177
- package/skills/mono/references/modules/soke-course/references/sop-lesson-types.md +0 -66
- package/skills/mono/references/modules/soke-course/references/sop-publish-check.md +0 -76
- package/skills/mono/references/modules/soke-course/references/subs/ai/SOP.md +0 -153
- package/skills/mono/references/modules/soke-course/references/subs/charge/SOP.md +0 -107
- package/skills/mono/references/modules/soke-course/references/subs/copy/SOP.md +0 -80
- package/skills/mono/references/modules/soke-course/references/subs/publish/SOP.md +0 -168
- package/skills/mono/references/modules/soke-course/references/subs/query/SOP.md +0 -165
- package/skills/mono/references/modules/soke-course/references/subs/template/SOP.md +0 -223
- package/skills/mono/references/modules/soke-course/references/troubleshoot.md +0 -68
- package/skills/multi/soke-course/examples/create-basic.md +0 -70
- package/skills/multi/soke-course/references/course-list-courses.md +0 -216
- package/skills/multi/soke-course/references/dependencies/soke-assign.md +0 -103
- package/skills/multi/soke-course/references/dependencies/soke-lesson.md +0 -119
- package/skills/multi/soke-course/references/dependencies/soke-material.md +0 -105
- package/skills/multi/soke-course/references/shared.md +0 -185
- package/skills/multi/soke-course/references/subs/ai/SOP.md +0 -153
- package/skills/multi/soke-course/scripts/check_readiness.py +0 -87
- /package/skills/mono/references/{installation.md → shared/installation.md} +0 -0
|
@@ -1,99 +1,65 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
## create
|
|
4
|
-
|
|
5
|
-
|
|
|
6
|
-
|
|
7
|
-
|
|
|
8
|
-
|
|
|
9
|
-
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
|
16
|
-
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
23
|
-
## settings
|
|
24
|
-
|
|
25
|
-
|
|
|
26
|
-
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
|
55
|
-
|
|
56
|
-
|
|
|
57
|
-
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
| 30 | "设为选修课" | compulsory=0 | Phase 5 |
|
|
67
|
-
|
|
68
|
-
## query(查询)
|
|
69
|
-
|
|
70
|
-
| # | 用户输入 | 提取 | 路由 |
|
|
71
|
-
|---|---------|------|------|
|
|
72
|
-
| 31 | "看看学习进度" | progress | Phase 6 |
|
|
73
|
-
| 32 | "谁学完了" | completed | Phase 6 |
|
|
74
|
-
| 33 | "完成率多少" | completion_rate | Phase 6 |
|
|
75
|
-
| 34 | "张三学到哪了" | user=张三 | Phase 6 |
|
|
76
|
-
|
|
77
|
-
## maintain(维护)
|
|
78
|
-
|
|
79
|
-
| # | 用户输入 | 提取 | 路由 |
|
|
80
|
-
|---|---------|------|------|
|
|
81
|
-
| 35 | "关闭这门课" | close | Phase 6(course +update --action close) |
|
|
82
|
-
| 36 | "删除课程" | delete | Phase 6(先查 status,仅 0/2 可删) |
|
|
83
|
-
| 37 | "复制这门课,叫 V2.0" | copy, title=V2.0 | Phase 6(⚠️ 不支持) |
|
|
84
|
-
| 38 | "批量发布这几门" | batch, publish | Phase 6(⚠️ 不支持) |
|
|
85
|
-
|
|
86
|
-
## 歧义消解案例
|
|
87
|
-
|
|
88
|
-
| # | 用户输入 | 情况 | 处理 |
|
|
89
|
-
|---|---------|------|------|
|
|
90
|
-
| 39 | "上传一下" | 没有课程上下文,没有附件 | 询问: 你要上传课件到哪门课?还是先创建新课程? |
|
|
91
|
-
| 40 | "帮我看看" | 没有课程上下文 | 列课程列表让用户选 |
|
|
92
|
-
| 41 | "设置一下" | 有 course-id 但不清楚要设什么 | 列设置选项:基础设置/高级设置/收费设置 |
|
|
93
|
-
|
|
94
|
-
## 关键提取规则
|
|
95
|
-
|
|
96
|
-
1. **有 course-id 上下文** → 在当前课程操作,不创建新课程
|
|
97
|
-
2. **有文件附件** → 倾向课件上传意图
|
|
98
|
-
3. **无 course-id + 无附件 + 无明确操作** → 列出课程让用户选
|
|
99
|
-
4. **创建词 + 无 course-id** → 走 Phase 1 全流程
|
|
1
|
+
# 意图识别案例库(v6)
|
|
2
|
+
|
|
3
|
+
## create
|
|
4
|
+
|
|
5
|
+
| 用户输入 | 提取 | 路由 |
|
|
6
|
+
|---------|------|------|
|
|
7
|
+
| "帮我创建一门Python数据分析的线上课,放技术培训分类里" | title+category | Phase 1 |
|
|
8
|
+
| "做课:新员工入职培训" | title | Phase 1(补分类弹窗) |
|
|
9
|
+
| "新建一门课" | — | Phase 1(补标题+分类) |
|
|
10
|
+
|
|
11
|
+
## add_lesson(含类型选择)
|
|
12
|
+
|
|
13
|
+
| 用户输入 | 提取 | 路由 |
|
|
14
|
+
|---------|------|------|
|
|
15
|
+
| "给这门课加个视频" + video.mp4 | type=video | 2.0→视频链 |
|
|
16
|
+
| "上传课件" + lesson.pdf | document | 2.0→文档链 |
|
|
17
|
+
| "加几张产品图" + *.png | photo | 2.0→2.7 photo 链 |
|
|
18
|
+
| "加个小测验" | exam | 2.0→2.6 出题方式弹窗 |
|
|
19
|
+
| "用安全考试卷一做个测验" | paper-title | 2.6.2a 引用 |
|
|
20
|
+
| "这份试题表做成测验" + .xlsx | 导入试卷 | 2.6.2b 建题链 |
|
|
21
|
+
| "第一个和第三个课件换位置" | sort | 2.5 `+lesson-sort --sort-list` |
|
|
22
|
+
|
|
23
|
+
## settings
|
|
24
|
+
|
|
25
|
+
| 用户输入 | 路由 |
|
|
26
|
+
|---------|------|
|
|
27
|
+
| "设置学分 10 分" | +update --credit(CLI ✅) |
|
|
28
|
+
| "换个封面" + 图片 | photo 链取 photoUri → +update --image(CLI ✅,v6 修正) |
|
|
29
|
+
| "换个封面"(无图) | photo +list 选已有 → photoUri |
|
|
30
|
+
| "把讲师改成张三" / "加标签" | ⚠️ 后台(lector/tags 无 CLI) |
|
|
31
|
+
| "开启倍速/人脸识别/未学提醒" | +advanced(CLI ✅) |
|
|
32
|
+
| "设置收费 99 元" | ⚠️ 后台(subs/charge 话术) |
|
|
33
|
+
|
|
34
|
+
## publish / maintain
|
|
35
|
+
|
|
36
|
+
| 用户输入 | 路由 |
|
|
37
|
+
|---------|------|
|
|
38
|
+
| "发布/上线吧" | Phase 4 |
|
|
39
|
+
| "定时发布,下周一早上9点" | +publish --publish-time |
|
|
40
|
+
| "关闭这门课" | `+update --action close`(CLI ✅,v6 修正;弹窗确认) |
|
|
41
|
+
| "删除课程" / "复制这门课" | ⚠️ 后台话术 |
|
|
42
|
+
| "提交审批" | ⚠️ 后台话术 |
|
|
43
|
+
|
|
44
|
+
## assign / query
|
|
45
|
+
|
|
46
|
+
| 用户输入 | 路由 |
|
|
47
|
+
|---------|------|
|
|
48
|
+
| "指派给研发部,必修" | Phase 4 |
|
|
49
|
+
| "看看学习进度/谁学完了/完成率" | 未指定课程先 `+list-courses --status 1 --page-size 20` 展示前 20 个;选定后进入 Phase 5 query |
|
|
50
|
+
| "作业都谁交了" | clock 链 |
|
|
51
|
+
|
|
52
|
+
## 歧义消解
|
|
53
|
+
|
|
54
|
+
| 用户输入 | 处理 |
|
|
55
|
+
|---------|------|
|
|
56
|
+
| "上传一下"(无课程无附件) | 弹窗:上传到哪门课?还是新建? |
|
|
57
|
+
| "创建课程"(无标题) | 先登录检查,再拉取真实一级分类列表;不得直接展示占位分类或空的 B 表格 |
|
|
58
|
+
| "帮我看看" | `+list-courses` 弹窗选 |
|
|
59
|
+
| "设置一下" | 弹窗:基础/高级/收费 |
|
|
60
|
+
|
|
61
|
+
## 提取规则
|
|
62
|
+
|
|
63
|
+
1. 有 course-id → 当前课程操作,不新建;
|
|
64
|
+
2. 有附件 → 倾向课件(按扩展名定类型:图片→photo,xlsx/docx 试题表→exam 导入,其余→素材);
|
|
65
|
+
3. 创建词 + 无 course-id → Phase 1。
|
|
@@ -1,177 +1,81 @@
|
|
|
1
|
-
# 全流程 SOP — Phase 1-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
### Step 1.2
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## Phase 3: 课程设置
|
|
85
|
-
|
|
86
|
-
### Step 3.1: 基础设置
|
|
87
|
-
读取: subs/settings/SOP.md 执行
|
|
88
|
-
输入: course-id + 要修改的字段
|
|
89
|
-
操作: course +update --course-id <uuid> --title "..." --description "..."
|
|
90
|
-
成功: 更新后数据
|
|
91
|
-
失败: 检查字段有效性
|
|
92
|
-
|
|
93
|
-
### Step 3.2: 高级设置
|
|
94
|
-
调度: soke-course-settings
|
|
95
|
-
操作: course +advanced --course-id <uuid> ...
|
|
96
|
-
支持: 学习模式/待办推送/截止后学习/人脸识别/学习中人脸识别/未学提醒/倍速/拖动/评价/交流群二维码/文档防挂机/评论
|
|
97
|
-
交流群二维码: 用户给本地图片时,使用 course +advanced --image-file <path>,命令内部只上传 OSS 并生成 imageOssUrl,不进入图片库
|
|
98
|
-
证书/签名仍需后台操作。
|
|
99
|
-
|
|
100
|
-
### Step 3.3: 收费设置(可选)
|
|
101
|
-
读取: subs/charge/SOP.md 执行
|
|
102
|
-
全部 ⚠️ CLI 不支持:
|
|
103
|
-
"收费设置(价格/试看)需在后台→课程编辑→收费设置中手动配置。"
|
|
104
|
-
|
|
105
|
-
Gate 3→4: 无硬阻塞(设置可跳过)
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
## Phase 4: 发布
|
|
110
|
-
|
|
111
|
-
### Step 4.1: Gate Check
|
|
112
|
-
读取: subs/publish/SOP.md 执行
|
|
113
|
-
检查项:
|
|
114
|
-
① 标题非空 — course +get-course → title
|
|
115
|
-
② 分类已选 — course +get-course → category_id
|
|
116
|
-
③ 课件 ≥ 1 — course +lesson-list → count
|
|
117
|
-
④ 无转码失败 — course +lesson-list → 逐条 transcode_status
|
|
118
|
-
⑤ 无转码中 — course +lesson-list → 逐条(警告)
|
|
119
|
-
结果:
|
|
120
|
-
全部通过 → 执行发布
|
|
121
|
-
阻塞项 → 列出 + 修复指引,停止
|
|
122
|
-
仅警告 → 询问是否忽略
|
|
123
|
-
|
|
124
|
-
### Step 4.2: 执行发布
|
|
125
|
-
直接发布: course +publish --course-id <uuid>
|
|
126
|
-
定时发布: course +publish --course-id <uuid> --publish-time "<北京时间>"
|
|
127
|
-
提取: 发布状态 → 存上下文
|
|
128
|
-
失败: 检查 Gate Check 结果
|
|
129
|
-
|
|
130
|
-
### Step 4.3: 后续(可选)
|
|
131
|
-
审批/批量 → ⚠️ CLI 不支持 → 告知后台路径
|
|
132
|
-
|
|
133
|
-
Gate 4→5: ✅ status=1
|
|
134
|
-
|
|
135
|
-
---
|
|
136
|
-
|
|
137
|
-
## Phase 5: 指派学员
|
|
138
|
-
|
|
139
|
-
### Step 5.1: 拉取全量部门
|
|
140
|
-
调度: soke-assign
|
|
141
|
-
exec: soke assign +list-departments
|
|
142
|
-
提取: 全量部门名称+ID → 存内存(供模糊搜索用)
|
|
143
|
-
|
|
144
|
-
### Step 5.2: 用户输入关键词搜索部门
|
|
145
|
-
告知: "请输入要指派的部门名称(支持模糊搜索)"
|
|
146
|
-
用户输入关键词 → 在部门列表中模糊匹配(不区分大小写、部分匹配)
|
|
147
|
-
匹配结果:
|
|
148
|
-
- 唯一匹配 → 直接确认使用
|
|
149
|
-
- 多个匹配 → `ask_user_question` 弹窗列出匹配项让用户选
|
|
150
|
-
- 无匹配 → 建议换关键词,或弹窗列所有部门
|
|
151
|
-
|
|
152
|
-
### Step 5.3: 确认指派方式
|
|
153
|
-
→ `ask_user_question` 弹窗: "必修还是选修?" → ["必修"/"选修"]
|
|
154
|
-
|
|
155
|
-
### Step 5.4: 执行指派
|
|
156
|
-
调度: soke-assign
|
|
157
|
-
操作: assign +create --module course --module-id <uuid> --compulsory 1|0 --user-ids "<ids>"
|
|
158
|
-
输出: 指派 UUID + 指派人数
|
|
159
|
-
通知: "已指派 N 人,学员将收到学习通知"
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
## Phase 6: 运营维护
|
|
164
|
-
|
|
165
|
-
### Step 6.1: 查询进度
|
|
166
|
-
读取: subs/query/SOP.md 执行
|
|
167
|
-
操作: course +list-course-users / +get-course-user / +list-lesson-learns / +list-lesson-faces
|
|
168
|
-
|
|
169
|
-
### Step 6.2: 关闭/删除
|
|
170
|
-
读取: subs/publish/SOP.md 执行
|
|
171
|
-
关闭: course +update --course-id <uuid> --action close
|
|
172
|
-
删除: 先查 status,仅 status=0 未发布或 status=2 已关闭时执行 course +delete --course-id <uuid>
|
|
173
|
-
阻塞: status=1 已发布课程不能直接删除,先关闭再删除
|
|
174
|
-
|
|
175
|
-
### Step 6.3: 复制(⚠️ CLI 不支持)
|
|
176
|
-
读取: subs/copy/SOP.md 执行
|
|
177
|
-
告知: "课程复制需在后台→已发布/已关闭列表→复制中操作"
|
|
1
|
+
# 全流程 SOP — Phase 1-5 详细操作
|
|
2
|
+
|
|
3
|
+
> 命令参数以 cli-facts.md 为准;交互按 SKILL.md 编码方案(A-H);本文件只定义步骤与提取项。单课程首轮同时罗列标题输入、课件来源、分类和模板;批量课程按批量流程分步收集。
|
|
4
|
+
|
|
5
|
+
## Phase 1 创建课程骨架
|
|
6
|
+
|
|
7
|
+
### Step 1.1 权限检查(结构性)
|
|
8
|
+
`command -v soke-cli` 缺 → read soke-cli-install-guide.md 引导安装。
|
|
9
|
+
`soke-cli config show` 无「用户凭证」→ `soke-cli auth login`(浏览器人工)→ 回查。
|
|
10
|
+
|
|
11
|
+
### Step 1.2 分模式收集(编码)
|
|
12
|
+
模式按上下文路由:已有 `course-id` 直接进入当前课程操作;已提供目录路径进入批量课程;已提供单个文件或课程标题进入单课程。仅意图无法判断时才弹出模式选择。
|
|
13
|
+
单课程首轮必须严格按以下顺序输出:
|
|
14
|
+
1. `请输入你要上传的课程标题:`
|
|
15
|
+
2. `A 课件来源`及选项表;
|
|
16
|
+
3. `B 课程分类(一级 · 第 X/Y 页)`及真实分类表;
|
|
17
|
+
4. 分类提示:`回复「搜索 XX」可模糊匹配;"下一页"翻页(当前仅第 X/Y 页)。如需新分类请后台新建后回「分类建好了」。`;
|
|
18
|
+
5. `C 课程模板`及模板表;
|
|
19
|
+
6. 输入提示:请直接提供课程标题、课件来源、分类和模板;本地上传时同时提供文件路径,也可拖入文件。
|
|
20
|
+
分类和模板表中的编码必须放在名称前;允许一次提供标题、A/B/C选项,也允许分多次补充。
|
|
21
|
+
批量课程:按 B0-B3 分步收集分类、模板和目录路径,不要求单独课程标题。
|
|
22
|
+
分类列表:一级、10 个/页,支持“搜索XX”和“下一页”;表格下方固定提示「如果没有找到需要的分类,请回复“搜索XX”搜索,或回复“下一页”查找」。
|
|
23
|
+
分类:展示分类树并优先让用户选择末级分类;用户回 B 编号/名称 → 提取 category-id;不得默认使用一级分类;名称唯一匹配直接用。
|
|
24
|
+
|
|
25
|
+
### Step 1.3 创建课程
|
|
26
|
+
创建前按「标题 + 分类 + 当前未发布状态」查重;疑似重复时列出课程 ID 和状态,等待用户选择复用或继续创建。确认无重复后执行 `course +create --title "xxx" --category-id "xxx" [--description]`。
|
|
27
|
+
提取 course-id + title + status → **未提取禁止下一步**。
|
|
28
|
+
|
|
29
|
+
### Step 1.4 模板(编码 C)
|
|
30
|
+
C1-C6 → read subs/template/SOP.md,立即执行 CLI 支持的 `course +advanced` 固定映射;输出「设置项|值|状态」表,后台项标记待后台配置;C7 → 跳过。高级设置写入失败时停止,不进入课件上传。
|
|
31
|
+
|
|
32
|
+
Gate 1→2:course-id 非空。
|
|
33
|
+
|
|
34
|
+
## Phase 2 构建课件
|
|
35
|
+
|
|
36
|
+
### Step 2.1-2.3 来源 A
|
|
37
|
+
A1 本地:read subs/material → `file +upload --file <path>` → 非图片字段对象;
|
|
38
|
+
A2 素材库:`file list-files --page-size 20` → 展示编号列表(20 个/页、「下一页」翻页、「搜索 XX」搜索)→ 回编号 → 全字段;无匹配 → 提示改 A1 或重搜;
|
|
39
|
+
类型按扩展名自动判(视频/音频/文档/图片),图片统一走 subs/photo 链;
|
|
40
|
+
read subs/lesson → `course +lesson-create` → 提取 lesson-id;图片不得套用 file +upload 六字段规则。
|
|
41
|
+
|
|
42
|
+
### Step 2.4 小测验 D
|
|
43
|
+
课件完成后问「加小测验吗?回复 D1 加 / D2 不加」;
|
|
44
|
+
D1 → 「出题方式:H1 选择试卷 / H2 导入试卷」;
|
|
45
|
+
H1 引用:先拉取前 20 份试卷,并在当前对话中直接用 Markdown 表格罗列,不使用弹窗;不得在远程页面、远程课程界面或平台内容中展示试卷列表;表格下方固定提示「回复“搜索 XX”可模糊匹配;“下一页”翻页(当前仅 1 页)。」用户回复编号或名称后,执行 `course +lesson-create --type exam --title "<测试名称>" --paper-title "<关键词>"`(或 --paper-id)[--minute --second];
|
|
46
|
+
H2 上传:read subs/exam/SOP.md 全链 → 挂载。小测验导入或挂载成功后,必须立即进入 Phase 4,弹出“指派课程 + 发布课程”条件选择,不得只输出导入成功状态。
|
|
47
|
+
|
|
48
|
+
### Step 2.5 排序
|
|
49
|
+
默认不问;用户说"调顺序" → `course +lesson-sort --sort-list "id1,id2"`。
|
|
50
|
+
|
|
51
|
+
Gate 2→3:`+lesson-list` count ≥ 1。
|
|
52
|
+
|
|
53
|
+
## Phase 3 课程设置(默认展示摘要)
|
|
54
|
+
课件完成后默认展示一次设置摘要表(基础:标题/分类/学分/描述/封面;高级:学习模式/倍速/拖动/人脸/提醒/评价/防挂机/评论/二维码);
|
|
55
|
+
用户回复修改项 → CLI 项立即 `+update`/`+advanced`,后台项「已记录→后台路径」;回复「继续」→ 跳过。
|
|
56
|
+
收费 read subs/charge 后台话术。封面新图走 photo 链。
|
|
57
|
+
Gate 3→4:无硬阻塞。
|
|
58
|
+
|
|
59
|
+
## Phase 4 指派 + 发布(最后一步,条件弹窗)
|
|
60
|
+
4.0 指派弹窗:询问「是否需要将课程指派给学员?」;选项固定为「1. 指派(推荐)」「2. 不指派」。选 1 后再选择指派对象和学习类型;选 2 不出现学习类型问题。
|
|
61
|
+
|
|
62
|
+
指派完成并通过 Gate Check 后,发布弹窗询问「是否确认发布这门课程?」;选项固定为「1. 发布」「2. 不发布」。仅选 1 执行发布。
|
|
63
|
+
4.1 G1 → 弹窗2 两问:[指派对象 部门/人员 | 学习类型 F1/F2];选择部门后先 `+list-departments` 递归拉全树,再用原生选择弹窗罗列部门名称、成员数和 ID,用户选定后传 `--dept-ids` + `--dept-names` 执行 `assign +create --learn-type`;人员→`+list-users --keyword` 编号选;`+list` 回查;G2 → 不出现 F 问;
|
|
64
|
+
4.2 Gate Check 6 项(subs/publish + sop-publish-check)→ 🔴列阻塞停止;仅 🟡 才允许用户确认继续。转码中/失败不得发布。
|
|
65
|
+
4.3 用户回复 E1 后,必须重新获取课程、课件和指派状态并再次 Gate Check;若状态发生变化,旧确认失效,重新展示确认。仅二次检查通过后执行 `course +publish --course-id <id> [--publish-time "北京时间"]`,禁止代发布;直接发布回查 status==1,定时发布回查 publish_time。审批/批量 → 后台话术。
|
|
66
|
+
|
|
67
|
+
## 批量生成课程(batch)
|
|
68
|
+
|
|
69
|
+
B0 Step 1.0 模式弹窗选「批量生成课程」。
|
|
70
|
+
B1 分类+模板同单课程(C 表带设置两列);+advanced 映射逐课生效。
|
|
71
|
+
B2 文本收批量目录路径。
|
|
72
|
+
B3 扫描只访问二级:一级文件夹→课程名=文件夹名、课件=其内支持文件;一级文件→课程名=文件名、课件=该文件;扩展名大小写不敏感;默认不跟随符号链接、忽略隐藏文件;不支持扩展名跳过并备注;空目录、无支持课件、无权限或同名冲突必须阻止确认并要求修改计划。
|
|
73
|
+
B4 先展示批量计划表(课程名|课件数|课件列表),再使用原生二选一弹窗询问「确认批量上传」或「返回修改计划」;仅用户选择「确认批量上传」后执行。
|
|
74
|
+
B5 逐课:+create → 逐文件 +upload → +lesson-create(六字段)→ +advanced;**无小测验**;每门课、每个文件分别记录状态并逐课输出进度。单门失败保留已产生的 ID,继续其他课程;超时先回查,禁止盲目重试。
|
|
75
|
+
B6 一次弹窗三问(G/F/E)对全部课程生效;E1 → 每门课重新查询状态并再次 Gate Check,通过后才发布。
|
|
76
|
+
B7 输出批量结果表(课程|course-id|课件数|指派|发布状态|失败动作|是否可重试),提供失败课程的可恢复位置。每个动作至少记录 course-id、文件路径、lesson-id(如有)、动作状态、错误信息和重试标记。
|
|
77
|
+
|
|
78
|
+
## Phase 5 运营维护
|
|
79
|
+
查询 read subs/query/SOP.md:`+list-course-users` / `+get-course-user` / `+list-lesson-learns` / `+list-lesson-faces --target-id` / clock 三命令(作业)。
|
|
80
|
+
关闭:`course +update --action close`(⚠️ 文本确认「回复'确认关闭'」;被学习地图关联则不可关闭 → 后台移除)。
|
|
81
|
+
删除/复制:后台话术(read subs/copy/SOP.md 讲复制规则)。
|
|
@@ -1,66 +1,29 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 课件类型 SOP(v6 实测修正)
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## CLI 可创建的类型(5 种)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
| 类型 | 判断 | 链路 |
|
|
6
|
+
|------|------|------|
|
|
7
|
+
| video | .mp4/.avi/.mov/.mkv/.webm | file +upload → lesson-create --type video |
|
|
8
|
+
| audio | .mp3/.wav/.ogg/.flac/.aac | 同上 audio(length 默认300) |
|
|
9
|
+
| document | .pdf/.ppt/.pptx/.doc/.docx/.xls/.xlsx | 同上 document(无需转码) |
|
|
10
|
+
| photo_gallery | .jpg/.jpeg/.png 等 | photo-gallery +create → lesson-create --type photo_gallery --media-id(**v6:CLI 支持,旧文档作废**) |
|
|
11
|
+
| exam | 用户提"测验/试卷" | 选择试卷(--paper-title/--paper-id) 或 导入试卷(subs/exam 建题链) |
|
|
6
12
|
|
|
7
|
-
|
|
13
|
+
高级配置(视频积分/下载开关/弹题等)⚠️ 后台→课件编辑。
|
|
8
14
|
|
|
9
|
-
|
|
10
|
-
1. 调度 soke-material → file +upload --file <video.mp4>
|
|
11
|
-
2. 提取: { uuid, filename, type: "video", ext, filesize, object }
|
|
12
|
-
3. 调度 soke-lesson → course +lesson-create --type video --length <秒> ...(参数全部来自步骤2)
|
|
15
|
+
## CLI 不可创建(后台话术)
|
|
13
16
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
→ 告知用户: "视频课件的高级配置需在后台→课件编辑中设置"
|
|
17
|
+
| 类型 | 话术要点 |
|
|
18
|
+
|------|---------|
|
|
19
|
+
| article 文章 | 后台→课程编辑→添加课件→手动添加文章 |
|
|
20
|
+
| link 外链 | 后台→添加外链 |
|
|
21
|
+
| SCORM / HTML | 后台对应入口 |
|
|
22
|
+
| homework 作业 | 后台→作业(三种审批:无需批改/PC批改/移动端多级);查询走 clock |
|
|
21
23
|
|
|
22
|
-
|
|
24
|
+
quiz 小测验课件 = exam 类型,CLI 可挂载(需已有试卷)。
|
|
23
25
|
|
|
24
|
-
|
|
26
|
+
## 上传规则
|
|
25
27
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
### document(文档课件)
|
|
29
|
-
|
|
30
|
-
**判断**: .pdf|.ppt|.pptx|.doc|.docx|.xls|.xlsx|.txt
|
|
31
|
-
|
|
32
|
-
**流程**: 同 video,type=document,默认 length=0s
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## 不支持 CLI 的课件类型(告知后台路径)
|
|
37
|
-
|
|
38
|
-
### image(图片课件)
|
|
39
|
-
**判断**: .jpg|.jpeg|.png|.gif|.webp|.bmp|.svg
|
|
40
|
-
**话术**: "图片课件暂不支持 CLI 创建。你可以先把图片上传到 photo-gallery,然后在后台→课程编辑→添加课件→选择图片库中操作。一张图片一个课件,无数量上限。"
|
|
41
|
-
|
|
42
|
-
### article(文章课件)
|
|
43
|
-
**判断**: 用户输入纯文本 + 提到"文章"
|
|
44
|
-
**话术**: "文章课件暂不支持 CLI 创建。请在后台→课程编辑→添加课件→手动添加文章中编辑。"
|
|
45
|
-
|
|
46
|
-
### link(外链课件)
|
|
47
|
-
**判断**: 用户输入含 http:// 或 https:// + 提到"链接"/"外链"
|
|
48
|
-
**话术**: "外链课件暂不支持 CLI 创建。请在后台→课程编辑→添加课件→添加外链中操作。"
|
|
49
|
-
|
|
50
|
-
### quiz(小测验课件)
|
|
51
|
-
**判断**: 用户提到"测验"/"试卷"/"小测验"
|
|
52
|
-
**话术**: "小测验课件暂不支持 CLI 创建。你可以先用 soke-exam skill 创建试卷,然后到后台→课程编辑→添加课件→小测验中关联试卷。注意:小测验仅支持客观题(单选/多选/判断),不限次数的测验必须通过才能记录进度。"
|
|
53
|
-
|
|
54
|
-
### homework(作业课件)
|
|
55
|
-
**判断**: 用户提到"作业"/"批改"
|
|
56
|
-
**话术**: "作业课件暂不支持 CLI 创建。请在后台→课程编辑→添加课件→作业中操作。作业支持三种审批方式:①无需批改(提交自动记录进度)②PC后台批改③移动端多级审批(按人员/角色/主管审批,或签/会签)。"
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
## 课件上传规则
|
|
61
|
-
|
|
62
|
-
- 上传文件自动转存素材库
|
|
63
|
-
- 都需经阿里云转码
|
|
64
|
-
- 转码中/失败 → 不能发布课程
|
|
65
|
-
- 上传失败时提示具体原因(文件超大小、格式不对)
|
|
66
|
-
- 发布后删减课件:对未完成进度有影响,已完成无影响
|
|
28
|
+
- 上传自动转存素材库;视频/音频经阿里云转码,转码失败🔴阻塞发布、转码中🟡可确认发布;文档无需转码;
|
|
29
|
+
- 发布后删减课件:未完成进度受影响,已完成无影响(删除需后台)。
|
|
@@ -1,76 +1,19 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 发布/关闭 Gate Check 矩阵(唯一定义)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> 本文件为闸门矩阵唯一事实源;SKILL.md 与 subs/publish 均引用此处。四要素:检查项/获取方式/严重度/不通过处理。
|
|
4
4
|
|
|
5
|
-
| # | 检查项 | 获取方式 | 严重度 |
|
|
6
|
-
|
|
7
|
-
| 1 |
|
|
8
|
-
| 2 |
|
|
9
|
-
| 3 |
|
|
10
|
-
| 4 |
|
|
11
|
-
| 5 |
|
|
12
|
-
| 6 |
|
|
5
|
+
| # | 检查项 | 获取方式 | 严重度 | 不通过处理 |
|
|
6
|
+
|---|--------|---------|--------|-----------|
|
|
7
|
+
| 1 | 标题非空 | `+get-course` → title | 🔴 | `+update --title` |
|
|
8
|
+
| 2 | 分类已选 | `+get-course` → category_id | 🔴 | `+list-categories` 后 `+update --category-id` |
|
|
9
|
+
| 3 | 课件 ≥ 1 | `+lesson-list` count | 🔴 | 回 Phase 2 |
|
|
10
|
+
| 4 | 无转码失败 | `+lesson-list` 逐条 transcode_status | 🔴 | 删失败课件重传 |
|
|
11
|
+
| 5 | 无转码中 | 同上 | 🟡 | 弹窗确认(发布后学员暂不可见) |
|
|
12
|
+
| 6 | 付费方式已确认 | 询问用户 | 🟡 | 收费需后台配置,确认免费或已配置 |
|
|
13
|
+
| 7 | 关闭时:无学习地图关联 | 后台确认 | 🟡(关闭) | 先在学习地图移除该课程 |
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
流程:全过→执行;有🔴→列阻塞+修复指引→停止;仅🟡→弹窗确认。
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
开始 Gate Check
|
|
18
|
-
│
|
|
19
|
-
▼
|
|
20
|
-
逐项检查 ①-⑥
|
|
21
|
-
│
|
|
22
|
-
├── 全部通过 → 执行发布
|
|
23
|
-
│
|
|
24
|
-
├── 有 🔴 阻塞项 → 列出所有阻塞项 + 每项修复指引 → 停止发布
|
|
25
|
-
│
|
|
26
|
-
└── 仅 🟡 警告 → 列出警告 → 询问: "有 X 项警告,确认继续发布吗?"
|
|
27
|
-
├── 确认 → 执行发布
|
|
28
|
-
└── 取消 → 先处理警告项
|
|
29
|
-
```
|
|
17
|
+
转码状态码:success ✅ / transcoding|pending 🟡 / failed 🔴。文档课件不参与 4、5。
|
|
30
18
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
| 状态值 | 含义 | 能否发布 |
|
|
34
|
-
|--------|------|---------|
|
|
35
|
-
| success | 转码成功 | ✅ |
|
|
36
|
-
| transcoding | 转码中 | ⚠️ 可忽略警告发布,但学员暂时看不到 |
|
|
37
|
-
| failed | 转码失败 | ❌ 阻塞,必须删除重传 |
|
|
38
|
-
| pending | 待转码 | ⚠️ 同 transcoding |
|
|
39
|
-
|
|
40
|
-
## 发布后验证
|
|
41
|
-
|
|
42
|
-
发布后执行:
|
|
43
|
-
1. `course +get-course --course-id <uuid>` → 确认 `status == 1`
|
|
44
|
-
2. `course +lesson-list --course-id <uuid>` → 确认课件状态
|
|
45
|
-
|
|
46
|
-
## 审批流程(⚠️ CLI 暂不支持)
|
|
47
|
-
|
|
48
|
-
- 默认关闭
|
|
49
|
-
- 开启后: 未发布课程需审批才能发布
|
|
50
|
-
- 审批通过 → 发布成功
|
|
51
|
-
- 审批驳回 → 修改后可重新提交
|
|
52
|
-
- 审批人为空 → 默认通过
|
|
53
|
-
- 多级审批: 一级不可删除,默认主管理员和或签
|
|
54
|
-
|
|
55
|
-
## 定时发布
|
|
56
|
-
|
|
57
|
-
- 执行: `course +publish --course-id <uuid> --publish-time "<北京时间>"`
|
|
58
|
-
- 输入北京时间,会在规定时间发布课程
|
|
59
|
-
- 到时间点自动发布并推送消息
|
|
60
|
-
- 未到点时学员收不到消息、前端看不到
|
|
61
|
-
|
|
62
|
-
## 批量操作(⚠️ CLI 暂不支持)
|
|
63
|
-
|
|
64
|
-
- 批量发布: 跨页最多选 40 条
|
|
65
|
-
- 批量指派: 增量不是替换
|
|
66
|
-
|
|
67
|
-
## 课程状态流转
|
|
68
|
-
|
|
69
|
-
```
|
|
70
|
-
上传 → 上传成功 → 转码中 → 未发布(status=0) → 发布(status=1)
|
|
71
|
-
↕
|
|
72
|
-
已关闭(status=2)
|
|
73
|
-
上传 → 上传失败(可修改重试)
|
|
74
|
-
转码 → 转码失败(可删除重传)
|
|
75
|
-
未发布 → 编辑/删除/提交审批
|
|
76
|
-
```
|
|
19
|
+
发布后验证:`+get-course` status==1;`+lesson-list` 课件状态。
|