@sokeai/cli 1.0.75 → 1.0.77
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/README.md +7 -7
- package/package.json +1 -1
- package/scripts/build-binaries.sh +1 -1
- package/scripts/e2e-test.sh +75 -3
- package/skills/SKILL.md +18 -1
- package/skills/soke-ai-coach-director/CHANGELOG.md +203 -0
- package/skills/soke-ai-coach-director/README.md +123 -0
- package/skills/soke-ai-coach-director/SKILL.md +221 -0
- package/skills/soke-ai-coach-director/coaching/knowledge-packager/knowledge-packager.md +91 -0
- package/skills/soke-ai-coach-director/coaching/prompt-engineer/parts/part2-roles.md +97 -0
- package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-engineer/parts/part3-flow.md +3 -3
- package/skills/soke-ai-coach-director/coaching/prompt-engineer/prompt-engineer.md +76 -0
- package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-optimizer/prompt-optimizer.md +77 -58
- package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/workbuddy.md +2 -3
- package/skills/soke-ai-coach-director/platform/interaction.md +103 -0
- package/skills/{ai-coach-director → soke-ai-coach-director}/platform/publish-gate.md +3 -3
- package/skills/{ai-coach-director → soke-ai-coach-director}/platform/resource-finalizer.md +10 -35
- package/skills/{ai-coach-director → soke-ai-coach-director}/platform/soke-ai-training/soke-ai-training.md +33 -3
- package/skills/soke-ai-coach-director/platform/sync-engine.md +39 -0
- package/skills/{ai-coach-director → soke-ai-coach-director}/references/change-log-partwise-refactor.md +1 -1
- package/skills/soke-ai-coach-director/references/env-check.md +146 -0
- package/skills/soke-ai-coach-director/references/exec-common.md +126 -0
- package/skills/soke-ai-coach-director/references/exec-handbook.md +621 -0
- package/skills/soke-ai-coach-director/references/exec-part1.md +86 -0
- package/skills/soke-ai-coach-director/references/exec-part2.md +145 -0
- package/skills/soke-ai-coach-director/references/exec-part3.md +91 -0
- package/skills/soke-ai-coach-director/references/exec-part4.md +187 -0
- package/skills/soke-ai-coach-director/references/gate-check-matrix.md +46 -0
- package/skills/soke-ai-coach-director/references/micro-tune-labels.md +30 -0
- package/skills/soke-ai-coach-director/references/platform-api-pitfalls.md +49 -0
- package/skills/soke-ai-coach-director/references/role-resource-matching.md +45 -0
- package/skills/{ai-coach-director → soke-ai-coach-director}/references/self-improvement-examples.md +2 -0
- package/skills/soke-ai-coach-director/references/self-learning-engine.md +489 -0
- package/skills/soke-ai-coach-director/references/subs/part1/SOP.md +17 -0
- package/skills/soke-ai-coach-director/references/subs/part2/SOP.md +34 -0
- package/skills/soke-ai-coach-director/references/subs/part3/SOP.md +27 -0
- package/skills/soke-ai-coach-director/references/subs/part4/SOP.md +31 -0
- package/skills/soke-ai-coach-director/references/subs/publish/SOP.md +81 -0
- package/skills/soke-ai-coach-director/references/subs/tune/SOP.md +92 -0
- package/skills/soke-ai-coach-director/references/verified-cli-cheatsheet.md +56 -0
- package/skills/{ai-coach-director → soke-ai-coach-director}/scripts/activator.sh +0 -0
- package/skills/{ai-coach-director → soke-ai-coach-director}/scripts/error-detector.sh +0 -0
- package/skills/{ai-coach-director → soke-ai-coach-director}/scripts/extract-skill.sh +0 -0
- package/skills/soke-ai-coach-director/scripts/gate_check.py +112 -0
- package/skills/soke-ai-coach-director/scripts/validate_operations.py +403 -0
- package/skills/soke-certificate/SKILL.md +717 -0
- package/skills/soke-course/README.md +12 -2
- package/skills/soke-course/SKILL.md +12 -10
- package/skills/soke-course/references/course-list-courses.md +49 -84
- package/skills/soke-course/references/intent-cases.md +8 -8
- package/skills/soke-course/references/sop-full-workflow.md +11 -6
- package/skills/soke-course/references/sop-publish-check.md +3 -1
- package/skills/soke-course/references/subs/publish/SOP.md +34 -4
- package/skills/soke-course/references/subs/query/SOP.md +9 -7
- package/skills/soke-course/references/subs/settings/SOP.md +87 -25
- package/skills/soke-exam-question-pool/SKILL.md +80 -112
- package/skills/soke-task/SKILL.md +32 -10
- package/skills/soke-training-demand/SKILL.md +150 -43
- package/skills/ai-coach-director/SKILL.md +0 -1563
- package/skills/ai-coach-director/coaching/prompt-engineer/parts/part2-roles.md +0 -317
- package/skills/ai-coach-director/coaching/prompt-engineer/prompt-engineer.md +0 -244
- package/skills/ai-coach-director/platform/interaction.md +0 -315
- package/skills/ai-coach-director/platform/sync-engine.md +0 -1101
- package/skills/ai-coach-director/references/cases/create//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/224/265/350/257/235/347/272/246/350/256/277//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/224/265/350/257/235/347/272/246/350/256/277_/346/240/207/345/207/206/347/237/245/350/257/206/345/272/223.md +0 -199
- package/skills/ai-coach-director/references/cases/create//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/224/265/350/257/235/347/272/246/350/256/277//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/224/265/350/257/235/347/272/246/350/256/277/347/237/245/350/257/206/345/272/223.md +0 -388
- package/skills/ai-coach-director/references/cases/create//346/237/220/345/233/275/351/231/205/346/243/200/346/265/213/346/234/272/346/236/204/tuv-knowledge-base.md +0 -125
- package/skills/ai-coach-director/references/cases/create//346/237/220/345/233/275/351/231/205/346/243/200/346/265/213/346/234/272/346/236/204/tuv-p03-first-call-scenario-prompt.md +0 -428
- package/skills/ai-coach-director/references/cases/create//346/237/220/345/233/275/351/231/205/346/243/200/346/265/213/346/234/272/346/236/204//346/237/220/345/233/275/351/231/205/346/243/200/346/265/213/346/234/272/346/236/204P03/351/231/252/347/273/203/346/211/247/350/241/214/346/226/271/346/241/210_20260610.md +0 -225
- package/skills/ai-coach-director/references/cases/create//346/237/220/345/234/260/346/226/271/351/223/266/350/241/214//346/237/220/345/234/260/346/226/271/351/223/266/350/241/214/345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/224/265/350/257/235/347/272/246/350/256/277AI/351/231/252/347/273/203/346/265/213/350/257/225/347/224/250/344/276/213/345/220/210/351/233/206.md +0 -525
- package/skills/ai-coach-director/references/cases/create//347/211/251/346/265/201/350/241/214/344/270/232//347/211/251/346/265/201/350/241/214/344/270/232-/345/210/235/346/254/241/346/213/234/350/256/277/351/246/231/347/262/276/351/246/231/346/226/231/345/256/242/346/210/267.md +0 -146
- package/skills/ai-coach-director/references/cases/create//351/205/222/345/272/227/351/244/220/351/245/256//351/205/222/345/272/227/351/244/220/351/245/256AI/351/231/252/347/273/203_/346/240/207/346/235/2061_/346/226/260/345/223/201/346/216/250/351/224/200_20260701.md +0 -230
- package/skills/ai-coach-director/references/cases/create//351/205/222/345/272/227/351/244/220/351/245/256//351/205/222/345/272/227/351/244/220/351/245/256AI/351/231/252/347/273/203_/346/240/207/346/235/2062_/345/202/254/350/217/234/345/256/211/346/212/232_20260701.md +0 -257
- package/skills/ai-coach-director/references/cases/create//351/205/222/345/272/227/351/244/220/351/245/256//351/205/222/345/272/227/351/244/220/351/245/256AI/351/231/252/347/273/203_/346/240/207/346/235/2063_/345/267/256/350/257/204/345/233/236/350/256/277_20260701.md +0 -259
- package/skills/ai-coach-director/references/cases/create//351/205/222/345/272/227/351/244/220/351/245/256//351/205/222/345/272/227/351/244/220/351/245/256AI/351/231/252/347/273/203/345/234/272/346/231/257/346/226/271/346/241/210_20260701.md +0 -452
- package/skills/ai-coach-director/references/cases/create//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206_/345/256/242/346/210/267/347/241/256/350/256/244/345/217/215/351/246/210/350/241/250.md +0 -133
- package/skills/ai-coach-director/references/cases/create//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206_/351/231/252/347/273/203/346/217/220/347/244/272/350/257/215_v1.md +0 -333
- package/skills/ai-coach-director/references/cases/create//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206_/351/231/252/347/273/203/346/217/220/347/244/272/350/257/215_v2_Part1-Part5.md +0 -649
- package/skills/ai-coach-director/references/env-check.md +0 -167
- package/skills/ai-coach-director/references/platform-api-pitfalls.md +0 -232
- package/skills/ai-coach-director/references/role-resource-matching.md +0 -349
- package/skills/ai-coach-director/references/verified-cli-cheatsheet.md +0 -203
- /package/skills/{ai-coach-director → soke-ai-coach-director}/assets/ERRORS-TEMPLATE.md +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/assets/FEATURE_REQUESTS-TEMPLATE.md +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/assets/LEARNINGS-TEMPLATE.md +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/assets/SKILL-TEMPLATE.md +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-engineer/parts/part1-basic.md +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-engineer/parts/part4-scoring.md +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-engineer/parts/part5-constraints.md +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/role-profiler/role-profiler.md +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/README.md +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/qclaw.md +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/wukong.md +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/zework.md +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/api-fallback.md +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/345/256/242/346/210/267/350/247/222/350/211/262/346/250/241/346/235/277/345/272/223.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203Bad Case/346/240/267/346/234/254/345/272/223.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/345/210/233/345/273/272/351/227/256/351/242/230/345/272/223.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/345/234/272/346/231/257/345/210/206/347/261/273/345/272/223.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/345/256/242/346/210/267/346/235/220/346/226/231/346/270/205/345/215/225/344/270/216/350/256/277/350/260/210/351/242/230/345/272/223.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/345/276/256/350/260/203/351/227/256/351/242/230/345/272/223.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/346/212/200/346/234/257/350/276/271/347/225/214/344/270/216/346/216/222/351/232/234/345/272/223.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/346/217/220/347/244/272/350/257/215/346/250/241/345/235/227/345/272/223.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/346/225/260/346/215/256/346/214/207/346/240/207/344/270/216/347/234/213/346/235/277/345/217/243/345/276/204/345/272/223.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/346/265/213/350/257/225/347/224/250/344/276/213/345/272/223.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/350/257/204/345/210/206/346/240/207/345/207/206/347/273/204/344/273/266/345/272/223.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/231/252/347/273/203/351/241/271/347/233/256/346/241/210/344/276/213/345/244/215/347/233/230/345/272/223.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/AI/351/241/276/345/256/242/350/247/222/350/211/262/346/250/241/346/213/237_GoodCase_BadCase_20260701.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/create//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/224/265/350/257/235/347/272/246/350/256/277//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/345/256/242/346/210/267/346/235/220/346/226/231/346/261/207/346/200/273_2026-05-19_1341.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/create//346/226/260/350/203/275/346/272/220/350/275/246/344/270/273/350/264/267//346/226/260/350/203/275/346/272/220/350/275/246/344/270/273/350/264/267/347/237/245/350/257/206/345/272/223/347/224/237/346/210/220_20260615.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/create//346/226/260/350/203/275/346/272/220/350/275/246/344/270/273/350/264/267//346/226/260/350/203/275/346/272/220/350/275/246/344/270/273/350/264/267/351/231/252/347/273/203/346/217/220/347/244/272/350/257/215/347/224/237/346/210/220_20260615.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/create//346/237/220/345/233/275/351/231/205/346/243/200/346/265/213/346/234/272/346/236/204//346/237/220/345/233/275/351/231/205/346/243/200/346/265/213/346/234/272/346/236/204/351/231/252/347/273/203/346/211/247/350/241/214/346/226/271/346/241/210/344/272/244/344/273/230/350/256/260/345/275/225_20260610.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/create//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206_/346/217/220/347/244/272/350/257/215/346/220/255/345/273/272_20260622.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/347/263/273/345/210/227//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_V1.1_20260616.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/347/263/273/345/210/227//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_V1.2_20260616.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/347/263/273/345/210/227//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/346/217/220/347/244/272/350/257/215_/345/216/213/347/274/251/347/211/210_V2.0_20260616.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/347/263/273/345/210/227//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/346/217/220/347/244/272/350/257/215/344/274/230/345/214/226_20260616.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277AI/351/231/252/347/273/203/347/263/273/347/273/237_/346/265/213/350/257/225/345/217/215/351/246/210/346/261/207/346/200/273_2026-06-01.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277KYC/344/277/241/344/273/273/345/200/274/347/246/201/344/273/244_2026-06-09_0932.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277KYC/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_v2_20260608.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_v1.1.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_v1.2.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/346/217/220/347/244/272/350/257/215/344/274/230/345/214/226_V2_/350/257/212/346/226/255/344/272/244/344/273/230_20260609.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases//345/233/233/345/244/247/345/234/272/346/231/257_GoodCase_BadCase_20260701.md" +0 -0
- /package/skills/{ai-coach-director → soke-ai-coach-director}/references/cases//346/241/210/344/276/213/345/272/223/350/241/245/345/205/205_2026-06-24.md" +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: soke-course-settings
|
|
3
3
|
version: 1.0.0
|
|
4
|
-
description: 课程设置 —
|
|
4
|
+
description: 课程设置 — 基础信息编辑及高级设置项说明,支持通过 CLI 更新课程高级设置
|
|
5
5
|
tags: [soke, course, settings, configuration, advanced]
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -9,7 +9,7 @@ tags: [soke, course, settings, configuration, advanced]
|
|
|
9
9
|
|
|
10
10
|
## 触发描述
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
课程创建后需要对课程标题、描述等基础信息进行修改,或需要更新高级设置项(学习模式、人脸识别、提醒、倍速等)时触发本技能。
|
|
13
13
|
|
|
14
14
|
## CLI 支持的操作
|
|
15
15
|
|
|
@@ -19,33 +19,89 @@ tags: [soke, course, settings, configuration, advanced]
|
|
|
19
19
|
soke course +update \
|
|
20
20
|
--course-id <courseId> \
|
|
21
21
|
--title "<新标题>" \
|
|
22
|
-
--
|
|
22
|
+
--credit 10 \
|
|
23
|
+
--description "<新描述>" \
|
|
24
|
+
--image "<图片库 photoUri>"
|
|
23
25
|
```
|
|
24
26
|
|
|
25
27
|
| 参数 | 必填 | 说明 |
|
|
26
28
|
|------|------|------|
|
|
27
29
|
| `--course-id` | 是 | 课程 ID |
|
|
30
|
+
| `--action` | 否 | 操作类型,默认 `update`;传 `close` 可关闭课程 |
|
|
28
31
|
| `--title` | 否 | 课程标题 |
|
|
32
|
+
| `--credit` | 否 | 学分 |
|
|
29
33
|
| `--description` | 否 | 课程描述/简介 |
|
|
34
|
+
| `--image` | 否 | 课程封面图片地址,使用图片库列表接口返回的 `photoUri` |
|
|
35
|
+
| `--image-x` | 否 | 封面裁剪 x 坐标,默认 0 |
|
|
36
|
+
| `--image-y` | 否 | 封面裁剪 y 坐标,默认 0 |
|
|
37
|
+
| `--image-w` | 否 | 封面裁剪宽度,默认 0 |
|
|
38
|
+
| `--image-h` | 否 | 封面裁剪高度,默认 0 |
|
|
30
39
|
|
|
31
|
-
>
|
|
40
|
+
> 至少传一个可更新字段,可同时更新。`--description ""` 会清空课程描述。
|
|
32
41
|
|
|
33
|
-
|
|
42
|
+
### 高级设置更新 `course +advanced`
|
|
34
43
|
|
|
35
|
-
|
|
44
|
+
```bash
|
|
45
|
+
soke course +advanced \
|
|
46
|
+
--course-id <courseId> \
|
|
47
|
+
--study-type 2 \
|
|
48
|
+
--is-accelerate 1 \
|
|
49
|
+
--is-drag 0 \
|
|
50
|
+
--evaluate-required 1
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
| 参数 | 默认 | 说明 |
|
|
54
|
+
|------|------|------|
|
|
55
|
+
| `--course-id` | 必填 | 课程 ID |
|
|
56
|
+
| `--open-workrecord` | 0 | 待办推送,1 开启,0 不开启 |
|
|
57
|
+
| `--allow-after-expiration` | 1 | 截止后继续学习,1 允许,0 不允许 |
|
|
58
|
+
| `--open-face-recognition` | 0 | 课程前人脸识别,1 开启,0 不开启 |
|
|
59
|
+
| `--is-first-face` | 0 | 0 不识别,1 首次使用,2 每次进入 |
|
|
60
|
+
| `--learning-face-recognition` | 0 | 视频学习中人脸识别,1 开启,0 不开启 |
|
|
61
|
+
| `--face-recognition-times` | 1 | 视频学习中人脸识别次数 |
|
|
62
|
+
| `--study-type` | 1 | 学习模式,1 自由式,2 解锁式 |
|
|
63
|
+
| `--is-remind` | 0 | 未学提醒,1 开启,0 不开启 |
|
|
64
|
+
| `--remind-days` | 1 | 未学提醒推送周期,单位天 |
|
|
65
|
+
| `--remind-time` | 空 | 推送时间,格式 HH:MM:SS |
|
|
66
|
+
| `--remind-content` | 管理员提醒文案 | 未学提醒推送内容 |
|
|
67
|
+
| `--is-accelerate` | 1 | 视频或音频倍速,1 开启,0 不开启 |
|
|
68
|
+
| `--is-drag` | 0 | 视频是否可拖动,1 允许,0 不允许 |
|
|
69
|
+
| `--drag-type` | 1 | 1 仅首次播放不允许拖动,2 每次播放均不允许拖动 |
|
|
70
|
+
| `--evaluate-required` | 0 | 完成学习后打星评价,1 开启,0 不开启 |
|
|
71
|
+
| `--image-file` | 空 | 本地交流群二维码图片路径,命令内部上传到 OSS 并写入 `imageOssUrl`,不进入图片库;支持 jpg/jpeg/png |
|
|
72
|
+
| `--image-oss-url` | 空 | 已上传到 OSS/CDN 的交流群二维码完整访问 URL;与 `--image-file` 二选一 |
|
|
73
|
+
| `--is-hang` | 0 | 文档防挂机,1 开启,0 不开启 |
|
|
74
|
+
| `--hang-time` | 0 | 文档防挂机时间,单位分钟,最多 60 |
|
|
75
|
+
| `--comment-switch` | 1 | 课程评论,1 开启,0 不开启 |
|
|
76
|
+
|
|
77
|
+
该命令请求 `PUT /skills/course/advanceSetting/{id}`,请求体固定带 `action=advanced`。
|
|
78
|
+
|
|
79
|
+
**交流群二维码 `imageOssUrl` 取值规则:**
|
|
80
|
+
|
|
81
|
+
1. 如果用户提供的是本地二维码图片,直接使用 `--image-file`。命令会在内部调用 OSS 上传能力,使用 `Module: "image"` 上传,并把签名里的 `editorHost`(优先)或 `cdnhost` 与 OSS object 拼成完整 URL 写入 `imageOssUrl`。该图片不会进入图片库。
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
soke-cli course +advanced \
|
|
85
|
+
--course-id <courseId> \
|
|
86
|
+
--image-file "./qrcode.png"
|
|
87
|
+
```
|
|
36
88
|
|
|
37
|
-
|
|
38
|
-
|------|--------|------|-------------|
|
|
39
|
-
| 1 | **学习模式** `study_type` | 必修/选修模式、闯关模式(顺序解锁)、自由模式 | 后台 → 课程管理 → 课程列表 → 编辑 → 学习设置 |
|
|
40
|
-
| 2 | **倍速播放** `speed` | 允许学员使用倍速播放(0.5x - 2.0x) | 后台 → 课程管理 → 课程列表 → 编辑 → 学习设置 → 播放控制 |
|
|
41
|
-
| 3 | **人脸识别** `face_recognition` | 开启后学员学习时需人脸验证,防挂机/替学 | 后台 → 课程管理 → 课程列表 → 编辑 → 学习设置 → 人脸识别 |
|
|
42
|
-
| 4 | **学习提醒** `reminders` | 配置定时提醒推送(未完成学员、推送时间、频次) | 后台 → 课程管理 → 课程列表 → 编辑 → 学习设置 → 提醒设置 |
|
|
43
|
-
| 5 | **课程评价** `rating` | 开启学员评分/评论功能,可设为审核后展示 | 后台 → 课程管理 → 课程列表 → 编辑 → 评价设置 |
|
|
44
|
-
| 6 | **证书设置** `certificate` | 配置结业证书模板(背景图、字段、盖章)和通过条件 | 后台 → 课程管理 → 课程列表 → 编辑 → 证书设置 |
|
|
45
|
-
| 7 | **证书签名** `signature` | 配置证书上的签名图片(讲师/负责人手写签名) | 后台 → 课程管理 → 课程列表 → 编辑 → 证书设置 → 签名管理 |
|
|
46
|
-
| 8 | **钉钉二维码** `dingtalk_qrcode` | 配置钉钉群二维码,学员学习页展示入群入口 | 后台 → 课程管理 → 课程列表 → 编辑 → 学习设置 → 钉钉二维码 |
|
|
89
|
+
2. 如果用户已经有 OSS/CDN 完整访问 URL,直接传 `--image-oss-url`:
|
|
47
90
|
|
|
48
|
-
|
|
91
|
+
```bash
|
|
92
|
+
soke-cli course +advanced \
|
|
93
|
+
--course-id <courseId> \
|
|
94
|
+
--image-oss-url "$IMAGE_URL"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
3. `--image-file` 和 `--image-oss-url` 只能传一个。不要把图片 UUID、素材 UUID 或纯 `data.object` 当作 `imageOssUrl`;该字段需要可访问的完整图片 URL。
|
|
98
|
+
|
|
99
|
+
## ⚠️ CLI 暂不支持的设置
|
|
100
|
+
|
|
101
|
+
| 设置项 | 说明 | 后台操作路径 |
|
|
102
|
+
|--------|------|-------------|
|
|
103
|
+
| **证书设置** `certificate` | 配置结业证书模板(背景图、字段、盖章)和通过条件 | 后台 → 课程管理 → 课程列表 → 编辑 → 证书设置 |
|
|
104
|
+
| **证书签名** `signature` | 配置证书上的签名图片(讲师/负责人手写签名) | 后台 → 课程管理 → 课程列表 → 编辑 → 证书设置 → 签名管理 |
|
|
49
105
|
|
|
50
106
|
## 输出标准
|
|
51
107
|
|
|
@@ -57,18 +113,24 @@ soke course +update \
|
|
|
57
113
|
- 描述: {newDescription 摘要}
|
|
58
114
|
```
|
|
59
115
|
|
|
60
|
-
|
|
116
|
+
高级设置更新成功后:
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
✅ 课程高级设置更新成功
|
|
120
|
+
- 课程: {courseId}
|
|
121
|
+
- 结果: 1
|
|
122
|
+
```
|
|
61
123
|
|
|
62
124
|
## 注意事项
|
|
63
125
|
|
|
64
|
-
1. `course +update`
|
|
65
|
-
2.
|
|
66
|
-
3.
|
|
67
|
-
4.
|
|
126
|
+
1. `course +update` 支持标题、学分、描述、封面图、分类 ID 修改,以及通过 `--action close` 关闭课程
|
|
127
|
+
2. 封面图地址来自图片库列表接口返回的 `photoUri`
|
|
128
|
+
3. 分类修改可通过 `--category-id` 更新
|
|
129
|
+
4. 高级设置项之间可能存在依赖关系(如开启视频学习中人脸识别后再设置识别次数),建议按表格顺序逐项配置
|
|
68
130
|
5. 钉钉二维码设置与课程复制时的行为有关联(复制时不携带,见 `soke-course-copy`)
|
|
69
131
|
|
|
70
132
|
## 检查清单
|
|
71
133
|
|
|
72
|
-
- [ ] CLI 操作:title/description
|
|
73
|
-
- [ ]
|
|
74
|
-
- [ ]
|
|
134
|
+
- [ ] CLI 操作:title/description 或高级设置参数已准备完毕,courseId 确认存在
|
|
135
|
+
- [ ] 高级设置需求已识别,优先使用 `course +advanced`
|
|
136
|
+
- [ ] 证书/签名等未支持设置已提供对应后台路径
|
|
@@ -1,155 +1,123 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: soke-exam-question-pool
|
|
3
|
-
summary:
|
|
4
|
-
version:
|
|
5
|
-
description: "
|
|
3
|
+
summary: 授客学堂题库答题练习(拉取题库列表/选择题库/随机出题/实时判分/进度追踪),支持填空、判断、单选、多选、不定项五种题型,答题状态持久化
|
|
4
|
+
version: 2.0.0
|
|
5
|
+
description: "授客学堂题库答题练习:通过 soke-cli exam-question-pool 分页拉取可练习题库列表,选择题库后随机逐题出题、实时判分并反馈进度。支持填空、判断、单选、多选、不定项五种题型,答题状态本地持久化。当用户需要刷题、题库练习、随机答题或查看答题进度时使用。"
|
|
6
6
|
metadata:
|
|
7
7
|
requires:
|
|
8
|
-
bins: [
|
|
9
|
-
cliHelp:
|
|
8
|
+
bins: [soke-cli]
|
|
9
|
+
cliHelp: soke-cli exam-question-pool --help
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
#
|
|
12
|
+
# 可练习题库交互式练习系统
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
核心链路全量分页选库随机逐题实时反馈
|
|
15
15
|
|
|
16
|
-
##
|
|
16
|
+
## 交互流程总览
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
用户触发练习Step1全量分页拉取全部题库展示供选择Step2用户选择一个题库Step3拉取该题库全部题目加载答题状态Step4从未答题目中随机抽一道呈现判分Step5询问下一题结束重开循环Step4
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
2. `+get --pool-id <uuid>` 查询详情,确认题库列表的 `uuid` 与传入 `pool-id` 一致。
|
|
22
|
-
3. `+questions --pool-id <uuid>` 使用同一个 `pool-id` 查询题目。
|
|
23
|
-
4. `+finish --pool-id <uuid> --answers '<答案JSON>'` 进行题库练习交卷。
|
|
20
|
+
## Step1全量分页拉取题库列表
|
|
24
21
|
|
|
25
|
-
|
|
22
|
+
soke-cli exam-question-pool +list --page 1 --page-size 100 --status 1 --format json
|
|
26
23
|
|
|
27
|
-
|
|
24
|
+
循环拉取检查data.hasMore若为1则继续翻页直到hasMore为0合并所有页data.list按uuid去重
|
|
25
|
+
重要API分页存在跨页重叠bug相邻两页可能返回相同uuid的题库必须按uuid去重不能简单拼接
|
|
26
|
+
优先使用page-size100一次拉全减少分页次数和重叠风险
|
|
28
27
|
|
|
29
|
-
|
|
30
|
-
|----------|------|
|
|
31
|
-
| `+list` | 获取可练习题库列表,返回后续 `pool-id` 所需的题库 `uuid` |
|
|
32
|
-
| `+get` | 根据题库 `pool-id` 获取可练习题库详情 |
|
|
33
|
-
| `+questions` | 根据 `pool-id`(题库id),即题库列表的 `uuid`,获取题库题目 |
|
|
34
|
-
| `+finish` | 根据 `pool-id` 进行题库练习交卷 |
|
|
28
|
+
### 展示规则
|
|
35
29
|
|
|
36
|
-
|
|
30
|
+
每个题库一行选项只显示序号和题库名称格式为title
|
|
31
|
+
不要显示题目数question_count和状态pass_status
|
|
32
|
+
题库总数小于等于20一次性展示全部
|
|
33
|
+
题库总数大于20分页展示每页最多20个末尾追加下一页翻到底后追加上一页
|
|
37
34
|
|
|
38
|
-
|
|
35
|
+
## Step2用户选择题库
|
|
39
36
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
--page 1 \
|
|
43
|
-
--page-size 10
|
|
44
|
-
```
|
|
37
|
+
用户输入编号取pool_id为选中项的uuid
|
|
38
|
+
若用户说随机选一个从未完成题库中随机选全部完成则全量随机
|
|
45
39
|
|
|
46
|
-
|
|
47
|
-
|------|------|------|
|
|
48
|
-
| `--page` | 否 | 页码,从 1 开始,默认 1 |
|
|
49
|
-
| `--page-size` | 否 | 每页条数,默认 10 |
|
|
40
|
+
## Step3拉取题目和初始化状态
|
|
50
41
|
|
|
51
|
-
|
|
42
|
+
soke-cli exam-question-pool +questions --pool-id UUID --format json
|
|
52
43
|
|
|
53
|
-
|
|
54
|
-
|------|------|
|
|
55
|
-
| `uuid` | 题库 UUID,后续作为 `--pool-id` |
|
|
56
|
-
| `title` | 题库标题 |
|
|
57
|
-
| `description` | 题库描述,默认会清理简单 HTML 标签和换行 |
|
|
58
|
-
| `题目数量` | 来自 `question_count` |
|
|
59
|
-
| `创建时间` | 来自 `create_exercise_time` |
|
|
44
|
+
注意pool-id的值不要加引号否则会报参数格式错误
|
|
60
45
|
|
|
61
|
-
|
|
46
|
+
提取data.content中所有题目uuid type title choices answer show_answer analysis
|
|
62
47
|
|
|
63
|
-
|
|
48
|
+
### 答题状态文件
|
|
64
49
|
|
|
65
|
-
|
|
66
|
-
soke-cli exam-question-pool +get \
|
|
67
|
-
--pool-id "<上一步题库列表的 uuid,即题库id>"
|
|
68
|
-
```
|
|
50
|
+
路径C:\Users\soke\.qclaw\workspace\.exam-state\{pool-uuid}.json
|
|
69
51
|
|
|
70
|
-
|
|
71
|
-
|------|------|------|
|
|
72
|
-
| `--pool-id` | 是 | 题库 ID,必须来自 `+list` 默认输出中的 `uuid` |
|
|
52
|
+
格式pool_id uuid pool_title 题库名 total 5 correct 0 answered 空数组
|
|
73
53
|
|
|
74
|
-
|
|
54
|
+
文件不存在或pool_id不匹配新建answered为空数组
|
|
55
|
+
答完一题追加uuid到answered正确则correct加1
|
|
56
|
+
结束答题保留state
|
|
57
|
+
重新开始清空answered为空数组correct为0
|
|
58
|
+
answered长度大于等于total自动提示本轮全部答完
|
|
59
|
+
已展示但未作答的题目不算已答用户在题目展示后说退出结束退出答题等该题不计入answered不计入correct不出现在本轮总结表格中只有用户实际选择了选项或输入了答案并提交才算作答
|
|
75
60
|
|
|
76
|
-
|
|
77
|
-
|------|------|
|
|
78
|
-
| `uuid` | 题库 UUID,应与请求 `--pool-id` 一致 |
|
|
79
|
-
| `title` | 题库标题 |
|
|
80
|
-
| `description` | 题库描述,默认会清理简单 HTML 标签和换行 |
|
|
81
|
-
| `题目数量` | 来自 `question_count` |
|
|
82
|
-
| `创建时间` | 来自 `create_exercise_time` |
|
|
83
|
-
| `总题数` | 来自 `data.all_count` |
|
|
61
|
+
## Step4随机出题和呈现
|
|
84
62
|
|
|
63
|
+
### 随机逻辑
|
|
85
64
|
|
|
86
|
-
|
|
65
|
+
从data.content排除answered中已有uuid
|
|
66
|
+
剩余题目随机选一道
|
|
67
|
+
每次进入题库出题顺序随机不固定
|
|
87
68
|
|
|
88
|
-
|
|
69
|
+
### 用户输出红线
|
|
89
70
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
71
|
+
严禁在面向用户的任何输出中暴露内部标识字段包括但不限于uuid pool_id source_id category_id target_id dept_user_id company_id answer_type display
|
|
72
|
+
这些字段仅用于内部逻辑和状态文件不要出现在题目展示判分反馈进度统计小结表格或任何用户可见的文本中
|
|
73
|
+
如果需要区分题目在内部用uuid但在用户界面只用序号或题目内容来标识
|
|
74
|
+
用户看到的内容应该像正常的练习题一样干净简洁没有任何技术性ID字段
|
|
94
75
|
|
|
95
|
-
|
|
96
|
-
|------|------|------|
|
|
97
|
-
| `--pool-id` | 是 | 题库 ID,复用列表或详情中的同一个 UUID |
|
|
76
|
+
### 按题型呈现
|
|
98
77
|
|
|
99
|
-
|
|
78
|
+
A填空题type fill文本输入禁止变选择题
|
|
79
|
+
纯文本呈现题目提示用户输入答案
|
|
80
|
+
题目展示标题填空题第X题共N题题目将title中的span标签替换为括号加下划线提示多个空请用英文逗号分隔如答案1答案2答案3
|
|
81
|
+
重要提示示例绝不能使用当前题目的正确答案只能用答案1答案2答案3等占位符
|
|
82
|
+
填空判分show_answer为二维数组用户逗号分隔答案按序对应每个空匹配子数组中任一值即算对忽略首尾空格大小写不敏感全对正确部分对逐空标注全错错误
|
|
100
83
|
|
|
101
|
-
|
|
84
|
+
B判断题type determine
|
|
85
|
+
标题判断题第X题共N题选项A正确B错误判分show_answer A正确B错误
|
|
102
86
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
| `uuid` | 题目 UUID |
|
|
106
|
-
| `title` | 题目标题 |
|
|
107
|
-
| `type` | 题目类型 |
|
|
108
|
-
| `choices` | 选项列表 |
|
|
109
|
-
| `show_answer` | 展示答案 |
|
|
110
|
-
| `analysis` | 题目解析 |
|
|
87
|
+
C单选题type single_choice
|
|
88
|
+
标题单选题第X题共N题选项A choices0 title B choices1 title等判分show_answer如A用户选了选项A即对
|
|
111
89
|
|
|
112
|
-
|
|
90
|
+
D多选题type choice
|
|
91
|
+
标题多选题第X题共N题选项同单选判分用户所选字母集合与show_answer字母集合完全一致顺序无关
|
|
113
92
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
soke-cli exam-question-pool +list --page 1 --page-size 10
|
|
93
|
+
E不定项选择type uncertain_choice
|
|
94
|
+
同多选题标题标注不定项选择
|
|
117
95
|
|
|
118
|
-
|
|
119
|
-
soke-cli exam-question-pool +get --pool-id "<pool_uuid>"
|
|
96
|
+
## Step5判分反馈和循环
|
|
120
97
|
|
|
121
|
-
|
|
122
|
-
|
|
98
|
+
答完后纯文本反馈正确或错误你的答案正确答案解析如有进度已答n题共total题正确m题pct百分比
|
|
99
|
+
然后询问下一步下一题结束答题重新开始本轮
|
|
100
|
+
下一题保存状态回到Step4
|
|
101
|
+
结束答题保存状态显示本轮小结退出当前题目未作答则不计入总结
|
|
102
|
+
重新开始本轮清空answered和correct回到Step4
|
|
103
|
+
本轮答完时仅提供重新开始和结束
|
|
123
104
|
|
|
124
|
-
|
|
125
|
-
soke-cli exam-question-pool +finish \
|
|
126
|
-
--pool-id "<pool_uuid>" \
|
|
127
|
-
--answers '{"<question_uuid>":[0,1]}'
|
|
128
|
-
```
|
|
105
|
+
### 本轮小结规则
|
|
129
106
|
|
|
130
|
-
|
|
107
|
+
总结表格只包含实际作答的题目即uuid已写入answered的题目
|
|
108
|
+
已展示但用户说退出未作答的题目不出现在总结中下次进入该题库时仍会出现
|
|
109
|
+
进度统计以状态文件中的answered和correct为准不要自行脑补
|
|
131
110
|
|
|
132
|
-
|
|
111
|
+
## Shortcuts参考
|
|
133
112
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
--answers '{"A93647C7-7ECF-44D6-931D-DE84344DA580":["1","1","1"],"0E7E8283-EB5F-489C-9778-34A9B2F13BA7":[0]}'
|
|
138
|
-
```
|
|
113
|
+
list获取可练习题库列表
|
|
114
|
+
get获取题库详情
|
|
115
|
+
questions获取题库全部题目
|
|
139
116
|
|
|
140
|
-
|
|
141
|
-
|------|------|------|
|
|
142
|
-
| `--pool-id` | 是 | 题库 ID,复用列表或详情中的同一个 UUID |
|
|
143
|
-
| `--answers` | 是 | 答案 JSON 原文,key 为题目 ID,数组为答题选项 |
|
|
117
|
+
## 重要注意
|
|
144
118
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|------|------|
|
|
151
|
-
| `rightCount` | 答对题目数 |
|
|
152
|
-
| `allCount` | 全部题目数量 |
|
|
153
|
-
| `rate` | 题库练习进度 |
|
|
154
|
-
|
|
155
|
-
默认输出示例:`题库id:70DE9AFB-1C18-4F5C-B158-E25182ECBE1A,答对题目数:2,全部题目数量:0,题库练习进度:0%`。使用 `--format json` 时输出接口原始字段。
|
|
119
|
+
data.content数量可能与all_count不一致过滤题以实际返回为准
|
|
120
|
+
填空show_answer是string二维数组每空可能有多个可接受值
|
|
121
|
+
状态文件路径C:\Users\soke\.qclaw\workspace\.exam-state\uuid.json先确保目录存在
|
|
122
|
+
每次出题前根据当前状态重新计算未答题池保证随机性
|
|
123
|
+
填空题提示示例不能泄露正确答案统一用答案1答案2答案3占位
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: soke-task
|
|
3
|
-
summary:
|
|
4
|
-
version: 1.
|
|
5
|
-
description: "
|
|
3
|
+
summary: 授客学堂异步任务管理(创建统计任务/查询任务状态/获取报表文件),支持学习地图和课程学员统计的报表导出与统计生成,通过 soke-cli 操作
|
|
4
|
+
version: 1.1.0
|
|
5
|
+
description: "授客学堂异步任务管理:通过 soke-cli task 创建统计任务、查询任务状态、获取导出文件。支持学习地图学员统计和课程学员统计的报表导出与统计生成。当用户需要生成学习地图或课程学员统计报表、生成统计、查询任务状态或获取文件下载地址时使用。"
|
|
6
6
|
metadata:
|
|
7
7
|
requires:
|
|
8
8
|
bins: ["soke-cli"]
|
|
@@ -18,7 +18,10 @@ metadata:
|
|
|
18
18
|
- 任务接口是独立模块,命令统一使用 `soke-cli task ...`,不要使用 `soke-cli learning-map ...` 创建或查询任务。
|
|
19
19
|
- 创建任务后必须保存返回的 `data.id`,再调用 `+get` 查询任务详情。
|
|
20
20
|
- 默认用 `--format json` 获取结构化输出;需要人工快速查看时可省略 format 输出表格。
|
|
21
|
-
-
|
|
21
|
+
- 当前已知任务类型是学习地图学员统计和课程学员统计;`--module` 默认 `learningMapUser`,课程学员统计使用 `--module courseUser`。
|
|
22
|
+
- `--target-id` 是统一目标 ID:`--module learningMapUser` 时会提交为 `学习地图id`,`--module courseUser` 时会提交为 `课程id`。
|
|
23
|
+
- `--departments` 和 `--users` 可传英文逗号分隔 ID 或 JSON 数组;CLI 会转换为接口需要的对象数组。
|
|
24
|
+
- `--action` 默认 `export`,`--type` 默认 `aloneDept`。
|
|
22
25
|
- 查询 `soke-cli task +get --id "TASK-ID"` 后,必须根据创建任务时传入的 `--action` 判断状态字段:`action=export` 看 `data.export_status`,`action=report` 看 `data.status`。
|
|
23
26
|
|
|
24
27
|
## 命令
|
|
@@ -27,20 +30,36 @@ metadata:
|
|
|
27
30
|
|
|
28
31
|
```bash
|
|
29
32
|
soke-cli task +create \
|
|
30
|
-
--
|
|
33
|
+
--target-id "MAP-UUID" \
|
|
31
34
|
--learn-type "required" \
|
|
32
35
|
--type "aloneDept" \
|
|
36
|
+
--departments "130110584" \
|
|
37
|
+
--users "1302105847786" \
|
|
33
38
|
--custom-tags "job_number,position" \
|
|
34
39
|
--limit 4500 \
|
|
35
40
|
--format json
|
|
36
41
|
```
|
|
37
42
|
|
|
43
|
+
### 创建课程学员统计任务
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
soke-cli task +create \
|
|
47
|
+
--target-id "COURSE-UUID" \
|
|
48
|
+
--module courseUser \
|
|
49
|
+
--learn-type "required" \
|
|
50
|
+
--type "aloneDept" \
|
|
51
|
+
--departments '[130110584]' \
|
|
52
|
+
--users '[1302105847786]' \
|
|
53
|
+
--limit 4500 \
|
|
54
|
+
--format json
|
|
55
|
+
```
|
|
56
|
+
|
|
38
57
|
完整参数:
|
|
39
58
|
|
|
40
59
|
| 参数 | 必填 | 默认值 | 说明 |
|
|
41
60
|
|------|------|--------|------|
|
|
42
|
-
| `--
|
|
43
|
-
| `--module` | 否 | `learningMapUser` |
|
|
61
|
+
| `--target-id` | 是 | - | 目标 UUID;`learningMapUser` 时作为 `map_id`,`courseUser` 时作为 `course_id` |
|
|
62
|
+
| `--module` | 否 | `learningMapUser` | 任务模块:`learningMapUser` 学习地图学员统计,`courseUser` 课程学员统计 |
|
|
44
63
|
| `--learn-type` | 否 | `required` | 学习类型,如 `required` |
|
|
45
64
|
| `--learn-status` | 否 | 空 | 学习状态筛选:空值表示不限,`learning` 未完成,`finished` 已完成 |
|
|
46
65
|
| `--eligible-status` | 否 | 空 | 达标状态筛选,空值表示不限 |
|
|
@@ -49,6 +68,8 @@ soke-cli task +create \
|
|
|
49
68
|
| `--type` | 否 | `aloneDept` | 部门导出类型:`aloneDept` 单列导出,`manyDept` 部门多列导出 |
|
|
50
69
|
| `--is-leave` | 否 | `0` | 是否离职:`0` 否,`1` 是 |
|
|
51
70
|
| `--taskId` | 否 | 空字符串 | 任务 ID,默认空字符串 |
|
|
71
|
+
| `--departments` | 否 | 空 | 部门 ID 列表,多个 ID 用英文逗号分隔;也可传 JSON 数组 |
|
|
72
|
+
| `--users` | 否 | 空 | 用户 ID 列表,多个 ID 用英文逗号分隔;也可传 JSON 数组 |
|
|
52
73
|
| `--custom-tags` | 否 | 空 | 导出的自定义字段列表,多个字段用英文逗号分隔;也可传 JSON 字符串数组 |
|
|
53
74
|
|
|
54
75
|
响应关键字段:
|
|
@@ -89,7 +110,7 @@ soke-cli task +get --id "TASK-ID" --format json
|
|
|
89
110
|
|
|
90
111
|
```bash
|
|
91
112
|
TASK_ID=$(soke-cli task +create \
|
|
92
|
-
--
|
|
113
|
+
--target-id "$MAP_UUID" \
|
|
93
114
|
--learn-type "required" \
|
|
94
115
|
--type "aloneDept" \
|
|
95
116
|
--custom-tags "工号,岗位,入职日期" \
|
|
@@ -120,5 +141,6 @@ soke-cli task +get --id "$TASK_ID" --format json | jq -r '.data.status'
|
|
|
120
141
|
|
|
121
142
|
- `data.filePath` 为空:任务可能还未完成,等待后重新执行 `task +get --id "TASK-ID" --format json`。
|
|
122
143
|
- `未登录授权`:按 `soke-shared` 执行 `soke-cli auth login` 后重试。
|
|
123
|
-
- 自定义字段没有导出:确认已通过 `--custom-tags "字段1,字段2"`
|
|
124
|
-
- 任务创建失败:确认 `--
|
|
144
|
+
- 自定义字段没有导出:确认已通过 `--custom-tags "字段1,字段2"` 指定,字段名需与当前任务类型支持的自定义字段一致。
|
|
145
|
+
- 任务创建失败:确认 `--target-id` 与 `--module` 匹配;学习地图用 `--module learningMapUser`,课程用 `--module courseUser`。
|
|
146
|
+
- 部门或用户筛选无效:先用 `soke-cli assign +list-departments` / `soke-cli assign +list-users` 确认可用 ID,再传给 `--departments` / `--users`。
|