@sokeai/cli 1.0.77 → 1.0.78
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 +2 -2
- package/scripts/local-test.js +1 -1
- package/scripts/test-auto-detect.js +20 -3
- package/skills/README.md +25 -174
- package/skills/SKILL.md +17 -239
- package/skills/mono/README.md +10 -0
- package/skills/mono/SKILL.md +223 -0
- package/skills/{soke-course/soke-cli/345/256/211/350/243/205/346/214/207/345/215/227.md → mono/references/installation.md} +0 -3
- package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/README.md +1 -3
- package/skills/mono/references/modules/soke-ai-coach-director/platform/soke-ai-training/soke-ai-training.md +123 -0
- package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/self-learning-engine.md +0 -4
- package/skills/{soke-ai-training/SKILL.md → mono/references/modules/soke-ai-training/MODULE.md} +1 -1
- package/skills/mono/references/modules/soke-assign/README.md +308 -0
- package/skills/{soke-certificate/SKILL.md → mono/references/modules/soke-certificate/MODULE.md} +2 -2
- package/skills/mono/references/modules/soke-course/MODULE.md +402 -0
- package/skills/mono/references/modules/soke-course/README.md +291 -0
- package/skills/{soke-course → mono/references/modules/soke-course}/references/examples.md +3 -3
- package/skills/{soke-exam/SKILL.md → mono/references/modules/soke-exam/MODULE.md} +1 -1
- package/skills/{soke-learning-map/SKILL.md → mono/references/modules/soke-learning-map/MODULE.md} +5 -6
- package/skills/{soke-learning-profile/SKILL.md → mono/references/modules/soke-learning-profile/MODULE.md} +2 -2
- package/skills/mono/references/modules/soke-lesson/README.md +53 -0
- package/skills/mono/references/modules/soke-material/README.md +49 -0
- package/skills/{soke-photo-gallery/SKILL.md → mono/references/modules/soke-photo-gallery/MODULE.md} +2 -3
- package/skills/mono/references/modules/soke-supervisor/MODULE.md +186 -0
- package/skills/mono/references/modules/soke-task/MODULE.md +146 -0
- package/skills/{soke-training-demand/SKILL.md → mono/references/modules/soke-training-demand/MODULE.md} +1 -1
- package/skills/mono/references/shared/cli-basics.md +185 -0
- package/skills/mono/scripts/check_readiness.py +28 -0
- package/skills/mono/scripts/gate_check.py +112 -0
- package/skills/mono/scripts/validate_operations.py +403 -0
- package/skills/multi/README.md +18 -0
- package/skills/multi/soke-ai-coach-director/CHANGELOG.md +203 -0
- package/skills/multi/soke-ai-coach-director/README.md +121 -0
- package/skills/multi/soke-ai-coach-director/SKILL.md +220 -0
- package/skills/multi/soke-ai-coach-director/assets/ERRORS-TEMPLATE.md +5 -0
- package/skills/multi/soke-ai-coach-director/assets/FEATURE_REQUESTS-TEMPLATE.md +5 -0
- package/skills/multi/soke-ai-coach-director/assets/LEARNINGS-TEMPLATE.md +44 -0
- package/skills/multi/soke-ai-coach-director/assets/SKILL-TEMPLATE.md +177 -0
- package/skills/multi/soke-ai-coach-director/coaching/knowledge-packager/knowledge-packager.md +91 -0
- package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part1-basic.md +59 -0
- package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part2-roles.md +97 -0
- package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part3-flow.md +72 -0
- package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part4-scoring.md +87 -0
- package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part5-constraints.md +48 -0
- package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/prompt-engineer.md +76 -0
- package/skills/multi/soke-ai-coach-director/coaching/prompt-optimizer/prompt-optimizer.md +381 -0
- package/skills/multi/soke-ai-coach-director/coaching/role-profiler/role-profiler.md +87 -0
- package/skills/multi/soke-ai-coach-director/platform/adapters/README.md +68 -0
- package/skills/multi/soke-ai-coach-director/platform/adapters/qclaw.md +67 -0
- package/skills/multi/soke-ai-coach-director/platform/adapters/workbuddy.md +44 -0
- package/skills/multi/soke-ai-coach-director/platform/adapters/wukong.md +70 -0
- package/skills/multi/soke-ai-coach-director/platform/adapters/zework.md +89 -0
- package/skills/multi/soke-ai-coach-director/platform/api-fallback.md +262 -0
- package/skills/multi/soke-ai-coach-director/platform/interaction.md +103 -0
- package/skills/multi/soke-ai-coach-director/platform/publish-gate.md +44 -0
- package/skills/multi/soke-ai-coach-director/platform/resource-finalizer.md +103 -0
- package/skills/{soke-ai-coach-director → multi/soke-ai-coach-director}/platform/soke-ai-training/soke-ai-training.md +1 -1
- package/skills/multi/soke-ai-coach-director/platform/sync-engine.md +39 -0
- package/skills/multi/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 +265 -0
- package/skills/multi/soke-ai-coach-director/references/cases/AI/351/231/252/347/273/203Bad Case/346/240/267/346/234/254/345/272/223.md" +206 -0
- package/skills/multi/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 +666 -0
- package/skills/multi/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 +213 -0
- package/skills/multi/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 +229 -0
- package/skills/multi/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 +833 -0
- package/skills/multi/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 +239 -0
- package/skills/multi/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 +249 -0
- package/skills/multi/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 +282 -0
- package/skills/multi/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 +254 -0
- package/skills/multi/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 +264 -0
- package/skills/multi/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 +223 -0
- package/skills/multi/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 +304 -0
- package/skills/multi/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 +42 -0
- package/skills/multi/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 +23 -0
- package/skills/multi/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 +34 -0
- package/skills/multi/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 +26 -0
- package/skills/multi/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 +30 -0
- package/skills/multi/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 +254 -0
- package/skills/multi/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 +96 -0
- package/skills/multi/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 +20 -0
- package/skills/multi/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 +434 -0
- package/skills/multi/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 +22 -0
- package/skills/multi/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 +261 -0
- package/skills/multi/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 +354 -0
- package/skills/multi/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 +26 -0
- package/skills/multi/soke-ai-coach-director/references/cases//345/233/233/345/244/247/345/234/272/346/231/257_GoodCase_BadCase_20260701.md +194 -0
- package/skills/multi/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 +41 -0
- package/skills/multi/soke-ai-coach-director/references/change-log-partwise-refactor.md +74 -0
- package/skills/multi/soke-ai-coach-director/references/env-check.md +146 -0
- package/skills/multi/soke-ai-coach-director/references/exec-common.md +126 -0
- package/skills/multi/soke-ai-coach-director/references/exec-handbook.md +621 -0
- package/skills/multi/soke-ai-coach-director/references/exec-part1.md +86 -0
- package/skills/multi/soke-ai-coach-director/references/exec-part2.md +145 -0
- package/skills/multi/soke-ai-coach-director/references/exec-part3.md +91 -0
- package/skills/multi/soke-ai-coach-director/references/exec-part4.md +187 -0
- package/skills/multi/soke-ai-coach-director/references/gate-check-matrix.md +46 -0
- package/skills/{soke-learning-map/soke-cli/345/256/211/350/243/205/346/214/207/345/215/227.md → multi/soke-ai-coach-director/references/installation.md} +0 -3
- package/skills/multi/soke-ai-coach-director/references/micro-tune-labels.md +30 -0
- package/skills/multi/soke-ai-coach-director/references/platform-api-pitfalls.md +49 -0
- package/skills/multi/soke-ai-coach-director/references/role-resource-matching.md +45 -0
- package/skills/multi/soke-ai-coach-director/references/self-improvement-examples.md +373 -0
- package/skills/multi/soke-ai-coach-director/references/self-learning-engine.md +485 -0
- package/skills/multi/soke-ai-coach-director/references/shared.md +185 -0
- package/skills/multi/soke-ai-coach-director/references/subs/part1/SOP.md +17 -0
- package/skills/multi/soke-ai-coach-director/references/subs/part2/SOP.md +34 -0
- package/skills/multi/soke-ai-coach-director/references/subs/part3/SOP.md +27 -0
- package/skills/multi/soke-ai-coach-director/references/subs/part4/SOP.md +31 -0
- package/skills/multi/soke-ai-coach-director/references/subs/publish/SOP.md +81 -0
- package/skills/multi/soke-ai-coach-director/references/subs/tune/SOP.md +92 -0
- package/skills/multi/soke-ai-coach-director/references/verified-cli-cheatsheet.md +56 -0
- package/skills/multi/soke-ai-coach-director/scripts/gate_check.py +112 -0
- package/skills/multi/soke-ai-coach-director/scripts/validate_operations.py +403 -0
- package/skills/multi/soke-ai-training/SKILL.md +247 -0
- package/skills/{soke-cli/345/256/211/350/243/205/346/214/207/345/215/227.md → multi/soke-ai-training/references/installation.md} +0 -3
- package/skills/multi/soke-ai-training/references/shared.md +185 -0
- package/skills/{soke-assign → multi/soke-assign}/README.md +3 -5
- package/skills/multi/soke-assign/SKILL.md +101 -0
- package/skills/{soke-course/SKILL.md → multi/soke-assign/references/dependencies/soke-course.md} +1 -1
- package/skills/multi/soke-assign/references/dependencies/soke-exam.md +600 -0
- package/skills/multi/soke-assign/references/installation.md +451 -0
- package/skills/multi/soke-assign/references/shared.md +185 -0
- package/skills/multi/soke-certificate/SKILL.md +715 -0
- package/skills/multi/soke-certificate/references/installation.md +451 -0
- package/skills/multi/soke-certificate/references/shared.md +185 -0
- package/skills/{soke-course → multi/soke-course}/README.md +5 -7
- package/skills/multi/soke-course/SKILL.md +399 -0
- package/skills/multi/soke-course/agents/openai.yaml +7 -0
- package/skills/multi/soke-course/examples/create-basic.md +70 -0
- package/skills/multi/soke-course/references/course-list-courses.md +216 -0
- package/skills/multi/soke-course/references/dependencies/soke-assign.md +103 -0
- package/skills/multi/soke-course/references/dependencies/soke-lesson.md +119 -0
- package/skills/multi/soke-course/references/dependencies/soke-material.md +105 -0
- package/skills/multi/soke-course/references/examples.md +480 -0
- package/skills/multi/soke-course/references/installation.md +451 -0
- package/skills/multi/soke-course/references/intent-cases.md +99 -0
- package/skills/multi/soke-course/references/shared.md +185 -0
- package/skills/multi/soke-course/references/sop-full-workflow.md +177 -0
- package/skills/multi/soke-course/references/sop-lesson-types.md +66 -0
- package/skills/multi/soke-course/references/sop-publish-check.md +76 -0
- package/skills/multi/soke-course/references/subs/ai/SOP.md +153 -0
- package/skills/multi/soke-course/references/subs/category/SOP.md +112 -0
- package/skills/multi/soke-course/references/subs/charge/SOP.md +107 -0
- package/skills/multi/soke-course/references/subs/copy/SOP.md +80 -0
- package/skills/multi/soke-course/references/subs/publish/SOP.md +168 -0
- package/skills/multi/soke-course/references/subs/query/SOP.md +165 -0
- package/skills/multi/soke-course/references/subs/settings/SOP.md +136 -0
- package/skills/multi/soke-course/references/subs/template/SOP.md +223 -0
- package/skills/multi/soke-course/references/troubleshoot.md +68 -0
- package/skills/multi/soke-course/scripts/check_readiness.py +87 -0
- package/skills/multi/soke-exam/SKILL.md +598 -0
- package/skills/multi/soke-exam/references/exam-get-exam-user.md +212 -0
- package/skills/multi/soke-exam/references/installation.md +451 -0
- package/skills/multi/soke-exam/references/shared.md +185 -0
- package/skills/multi/soke-exam-question-pool/SKILL.md +121 -0
- package/skills/multi/soke-exam-question-pool/references/installation.md +451 -0
- package/skills/multi/soke-exam-question-pool/references/shared.md +185 -0
- package/skills/multi/soke-learning-map/SKILL.md +553 -0
- package/skills/multi/soke-learning-map/references/dependencies/soke-assign.md +103 -0
- package/skills/{soke-task/SKILL.md → multi/soke-learning-map/references/dependencies/soke-task.md} +1 -1
- package/skills/multi/soke-learning-map/references/installation.md +451 -0
- package/skills/multi/soke-learning-map/references/shared.md +185 -0
- package/skills/multi/soke-learning-profile/SKILL.md +221 -0
- package/skills/multi/soke-learning-profile/references/installation.md +451 -0
- package/skills/multi/soke-learning-profile/references/shared.md +185 -0
- package/skills/multi/soke-lesson/SKILL.md +117 -0
- package/skills/multi/soke-lesson/references/installation.md +451 -0
- package/skills/multi/soke-lesson/references/shared.md +185 -0
- package/skills/multi/soke-material/SKILL.md +103 -0
- package/skills/multi/soke-material/references/installation.md +451 -0
- package/skills/multi/soke-material/references/shared.md +185 -0
- package/skills/multi/soke-photo-gallery/SKILL.md +284 -0
- package/skills/multi/soke-photo-gallery/references/installation.md +451 -0
- package/skills/multi/soke-photo-gallery/references/shared.md +185 -0
- package/skills/multi/soke-shared/SKILL.md +183 -0
- package/skills/multi/soke-supervisor/SKILL.md +184 -0
- package/skills/multi/soke-supervisor/references/installation.md +451 -0
- package/skills/multi/soke-supervisor/references/shared.md +185 -0
- package/skills/multi/soke-task/SKILL.md +144 -0
- package/skills/multi/soke-task/references/installation.md +451 -0
- package/skills/multi/soke-task/references/shared.md +185 -0
- package/skills/multi/soke-training-demand/SKILL.md +219 -0
- package/skills/multi/soke-training-demand/references/installation.md +451 -0
- package/skills/multi/soke-training-demand/references/shared.md +185 -0
- package/skills/soke-ai-coach-director/scripts/activator.sh +0 -4
- package/skills/soke-ai-coach-director/scripts/error-detector.sh +0 -4
- package/skills/soke-ai-coach-director/scripts/extract-skill.sh +0 -7
- package/skills/soke-course/scripts/check_readiness.sh +0 -82
- /package/skills/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/references/cases/AI/351/231/252/347/273/203Bad Case/346/240/267/346/234/254/345/272/223.md" +0 -0
- /package/skills/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/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/{soke-ai-coach-director → mono}/references/cases//345/233/233/345/244/247/345/234/272/346/231/257_GoodCase_BadCase_20260701.md" +0 -0
- /package/skills/{soke-ai-coach-director → mono}/references/cases//346/241/210/344/276/213/345/272/223/350/241/245/345/205/205_2026-06-24.md" +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/CHANGELOG.md +0 -0
- /package/skills/{soke-ai-coach-director/SKILL.md → mono/references/modules/soke-ai-coach-director/MODULE.md} +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/assets/ERRORS-TEMPLATE.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/assets/FEATURE_REQUESTS-TEMPLATE.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/assets/LEARNINGS-TEMPLATE.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/assets/SKILL-TEMPLATE.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/knowledge-packager/knowledge-packager.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part1-basic.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part2-roles.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part3-flow.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part4-scoring.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part5-constraints.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/prompt-engineer.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-optimizer/prompt-optimizer.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/role-profiler/role-profiler.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/README.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/qclaw.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/workbuddy.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/wukong.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/zework.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/api-fallback.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/interaction.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/publish-gate.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/resource-finalizer.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/sync-engine.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/change-log-partwise-refactor.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/env-check.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-common.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-handbook.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-part1.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-part2.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-part3.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-part4.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/gate-check-matrix.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/micro-tune-labels.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/platform-api-pitfalls.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/role-resource-matching.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/self-improvement-examples.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/part1/SOP.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/part2/SOP.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/part3/SOP.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/part4/SOP.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/publish/SOP.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/tune/SOP.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/verified-cli-cheatsheet.md +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/scripts/gate_check.py +0 -0
- /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/scripts/validate_operations.py +0 -0
- /package/skills/{soke-assign/SKILL.md → mono/references/modules/soke-assign/MODULE.md} +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/agents/openai.yaml +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/examples/create-basic.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/course-list-courses.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/intent-cases.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/sop-full-workflow.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/sop-lesson-types.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/sop-publish-check.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/ai/SOP.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/category/SOP.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/charge/SOP.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/copy/SOP.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/publish/SOP.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/query/SOP.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/settings/SOP.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/template/SOP.md +0 -0
- /package/skills/{soke-course → mono/references/modules/soke-course}/references/troubleshoot.md +0 -0
- /package/skills/{soke-exam → mono/references/modules/soke-exam}/references/exam-get-exam-user.md +0 -0
- /package/skills/{soke-exam-question-pool/SKILL.md → mono/references/modules/soke-exam-question-pool/MODULE.md} +0 -0
- /package/skills/{soke-lesson/SKILL.md → mono/references/modules/soke-lesson/MODULE.md} +0 -0
- /package/skills/{soke-material/SKILL.md → mono/references/modules/soke-material/MODULE.md} +0 -0
- /package/skills/{soke-shared/SKILL.md → mono/references/modules/soke-shared/MODULE.md} +0 -0
- /package/skills/{soke-ai-coach-director → multi/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/{soke-ai-coach-director → multi/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/{soke-lesson → multi/soke-lesson}/README.md +0 -0
- /package/skills/{soke-material → multi/soke-material}/README.md +0 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: soke-course-category
|
|
3
|
+
version: 1.1.0
|
|
4
|
+
description: 分类管理 — 查询课程分类体系(6级层级),移动端展示前3级
|
|
5
|
+
tags: [soke, category, classification, hierarchy]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 分类管理
|
|
9
|
+
|
|
10
|
+
## 触发描述
|
|
11
|
+
|
|
12
|
+
在创建课程前需要选择或查询课程所属分类时触发。分类体系为 6 级树形层级结构,移动端仅展示前 3 级。
|
|
13
|
+
|
|
14
|
+
## 分类体系
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
一级分类
|
|
18
|
+
└── 二级分类
|
|
19
|
+
└── 三级分类
|
|
20
|
+
└── 四级分类
|
|
21
|
+
└── 五级分类
|
|
22
|
+
└── 六级分类
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
- **管理后台**:展示完整 6 级
|
|
26
|
+
- **移动端(学员侧)**:仅展示前 3 级(一二三级)
|
|
27
|
+
|
|
28
|
+
## 执行流程
|
|
29
|
+
|
|
30
|
+
### Step 1: 查询分类 `course +list-categories`
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
soke course +list-categories
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
无必填参数,返回当前租户下完整的分类树。
|
|
37
|
+
|
|
38
|
+
可选参数:
|
|
39
|
+
|
|
40
|
+
| 参数 | 必填 | 说明 |
|
|
41
|
+
|------|------|------|
|
|
42
|
+
| `--parent-id` | 否 | 查询指定父分类下的子分类 |
|
|
43
|
+
| `--level` | 否 | 按层级过滤(1-6) |
|
|
44
|
+
|
|
45
|
+
返回每个分类的 `id`、`name`、`parent_id`、`level`。
|
|
46
|
+
|
|
47
|
+
### Step 2: 分类选择(弹窗交互)
|
|
48
|
+
|
|
49
|
+
根据匹配结果使用 `ask_user_question` 弹窗:
|
|
50
|
+
|
|
51
|
+
| 场景 | 弹窗策略 |
|
|
52
|
+
|------|---------|
|
|
53
|
+
| 用户已指定分类名,匹配到唯一结果 | 不弹窗,直接使用 |
|
|
54
|
+
| 匹配到多个结果 | 弹窗列匹配项,最后加 `🆕 新建分类` |
|
|
55
|
+
| 用户未指定分类 | 弹窗列一级分类列表,最后加 `🆕 新建分类` |
|
|
56
|
+
| 用户说"随便" | 取第一个一级分类 |
|
|
57
|
+
|
|
58
|
+
弹窗示例:
|
|
59
|
+
```
|
|
60
|
+
ask_user_question
|
|
61
|
+
question: "选择课程分类"
|
|
62
|
+
header: "分类"
|
|
63
|
+
options:
|
|
64
|
+
- label: "📁 技术研发" description: "一级分类 · 含 8 个子分类"
|
|
65
|
+
- label: "📁 企业管理" description: "一级分类 · 含 5 个子分类"
|
|
66
|
+
- label: "📁 产品设计" description: "一级分类 · 含 3 个子分类"
|
|
67
|
+
- label: "🆕 新建分类" description: "前往管理后台新建分类"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Step 3: 新建分类(CLI 不支持)
|
|
71
|
+
|
|
72
|
+
若用户选择 `🆕 新建分类`,告知操作路径:
|
|
73
|
+
|
|
74
|
+
> "CLI 暂不支持新建分类。请前往管理后台操作:
|
|
75
|
+
> **后台 → 课程管理 → 分类设置 → 新增分类**
|
|
76
|
+
>
|
|
77
|
+
> 创建时会要求填写:分类名称、选择父级分类、设定排序序号。
|
|
78
|
+
> 分类可分六级,手机端学员只能看到前三级。
|
|
79
|
+
>
|
|
80
|
+
> 新建完成后请回复"分类建好了",我将重新拉取分类列表继续。"
|
|
81
|
+
|
|
82
|
+
用户确认后 → 重新执行 Step 1 → 再弹窗选择。
|
|
83
|
+
|
|
84
|
+
## 输出标准
|
|
85
|
+
|
|
86
|
+
以缩进层级列表形式展示分类树(供参考,弹窗交互时不需要打印全部):
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
📁 技术研发 (ID: 1, L1)
|
|
90
|
+
📁 前端开发 (ID: 12, L2)
|
|
91
|
+
📁 React (ID: 121, L3)
|
|
92
|
+
📁 基础入门 (ID: 1211, L4)
|
|
93
|
+
...
|
|
94
|
+
📁 企业管理 (ID: 2, L1)
|
|
95
|
+
...
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## 注意事项
|
|
99
|
+
|
|
100
|
+
1. 分类为租户级别数据,不同租户分类体系独立
|
|
101
|
+
2. 课程必须归属于一个末级分类(通常是第 4-6 级)
|
|
102
|
+
3. 移动端仅展示前 3 级,创建分类时需考虑移动端用户体验
|
|
103
|
+
4. 删除分类前需清空该分类下的所有课程
|
|
104
|
+
5. 分类层级一旦确定不建议频繁调整,会影响已有课程归类
|
|
105
|
+
|
|
106
|
+
## 检查清单
|
|
107
|
+
|
|
108
|
+
- [ ] 已通过 list-categories 获取完整分类树
|
|
109
|
+
- [ ] 选择分类时已使用 `ask_user_question` 弹窗
|
|
110
|
+
- [ ] 弹窗最后一项始终为 `🆕 新建分类`
|
|
111
|
+
- [ ] 用户选新建时已告知后台操作路径
|
|
112
|
+
- [ ] 确认目标分类 ID 存在于返回结果中
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: soke-course-charge
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: 收费设置 — 付费课程与试学规则说明,全部需后台操作
|
|
5
|
+
tags: [soke, charge, pricing, payment, trial, alipay]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 收费设置
|
|
9
|
+
|
|
10
|
+
## 触发描述
|
|
11
|
+
|
|
12
|
+
用户需要为课程配置收费模式、设置价格、开通试学功能时触发本技能。**全部收费相关操作均需通过管理后台完成,CLI 不支持任何收费配置。**
|
|
13
|
+
|
|
14
|
+
## ⚠️ CLI 不支持
|
|
15
|
+
|
|
16
|
+
**所有收费设置操作均需通过后台:**
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
后台 → 课程管理 → 课程列表 → 编辑 → 收费设置
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## 收费规则说明
|
|
23
|
+
|
|
24
|
+
### 1. 支付宝商户密钥
|
|
25
|
+
|
|
26
|
+
配置收费前必须先在系统层面绑定支付宝商户密钥:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
后台 → 系统设置 → 支付设置 → 支付宝配置
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
需提供:
|
|
33
|
+
- 支付宝商户 PID
|
|
34
|
+
- 支付宝商户密钥(MD5 Key)
|
|
35
|
+
- 支付宝公钥
|
|
36
|
+
|
|
37
|
+
未配置商户密钥将无法开启任何课程收费。
|
|
38
|
+
|
|
39
|
+
### 2. 付费课程试学规则
|
|
40
|
+
|
|
41
|
+
试学功能仅在**同时满足以下所有条件**时可用:
|
|
42
|
+
|
|
43
|
+
| 条件 | 说明 |
|
|
44
|
+
|------|------|
|
|
45
|
+
| 课程为付费课程 | 已设定价格且支付通道可用 |
|
|
46
|
+
| 课件数量 ≥ 2 | 课程内至少有 2 节课时 |
|
|
47
|
+
| 课件类型含视频/音频/文档 | 课时中包含 `video`、`audio` 或 `document` 类型的课件 |
|
|
48
|
+
|
|
49
|
+
> ⚠️ 纯图文课件(不含视频/音频/文档)不满足试学条件。
|
|
50
|
+
|
|
51
|
+
**试学模式规则:**
|
|
52
|
+
|
|
53
|
+
- 试学期间学员可免费观看指定数量的课件
|
|
54
|
+
- 试学不记录学习进度 — 付费购买后从第 1 节重新开始
|
|
55
|
+
- 试学可配置开放课时数(如开放前 2 节)
|
|
56
|
+
- 试学可配置时间限制(如 7 天内有效)
|
|
57
|
+
|
|
58
|
+
### 3. 价格设置
|
|
59
|
+
|
|
60
|
+
- 支持固定价格(一口价)
|
|
61
|
+
- 支持划线价(原价 ¥199 → 现价 ¥99)
|
|
62
|
+
- 支持限时优惠(设置优惠截止时间)
|
|
63
|
+
- 价格单位为人民币(元),精确到小数点后两位
|
|
64
|
+
|
|
65
|
+
### 4. 学员端行为
|
|
66
|
+
|
|
67
|
+
- 免费课程:学员直接加入学习
|
|
68
|
+
- 付费课程未购买:可试学(如已开启),或看到课程介绍页 + 购买按钮
|
|
69
|
+
- 付费课程已购买:正常学习,记录进度,可获得证书(如已配置)
|
|
70
|
+
|
|
71
|
+
## 输出标准
|
|
72
|
+
|
|
73
|
+
当用户询问收费设置时,输出:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
⚠️ 收费设置为后台操作,CLI 不支持
|
|
77
|
+
|
|
78
|
+
配置路径:后台 → 课程管理 → 课程列表 → 编辑 → 收费设置
|
|
79
|
+
|
|
80
|
+
前置条件:
|
|
81
|
+
1. 支付宝商户密钥已配置(系统设置 → 支付设置)
|
|
82
|
+
2. 课程已创建且课件已添加
|
|
83
|
+
|
|
84
|
+
试学条件:
|
|
85
|
+
- 付费课程
|
|
86
|
+
- 课件 ≥ 2 节
|
|
87
|
+
- 包含 video/audio/document 类型课件
|
|
88
|
+
- 试学不记录学习进度
|
|
89
|
+
|
|
90
|
+
如需配置,请前往后台操作。
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## 注意事项
|
|
94
|
+
|
|
95
|
+
1. 收费是课程的高级属性,与课程发布状态无关 — 未发布的课程也可以配置收费
|
|
96
|
+
2. 修改价格不会影响已购买学员,已支付订单不受影响
|
|
97
|
+
3. 关闭收费(改为免费)后,已购学员权益保留,新学员免费学习
|
|
98
|
+
4. 试学课件必须在课程课件列表中,不能额外上传独立试学内容
|
|
99
|
+
5. 试学数据与正式学习数据完全隔离,不产生进度混淆
|
|
100
|
+
6. 退款、发票等支付后操作不在此 Skill 范围,需走财务后台流程
|
|
101
|
+
|
|
102
|
+
## 检查清单
|
|
103
|
+
|
|
104
|
+
- [ ] 用户已了解收费配置全部需后台操作
|
|
105
|
+
- [ ] 如涉及试学,已告知前置条件(付费 + 课件≥2 + 含视频/音频/文档)
|
|
106
|
+
- [ ] 如涉及支付,已提醒支付宝商户密钥配置前置
|
|
107
|
+
- [ ] 已提醒试学不记录学习进度的关键规则
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: soke-course-copy
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: 课程复制 — 复制规则说明,全部需后台操作
|
|
5
|
+
tags: [soke, copy, duplicate, clone, course]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 课程复制
|
|
9
|
+
|
|
10
|
+
## 触发描述
|
|
11
|
+
|
|
12
|
+
用户需要基于已有课程创建副本时触发本技能。**课程复制的所有操作均需通过管理后台完成,CLI 不支持。**
|
|
13
|
+
|
|
14
|
+
## ⚠️ CLI 不支持
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
后台 → 课程管理 → 课程列表 → 课程操作 → 复制
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 复制规则
|
|
21
|
+
|
|
22
|
+
### 会复制的内容
|
|
23
|
+
|
|
24
|
+
| 内容 | 复制后状态 | 说明 |
|
|
25
|
+
|------|-----------|------|
|
|
26
|
+
| **课件(lessons)** | 进度归零 (progress=0) | 所有课件完整复制,但学习计数从 0 开始 |
|
|
27
|
+
| **素材(materials)** | 完整复制 | 课件关联的素材资源(视频/音频/文档)完整复制 |
|
|
28
|
+
| **作业(homework)** | 完整复制 | 作业配置和内容一并复制 |
|
|
29
|
+
| **测验(quizzes)** | 作为新考试复制 | 原有测验以独立的新考试形式复制到新课程中 |
|
|
30
|
+
| **基础设置** | 完整复制 | 标题(可追加"-副本")、描述、分类等基础信息 |
|
|
31
|
+
| **高级设置** | 除钉钉二维码外全部复制 | 学习模式、人脸识别、提醒、评价、证书、签名等均复制 |
|
|
32
|
+
| **收费设置** | 完整复制 | 价格、试学配置等收费设置一并复制 |
|
|
33
|
+
|
|
34
|
+
### 不会复制的内容
|
|
35
|
+
|
|
36
|
+
| 内容 | 原因 |
|
|
37
|
+
|------|------|
|
|
38
|
+
| **钉钉二维码** | 群二维码与具体课程绑定,新课程需重新上传 |
|
|
39
|
+
|
|
40
|
+
### 复制结果
|
|
41
|
+
|
|
42
|
+
- 新课程进入 **未发布列表**(status=0)
|
|
43
|
+
- 所有学习进度归零(progress=0)
|
|
44
|
+
- 与原课程数据完全隔离,互不干扰
|
|
45
|
+
- 新课程标题默认追加"-副本"后缀,可手动修改
|
|
46
|
+
|
|
47
|
+
## 输出标准
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
⚠️ 课程复制为后台操作,CLI 不支持
|
|
51
|
+
|
|
52
|
+
操作路径:后台 → 课程管理 → 课程列表 → 找到目标课程 → 操作 → 复制
|
|
53
|
+
|
|
54
|
+
复制规则:
|
|
55
|
+
✅ 会复制:课件(progress=0)、素材、作业、测验(新考试)、基础设置、
|
|
56
|
+
高级设置(除钉钉二维码)、收费设置
|
|
57
|
+
❌ 不复制:钉钉二维码
|
|
58
|
+
|
|
59
|
+
复制结果:
|
|
60
|
+
- 新课程进入未发布列表 (status=0)
|
|
61
|
+
- 所有进度归零
|
|
62
|
+
- 数据与原课程完全隔离
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## 注意事项
|
|
66
|
+
|
|
67
|
+
1. 复制操作为异步任务,大课程(课件数 > 100)可能耗时较长
|
|
68
|
+
2. 视频素材引用原始文件而非物理复制,不占用额外存储空间
|
|
69
|
+
3. 复制后的课程标题自动追加"-副本",建议手动修改为目标标题
|
|
70
|
+
4. 复制不携带原课程的学习数据(学习人数、完成率、评价等)
|
|
71
|
+
5. 收费设置虽然复制,但建议检查价格和试学配置是否正确
|
|
72
|
+
6. 作业和测验作为新的独立实体存在,修改副本不影响原课程
|
|
73
|
+
7. 钉钉群二维码需为复制后的课程重新上传
|
|
74
|
+
|
|
75
|
+
## 检查清单
|
|
76
|
+
|
|
77
|
+
- [ ] 已告知用户课程复制需后台操作
|
|
78
|
+
- [ ] 已说明复制范围(哪些会/不会复制)
|
|
79
|
+
- [ ] 已提醒复制后进入未发布列表,进度归零
|
|
80
|
+
- [ ] 已提醒钉钉二维码不会复制,需手动补充
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: soke-course-publish
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: 发布管理 — 发布前 Gate Check 五道校验 + 发布操作,含状态流转与审批规则
|
|
5
|
+
tags: [soke, publish, gate-check, status, approval]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 发布管理
|
|
9
|
+
|
|
10
|
+
## 触发描述
|
|
11
|
+
|
|
12
|
+
课程内容与设置准备就绪后,需要将课程发布上线供学员学习时触发本技能。发布前需通过 Gate Check 五道校验,通过后方可执行发布操作。
|
|
13
|
+
|
|
14
|
+
## 课程状态流转
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
┌──────────┐ 发布 ┌──────────┐
|
|
18
|
+
│ 0: 未发布 │ ──────────→ │ 1: 已发布 │
|
|
19
|
+
└──────────┘ └─────┬────┘
|
|
20
|
+
↑ │
|
|
21
|
+
│ 关闭 │
|
|
22
|
+
└───────────────────────────┘
|
|
23
|
+
← 重新发布
|
|
24
|
+
|
|
25
|
+
┌──────────┐
|
|
26
|
+
│ 2: 已关闭 │
|
|
27
|
+
└──────────┘
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
| 状态码 | 含义 | 说明 |
|
|
31
|
+
|--------|------|------|
|
|
32
|
+
| `0` | 未发布 | 课程初始状态,可编辑,学员不可见 |
|
|
33
|
+
| `1` | 已发布 | 已上线,学员可见可学习 |
|
|
34
|
+
| `2` | 已关闭 | 已下线,学员不可见,可重新发布 |
|
|
35
|
+
|
|
36
|
+
> 已关闭 (status=2) 的课程可重新发布回到 status=1,也可继续编辑后重新发布。
|
|
37
|
+
|
|
38
|
+
## 执行流程
|
|
39
|
+
|
|
40
|
+
### 第一步:Gate Check(发布前置校验)
|
|
41
|
+
|
|
42
|
+
执行 `course +publish` 前,系统自动完成以下 5 项校验。**任何一项不通过则发布失败。**
|
|
43
|
+
|
|
44
|
+
| 序号 | 校验项 | 通过条件 | 不通过提示 |
|
|
45
|
+
|------|--------|----------|-----------|
|
|
46
|
+
| 1 | **标题** | 课程标题不为空 | "请填写课程标题" |
|
|
47
|
+
| 2 | **分类** | 已选择课程所属分类 | "请选择课程分类" |
|
|
48
|
+
| 3 | **课件 ≥ 1** | 课程下至少有 1 节课件 | "请至少添加一节课件" |
|
|
49
|
+
| 4 | **无转码失败课件** | 所有视频/音频课件转码状态为成功 | "存在转码失败的课件,请重新上传" |
|
|
50
|
+
| 5 | **无转码中课件** | 没有正在转码的课件(转码完成后才可发布) | "课件转码中,请稍候再发布" |
|
|
51
|
+
|
|
52
|
+
> 文档类课件无需转码,校验项 4、5 仅针对视频和音频课件。
|
|
53
|
+
|
|
54
|
+
### 第二步:执行发布 `course +publish`
|
|
55
|
+
|
|
56
|
+
直接发布:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
soke course +publish --course-id <courseId>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
定时发布:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
soke course +publish \
|
|
66
|
+
--course-id <courseId> \
|
|
67
|
+
--publish-time "2026-07-14 17:24:42"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
| 参数 | 必填 | 说明 |
|
|
71
|
+
|------|------|------|
|
|
72
|
+
| `--course-id` | 是 | 课程 ID |
|
|
73
|
+
| `--publish-time` | 否 | 定时发布时间,输入北京时间;不传则直接发布 |
|
|
74
|
+
|
|
75
|
+
> 实现口径:传入非零 `--publish-time` 时开启定时发布;未传或传 `0000-00-00 00:00:00` 时不开启定时发布。
|
|
76
|
+
|
|
77
|
+
发布成功后课程状态由 `0` → `1`。
|
|
78
|
+
|
|
79
|
+
## 关闭课程
|
|
80
|
+
|
|
81
|
+
关闭已发布课程:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
soke course +update --course-id <courseId> --action close
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
关闭成功后课程状态由 `1` → `2`,学员端不可见,历史学习记录保留。已关闭课程可再次执行 `course +publish` 重新发布。
|
|
88
|
+
|
|
89
|
+
## 删除课程
|
|
90
|
+
|
|
91
|
+
删除未发布或已关闭课程:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
soke course +delete --course-id <courseId>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
删除前必须先查询课程状态。仅允许删除 `status=0` 未发布或 `status=2` 已关闭课程;`status=1` 已发布课程必须先执行 `course +update --course-id <courseId> --action close` 关闭后再删除。删除成功后课程状态变为已删除(`status=-1` 或 `status=3`)。
|
|
98
|
+
|
|
99
|
+
## ⚠️ CLI 不支持的操作
|
|
100
|
+
|
|
101
|
+
| 操作 | 说明 | 替代路径 |
|
|
102
|
+
|------|------|---------|
|
|
103
|
+
| **审批流** | 发布需经过审批流程 | 后台 → 系统设置 → 审批设置 |
|
|
104
|
+
| **批量发布** | 一次发布多门课程 | 后台 → 课程管理 → 批量操作 |
|
|
105
|
+
|
|
106
|
+
## 审批规则
|
|
107
|
+
|
|
108
|
+
### 默认审批配置
|
|
109
|
+
|
|
110
|
+
| 配置项 | 默认值 | 说明 |
|
|
111
|
+
|--------|--------|------|
|
|
112
|
+
| 审批开关 | **关闭** | 默认不启用审批流,发布即上线 |
|
|
113
|
+
| 审批流层级 | 1 级 | 如需开启,仅支持 1 级审批 |
|
|
114
|
+
| 第一级审批人 | **不可删除** | 审批流至少保留 1 个审批节点 |
|
|
115
|
+
| 默认审批人 | **主管理员** | 系统默认审批人为租户主管理员 |
|
|
116
|
+
| 审批模式 | **或签** | 第一级多个审批人时,任一人通过即可 |
|
|
117
|
+
|
|
118
|
+
### 开启审批流
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
后台 → 系统设置 → 审批设置 → 课程发布审批
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
开启后,发布操作将生成审批单,审批通过后课程才正式上线(status 变为 1)。
|
|
125
|
+
|
|
126
|
+
## 输出标准
|
|
127
|
+
|
|
128
|
+
发布成功:
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
✅ 课程发布成功
|
|
132
|
+
- 课程: {title} (ID: {courseId})
|
|
133
|
+
- 状态: 已发布 (status=1)
|
|
134
|
+
- 学员端已可见
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Gate Check 不通过(示例):
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
❌ 发布校验未通过
|
|
141
|
+
- [✗] 标题:请填写课程标题
|
|
142
|
+
- [✓] 分类:已选择
|
|
143
|
+
- [✗] 课件:请至少添加一节课件
|
|
144
|
+
- [✓] 转码失败:无
|
|
145
|
+
- [✓] 转码中:无
|
|
146
|
+
|
|
147
|
+
请完成上述校验项后重新发布。
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## 注意事项
|
|
151
|
+
|
|
152
|
+
1. 先过 Gate Check,再执行 publish — 校验项全部通过是发布的必要条件
|
|
153
|
+
2. 转码是异步过程,上传视频/音频后需等待转码完成再发布
|
|
154
|
+
3. 课程关闭后学员端不可见,但历史学习记录保留
|
|
155
|
+
4. 关闭后可重新发布,状态回到 1
|
|
156
|
+
5. 删除课程不可逆,CLI 只允许删除未发布(status=0)或已关闭(status=2)课程
|
|
157
|
+
6. 审批流默认关闭,如需开启需后台手动配置
|
|
158
|
+
|
|
159
|
+
## 检查清单
|
|
160
|
+
|
|
161
|
+
- [ ] 标题已填写(非空)
|
|
162
|
+
- [ ] 分类已选择
|
|
163
|
+
- [ ] 课件数 ≥ 1
|
|
164
|
+
- [ ] 无转码失败的课件
|
|
165
|
+
- [ ] 无正在转码中的课件
|
|
166
|
+
- [ ] 五道校验全部通过
|
|
167
|
+
- [ ] publish 执行成功,状态确认变为 1
|
|
168
|
+
- [ ] 如涉及审批流,已告知默认关闭及后台配置路径
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: soke-course-query
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: 数据查询 — 课程/学员/学习记录/人脸验证数据查询
|
|
5
|
+
tags: [soke, query, data, analytics, learning-records]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 数据查询
|
|
9
|
+
|
|
10
|
+
## 触发描述
|
|
11
|
+
|
|
12
|
+
需要查询课程数据、学员学习记录、人脸验证记录等运营数据时触发本技能。支持课程维度、学员维度、课件维度的多层级数据查询。
|
|
13
|
+
|
|
14
|
+
## 通用约束
|
|
15
|
+
|
|
16
|
+
- 课程列表走 `/skills/course/list`,不再使用创建时间范围筛选。
|
|
17
|
+
- 学习记录类查询如包含时间参数,时间戳仍使用**毫秒级 Unix timestamp**。
|
|
18
|
+
- **状态码含义**:
|
|
19
|
+
- `status`(课程):`0`=未发布,`1`=已发布,`2`=已关闭
|
|
20
|
+
- `face_status`(人脸):`1`=验证成功,`2`=验证失败
|
|
21
|
+
|
|
22
|
+
## 执行流程
|
|
23
|
+
|
|
24
|
+
### 1. 课程列表 `+list-courses`
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
soke course +list-courses
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
| 参数 | 必填 | 说明 |
|
|
31
|
+
|------|------|------|
|
|
32
|
+
| `--keyword` | 否 | 课程列表模糊搜索关键字 |
|
|
33
|
+
| `--category-path` | 否 | 课程分类 ID,用于按照分类筛选课程 |
|
|
34
|
+
| `--status` | 否 | 按状态过滤(0/1/2) |
|
|
35
|
+
| `--is-in` | 否 | 课程来源:0=外部课列表,1=内部课列表(默认 1) |
|
|
36
|
+
| `--is-my` | 否 | 是否只看我创建的(默认 0) |
|
|
37
|
+
| `--is-joint` | 否 | 协同给我的(默认 0) |
|
|
38
|
+
| `--joint-out` | 否 | 我协同出去的(默认 0) |
|
|
39
|
+
| `--page` | 否 | 页码(默认 1) |
|
|
40
|
+
| `--page-size` | 否 | 每页条数(默认 10) |
|
|
41
|
+
|
|
42
|
+
返回课程列表,包含课程 ID、标题、状态、创建时间、学习人数等摘要。
|
|
43
|
+
|
|
44
|
+
### 2. 课程详情 `+get-course`
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
soke course +get-course --course-id <courseId>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
| 参数 | 必填 | 说明 |
|
|
51
|
+
|------|------|------|
|
|
52
|
+
| `--course-id` | 是 | 课程 ID |
|
|
53
|
+
|
|
54
|
+
返回课程完整信息:标题、描述、分类、状态、讲师、课件数、学习人数、完成率等。
|
|
55
|
+
|
|
56
|
+
### 3. 课程学员列表 `+list-course-users`
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
soke course +list-course-users --course-id <courseId>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
| 参数 | 必填 | 说明 |
|
|
63
|
+
|------|------|------|
|
|
64
|
+
| `--course-id` | 是 | 课程 ID |
|
|
65
|
+
| `--status` | 否 | 学习状态过滤(进行中/已完成/未开始) |
|
|
66
|
+
| `--keyword` | 否 | 按学员姓名搜索 |
|
|
67
|
+
| `--page` | 否 | 页码 |
|
|
68
|
+
| `--page-size` | 否 | 每页条数 |
|
|
69
|
+
|
|
70
|
+
返回该课程所有学员列表,包含用户 ID、姓名、部门、学习进度、学习时长、完成状态。
|
|
71
|
+
|
|
72
|
+
### 4. 学员详情 `+get-course-user`
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
soke course +get-course-user \
|
|
76
|
+
--course-id <courseId> \
|
|
77
|
+
--user-id <userId>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
| 参数 | 必填 | 说明 |
|
|
81
|
+
|------|------|------|
|
|
82
|
+
| `--course-id` | 是 | 课程 ID |
|
|
83
|
+
| `--user-id` | 是 | 学员 ID |
|
|
84
|
+
|
|
85
|
+
返回单个学员在该课程下的详细学习记录:每节课时进度、总时长、完成状态、成绩等。
|
|
86
|
+
|
|
87
|
+
### 5. 课件学习记录 `+list-lesson-learns`
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
soke course +list-lesson-learns \
|
|
91
|
+
--lesson-id <lessonId> \
|
|
92
|
+
--start-time <ms> \
|
|
93
|
+
--end-time <ms>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
| 参数 | 必填 | 说明 |
|
|
97
|
+
|------|------|------|
|
|
98
|
+
| `--lesson-id` | 是 | 课件 ID |
|
|
99
|
+
| `--start-time` | 是 | 起始时间(ms),跨度 ≤ 365 天 |
|
|
100
|
+
| `--end-time` | 是 | 结束时间(ms) |
|
|
101
|
+
| `--user-id` | 否 | 按学员过滤 |
|
|
102
|
+
|
|
103
|
+
返回指定课件在时间范围内的学员学习记录:用户、学习时长、完成百分比、首次学习时间、最后学习时间。
|
|
104
|
+
|
|
105
|
+
### 6. 人脸验证记录 `+list-lesson-faces`
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
soke course +list-lesson-faces \
|
|
109
|
+
--lesson-id <lessonId> \
|
|
110
|
+
--start-time <ms> \
|
|
111
|
+
--end-time <ms>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
| 参数 | 必填 | 说明 |
|
|
115
|
+
|------|------|------|
|
|
116
|
+
| `--lesson-id` | 是 | 课件 ID |
|
|
117
|
+
| `--start-time` | 是 | 起始时间(ms),跨度 ≤ 365 天 |
|
|
118
|
+
| `--end-time` | 是 | 结束时间(ms) |
|
|
119
|
+
| `--user-id` | 否 | 按学员过滤 |
|
|
120
|
+
| `--face-status` | 否 | 验证状态:`1`=成功,`2`=失败 |
|
|
121
|
+
|
|
122
|
+
返回人脸验证记录,包含:
|
|
123
|
+
- 用户信息
|
|
124
|
+
- 验证时间
|
|
125
|
+
- `face_status`:`1` = 验证成功,`2` = 验证失败
|
|
126
|
+
- 失败原因(如有人脸不匹配、超时等)
|
|
127
|
+
|
|
128
|
+
## 输出标准
|
|
129
|
+
|
|
130
|
+
以结构化表格或摘要形式输出查询结果,示例如下:
|
|
131
|
+
|
|
132
|
+
**课程列表**:
|
|
133
|
+
```
|
|
134
|
+
📋 课程列表 (共 N 门)
|
|
135
|
+
|
|
136
|
+
| 标题 | 状态 | 学员数 | 完成率 | 创建时间 |
|
|
137
|
+
|------|------|--------|--------|----------|
|
|
138
|
+
| ... | ... | ... | ... | ... |
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**学员学习记录**:
|
|
142
|
+
```
|
|
143
|
+
📊 {courseTitle} — 学员学习记录 (共 N 人)
|
|
144
|
+
|
|
145
|
+
| 姓名 | 部门 | 进度 | 学习时长 | 状态 |
|
|
146
|
+
|------|------|------|----------|------|
|
|
147
|
+
| ... | ... | ... | ... | ... |
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## 注意事项
|
|
151
|
+
|
|
152
|
+
1. **时间跨度**:所有时间范围查询(start-time / end-time)跨度不超过 365 天,超过需分段查询
|
|
153
|
+
2. **时间戳单位**:统一使用毫秒 (ms),`Date.now()` 风格的时间戳,如 `1700000000000`
|
|
154
|
+
3. **分页查询**:大数据量查询务必使用分页参数,避免超时
|
|
155
|
+
4. **face_status 枚举**:仅 `1`(成功)和 `2`(失败),无其他状态值
|
|
156
|
+
5. **课程状态枚举**:`0`(未发布)/ `1`(已发布)/ `2`(已关闭),查询时按需过滤
|
|
157
|
+
6. 人脸验证记录仅在人脸识别功能已开启的课程中产生数据
|
|
158
|
+
|
|
159
|
+
## 检查清单
|
|
160
|
+
|
|
161
|
+
- [ ] 时间范围 ≤ 365 天
|
|
162
|
+
- [ ] 时间戳已确认采用毫秒单位
|
|
163
|
+
- [ ] 分页参数对大结果集已设置
|
|
164
|
+
- [ ] face_status 查询值为 1 或 2
|
|
165
|
+
- [ ] course status 查询值为 0/1/2
|