@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.
Files changed (124) hide show
  1. package/README.md +7 -7
  2. package/package.json +1 -1
  3. package/scripts/build-binaries.sh +1 -1
  4. package/scripts/e2e-test.sh +75 -3
  5. package/skills/SKILL.md +18 -1
  6. package/skills/soke-ai-coach-director/CHANGELOG.md +203 -0
  7. package/skills/soke-ai-coach-director/README.md +123 -0
  8. package/skills/soke-ai-coach-director/SKILL.md +221 -0
  9. package/skills/soke-ai-coach-director/coaching/knowledge-packager/knowledge-packager.md +91 -0
  10. package/skills/soke-ai-coach-director/coaching/prompt-engineer/parts/part2-roles.md +97 -0
  11. package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-engineer/parts/part3-flow.md +3 -3
  12. package/skills/soke-ai-coach-director/coaching/prompt-engineer/prompt-engineer.md +76 -0
  13. package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-optimizer/prompt-optimizer.md +77 -58
  14. package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/workbuddy.md +2 -3
  15. package/skills/soke-ai-coach-director/platform/interaction.md +103 -0
  16. package/skills/{ai-coach-director → soke-ai-coach-director}/platform/publish-gate.md +3 -3
  17. package/skills/{ai-coach-director → soke-ai-coach-director}/platform/resource-finalizer.md +10 -35
  18. package/skills/{ai-coach-director → soke-ai-coach-director}/platform/soke-ai-training/soke-ai-training.md +33 -3
  19. package/skills/soke-ai-coach-director/platform/sync-engine.md +39 -0
  20. package/skills/{ai-coach-director → soke-ai-coach-director}/references/change-log-partwise-refactor.md +1 -1
  21. package/skills/soke-ai-coach-director/references/env-check.md +146 -0
  22. package/skills/soke-ai-coach-director/references/exec-common.md +126 -0
  23. package/skills/soke-ai-coach-director/references/exec-handbook.md +621 -0
  24. package/skills/soke-ai-coach-director/references/exec-part1.md +86 -0
  25. package/skills/soke-ai-coach-director/references/exec-part2.md +145 -0
  26. package/skills/soke-ai-coach-director/references/exec-part3.md +91 -0
  27. package/skills/soke-ai-coach-director/references/exec-part4.md +187 -0
  28. package/skills/soke-ai-coach-director/references/gate-check-matrix.md +46 -0
  29. package/skills/soke-ai-coach-director/references/micro-tune-labels.md +30 -0
  30. package/skills/soke-ai-coach-director/references/platform-api-pitfalls.md +49 -0
  31. package/skills/soke-ai-coach-director/references/role-resource-matching.md +45 -0
  32. package/skills/{ai-coach-director → soke-ai-coach-director}/references/self-improvement-examples.md +2 -0
  33. package/skills/soke-ai-coach-director/references/self-learning-engine.md +489 -0
  34. package/skills/soke-ai-coach-director/references/subs/part1/SOP.md +17 -0
  35. package/skills/soke-ai-coach-director/references/subs/part2/SOP.md +34 -0
  36. package/skills/soke-ai-coach-director/references/subs/part3/SOP.md +27 -0
  37. package/skills/soke-ai-coach-director/references/subs/part4/SOP.md +31 -0
  38. package/skills/soke-ai-coach-director/references/subs/publish/SOP.md +81 -0
  39. package/skills/soke-ai-coach-director/references/subs/tune/SOP.md +92 -0
  40. package/skills/soke-ai-coach-director/references/verified-cli-cheatsheet.md +56 -0
  41. package/skills/{ai-coach-director → soke-ai-coach-director}/scripts/activator.sh +0 -0
  42. package/skills/{ai-coach-director → soke-ai-coach-director}/scripts/error-detector.sh +0 -0
  43. package/skills/{ai-coach-director → soke-ai-coach-director}/scripts/extract-skill.sh +0 -0
  44. package/skills/soke-ai-coach-director/scripts/gate_check.py +112 -0
  45. package/skills/soke-ai-coach-director/scripts/validate_operations.py +403 -0
  46. package/skills/soke-certificate/SKILL.md +717 -0
  47. package/skills/soke-course/README.md +12 -2
  48. package/skills/soke-course/SKILL.md +12 -10
  49. package/skills/soke-course/references/course-list-courses.md +49 -84
  50. package/skills/soke-course/references/intent-cases.md +8 -8
  51. package/skills/soke-course/references/sop-full-workflow.md +11 -6
  52. package/skills/soke-course/references/sop-publish-check.md +3 -1
  53. package/skills/soke-course/references/subs/publish/SOP.md +34 -4
  54. package/skills/soke-course/references/subs/query/SOP.md +9 -7
  55. package/skills/soke-course/references/subs/settings/SOP.md +87 -25
  56. package/skills/soke-exam-question-pool/SKILL.md +80 -112
  57. package/skills/soke-task/SKILL.md +32 -10
  58. package/skills/soke-training-demand/SKILL.md +150 -43
  59. package/skills/ai-coach-director/SKILL.md +0 -1563
  60. package/skills/ai-coach-director/coaching/prompt-engineer/parts/part2-roles.md +0 -317
  61. package/skills/ai-coach-director/coaching/prompt-engineer/prompt-engineer.md +0 -244
  62. package/skills/ai-coach-director/platform/interaction.md +0 -315
  63. package/skills/ai-coach-director/platform/sync-engine.md +0 -1101
  64. 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
  65. 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
  66. 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
  67. 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
  68. 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
  69. 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
  70. 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
  71. 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
  72. 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
  73. 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
  74. 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
  75. 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
  76. 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
  77. 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
  78. package/skills/ai-coach-director/references/env-check.md +0 -167
  79. package/skills/ai-coach-director/references/platform-api-pitfalls.md +0 -232
  80. package/skills/ai-coach-director/references/role-resource-matching.md +0 -349
  81. package/skills/ai-coach-director/references/verified-cli-cheatsheet.md +0 -203
  82. /package/skills/{ai-coach-director → soke-ai-coach-director}/assets/ERRORS-TEMPLATE.md +0 -0
  83. /package/skills/{ai-coach-director → soke-ai-coach-director}/assets/FEATURE_REQUESTS-TEMPLATE.md +0 -0
  84. /package/skills/{ai-coach-director → soke-ai-coach-director}/assets/LEARNINGS-TEMPLATE.md +0 -0
  85. /package/skills/{ai-coach-director → soke-ai-coach-director}/assets/SKILL-TEMPLATE.md +0 -0
  86. /package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-engineer/parts/part1-basic.md +0 -0
  87. /package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-engineer/parts/part4-scoring.md +0 -0
  88. /package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/prompt-engineer/parts/part5-constraints.md +0 -0
  89. /package/skills/{ai-coach-director → soke-ai-coach-director}/coaching/role-profiler/role-profiler.md +0 -0
  90. /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/README.md +0 -0
  91. /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/qclaw.md +0 -0
  92. /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/wukong.md +0 -0
  93. /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/adapters/zework.md +0 -0
  94. /package/skills/{ai-coach-director → soke-ai-coach-director}/platform/api-fallback.md +0 -0
  95. /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
  96. /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
  97. /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
  98. /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
  99. /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
  100. /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
  101. /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
  102. /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
  103. /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
  104. /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
  105. /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
  106. /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
  107. /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
  108. /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
  109. /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
  110. /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
  111. /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
  112. /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
  113. /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
  114. /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
  115. /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
  116. /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
  117. /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
  118. /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
  119. /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
  120. /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
  121. /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
  122. /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
  123. /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
  124. /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
@@ -81,6 +81,8 @@ soke-cli course +list-course-users --course-id "COURSE-UUID"
81
81
  | `+list-categories` | 查询课程分类(获取 category-id) |
82
82
  | `+create` | 创建课程基本信息 |
83
83
  | `+update` | 更新课程信息 |
84
+ | `+delete` | 删除未发布或已关闭课程 |
85
+ | `+advanced` | 更新课程高级设置 |
84
86
  | `+publish` | 发布课程 |
85
87
  | `+get-course` | 查询课程详情 |
86
88
  | `+list-courses` | 查询课程列表 |
@@ -142,6 +144,11 @@ done
142
144
 
143
145
  # 5. 发布课程
144
146
  soke-cli course +publish --course-id "$course_id"
147
+
148
+ # 或定时发布课程,输入北京时间
149
+ soke-cli course +publish \
150
+ --course-id "$course_id" \
151
+ --publish-time "2026-07-14 17:24:42"
145
152
  ```
146
153
 
147
154
  ### 场景2: 管理现有课程
@@ -162,6 +169,9 @@ soke-cli course +update \
162
169
  --title "新标题" \
163
170
  --description "新描述"
164
171
 
172
+ # 删除未发布或已关闭课程
173
+ soke-cli course +delete --course-id "COURSE-UUID"
174
+
165
175
  # 添加新课件
166
176
  media_id=$(soke-cli file +upload --file ./new-lesson.mp4 --format json | jq -r '.data.uuid')
167
177
  soke-cli course +lesson-create \
@@ -209,8 +219,8 @@ const endTime = new Date('2024-12-31').getTime(); // 1735660799000
209
219
  - `2`: 已关闭
210
220
 
211
221
  **课程来源 (is-in)**:
212
- - `0`: 采购课
213
- - `1`: 自建课
222
+ - `0`: 外部课列表
223
+ - `1`: 内部课列表
214
224
 
215
225
  **学习模式 (study_type)**:
216
226
  - `1`: 自由式(可任意顺序学习)
@@ -214,13 +214,14 @@ Gate 2→3: ✅ 课件 ≥ 1
214
214
  #### Phase 3: 课程设置
215
215
 
216
216
  → read references/subs/settings/SOP.md 执行
217
- 基础: title/description(course +update)
217
+ 基础: title/credit/description/image(course +update)
218
218
 
219
219
  → read references/subs/template/SOP.md Step 3 执行
220
220
  将当前所有设置项以表格形式展示(仅「设置项」+「当前值」两列)
221
221
  告知用户: "想修改哪项?直接告诉我就行。"
222
222
  用户指令处理:
223
- - 标题/描述 → exec: course +update(✅ CLI 支持) → 刷新表格
223
+ - 标题/学分/描述/封面 → exec: course +update(✅ CLI 支持) → 刷新表格
224
+ - 学习模式/倍速/人脸/提醒/评价/拖动/评论/文档防挂机/交流群二维码 → exec: course +advanced(✅ CLI 支持;交流群二维码本地图片用 --image-file,命令内部只上传 OSS,不进入图片库) → 刷新表格
224
225
  - 其他设置 → "已记录: {项} → {新值}(需在后台操作: {路径})" → 刷新表格
225
226
  - "可以了"/"继续" → 退出 Phase 3
226
227
  循环直到用户确认
@@ -231,8 +232,9 @@ Gate 3→4: 无硬阻塞
231
232
 
232
233
  → read references/subs/publish/SOP.md 执行
233
234
  Gate Check: 标题/分类/课件数量/转码状态
234
- 通过 → course +publish
235
- 定时/审批/批量⚠️ CLI 不支持
235
+ 直接发布 → course +publish --course-id <uuid>
236
+ 定时发布course +publish --course-id <uuid> --publish-time "<北京时间>"
237
+ 审批/批量 → ⚠️ CLI 不支持
236
238
 
237
239
  Gate 4→5: ✅ status=1
238
240
 
@@ -261,7 +263,7 @@ Gate 4→5: ✅ status=1
261
263
  #### Phase 6: 运营维护
262
264
 
263
265
  → read references/subs/query/SOP.md 执行(进度/记录/人脸)
264
- → read references/subs/publish/SOP.md 执行(关闭/删除,⚠️)
266
+ → read references/subs/publish/SOP.md 执行(关闭/删除;删除仅允许 status=0/2)
265
267
  → read references/subs/copy/SOP.md 执行(复制,⚠️)
266
268
 
267
269
  ### 3.3 课件子流程
@@ -291,7 +293,7 @@ Gate 4→5: ✅ status=1
291
293
 
292
294
  ### 3.8 维护子流程
293
295
 
294
- 流程: read references/subs/publish/SOP.md(关闭/删除)/ references/subs/copy/SOP.md(复制)/ references/subs/category/SOP.md(分类)
296
+ 流程: read references/subs/publish/SOP.md(关闭/删除,删除前必须校验 status=0 未发布或 status=2 已关闭)/ references/subs/copy/SOP.md(复制)/ references/subs/category/SOP.md(分类)
295
297
 
296
298
  ### SOP 执行 5 步法
297
299
 
@@ -378,11 +380,11 @@ Gate 4→5: ✅ status=1
378
380
  |------|------|
379
381
  | 课件类型 | image/article/link/quiz/homework |
380
382
  | 分类 | 新增分类 |
381
- | 课程设置 | credit/point/lector_id/tags/cover上传/简介插图 |
382
- | 高级设置 | 学习模式/倍速/人脸/提醒/评价/证书/签名/钉钉群 |
383
+ | 课程设置 | point/lector_id/tags/简介插图 |
384
+ | 高级设置 | 证书/签名 |
383
385
  | 收费 | 价格/试看 |
384
- | 发布 | 定时/审批/批量 |
385
- | 维护 | 关闭/删除/复制 |
386
+ | 发布 | 审批/批量 |
387
+ | 维护 | 复制 |
386
388
 
387
389
  ### 中断恢复
388
390
  用户"继续"/"接着做": 检查 course-id → 有:查状态+课件→报告→继续 | 无:列课程→选→恢复
@@ -2,22 +2,23 @@
2
2
 
3
3
  ## 命令说明
4
4
 
5
- `soke-cli course +list-courses` 用于查询课程列表,支持按时间范围、分类、状态等条件筛选。
5
+ `soke-cli course +list-courses` 用于查询课程列表,转发到 `/skills/course/list`,支持按课程列表模糊搜索关键字、课程分类、课程状态、课程来源、我的课程和协同关系筛选。
6
6
 
7
7
  ## 基本用法
8
8
 
9
- ### 查询指定时间范围的课程
9
+ ### 查询已发布课程
10
10
 
11
11
  ```bash
12
12
  soke-cli course +list-courses \
13
- --start-time 1704038400000 \
14
- --end-time 1735660799000
13
+ --status 1 \
14
+ --page 1 \
15
+ --page-size 10
15
16
  ```
16
17
 
17
18
  **说明**:
18
- - `--start-time`: 课程创建开始时间(Unix时间戳,毫秒)
19
- - `--end-time`: 课程创建结束时间(Unix时间戳,毫秒)
20
- - 时间范围不能超过365天
19
+ - `--status`: 课程状态,默认 `1`
20
+ - `--page`: 页码,默认 `1`
21
+ - `--page-size`: 每页数据,默认 `10`
21
22
 
22
23
  ## 高级筛选
23
24
 
@@ -26,20 +27,14 @@ soke-cli course +list-courses \
26
27
  ```bash
27
28
  # 查询已发布的课程
28
29
  soke-cli course +list-courses \
29
- --start-time 1704038400000 \
30
- --end-time 1735660799000 \
31
30
  --status 1
32
31
 
33
32
  # 查询未发布的课程
34
33
  soke-cli course +list-courses \
35
- --start-time 1704038400000 \
36
- --end-time 1735660799000 \
37
34
  --status 0
38
35
 
39
36
  # 查询已关闭的课程
40
37
  soke-cli course +list-courses \
41
- --start-time 1704038400000 \
42
- --end-time 1735660799000 \
43
38
  --status 2
44
39
  ```
45
40
 
@@ -51,44 +46,46 @@ soke-cli course +list-courses \
51
46
  ### 按课程来源筛选
52
47
 
53
48
  ```bash
54
- # 查询自建课
49
+ # 查询内部课列表
55
50
  soke-cli course +list-courses \
56
- --start-time 1704038400000 \
57
- --end-time 1735660799000 \
58
51
  --is-in 1
59
52
 
60
- # 查询采购课
53
+ # 查询外部课列表
61
54
  soke-cli course +list-courses \
62
- --start-time 1704038400000 \
63
- --end-time 1735660799000 \
64
55
  --is-in 0
65
56
  ```
66
57
 
67
58
  **来源说明**:
68
- - `0`: 采购课(从外部采购的课程)
69
- - `1`: 自建课(企业自己创建的课程)
59
+ - `0`: 外部课列表
60
+ - `1`: 内部课列表
70
61
 
71
- ### 按课程分类筛选
62
+ ### 按关键字筛选
72
63
 
73
64
  ```bash
74
- soke-cli course +list-categories
65
+ soke-cli course +list-courses \
66
+ --keyword "测试"
67
+ ```
68
+
69
+ **说明**:`--keyword` 是课程列表模糊搜索关键字。
75
70
 
71
+ ### 按课程分类筛选
72
+
73
+ ```bash
76
74
  soke-cli course +list-courses \
77
- --start-time 1704038400000 \
78
- --end-time 1735660799000 \
79
- --category-id "category-uuid-here"
75
+ --category-path "category-uuid-here"
80
76
  ```
81
77
 
78
+ **说明**:`--category-path` 会作为接口参数 `categoryPath` 传递,用于按照课程分类 ID 筛选课程。
79
+
82
80
  ### 组合筛选
83
81
 
84
82
  ```bash
85
- # 查询已发布的自建课,且属于特定分类
83
+ # 查询已发布的内部课,只看我创建的,并限制课程分类
86
84
  soke-cli course +list-courses \
87
- --start-time 1704038400000 \
88
- --end-time 1735660799000 \
89
85
  --status 1 \
90
86
  --is-in 1 \
91
- --category-id "category123"
87
+ --is-my 1 \
88
+ --category-path "category123"
92
89
  ```
93
90
 
94
91
  ## 分页查询
@@ -96,22 +93,32 @@ soke-cli course +list-courses \
96
93
  ```bash
97
94
  # 第一页,每页10条
98
95
  soke-cli course +list-courses \
99
- --start-time 1704038400000 \
100
- --end-time 1735660799000 \
101
96
  --page 1 \
102
97
  --page-size 10
103
98
 
104
99
  # 第二页,每页10条
105
100
  soke-cli course +list-courses \
106
- --start-time 1704038400000 \
107
- --end-time 1735660799000 \
108
101
  --page 2 \
109
102
  --page-size 10
110
103
  ```
111
104
 
112
105
  **分页说明**:
113
106
  - `--page`: 页码,从1开始,默认为1
114
- - `--page-size`: 每页数量,最大100,默认为100
107
+ - `--page-size`: 每页数量,默认为10
108
+
109
+ ## 参数说明
110
+
111
+ | 参数 | 默认值 | 说明 |
112
+ |------|--------|------|
113
+ | `--keyword` | 空 | 课程列表模糊搜索关键字 |
114
+ | `--category-path` | 空 | 课程分类 ID,用于按照分类筛选课程 |
115
+ | `--page` | `1` | 页码 |
116
+ | `--is-in` | `1` | 课程来源:0=外部课列表,1=内部课列表 |
117
+ | `--page-size` | `10` | 每页数据 |
118
+ | `--is-my` | `0` | 是否只看我创建的:0=否,1=是 |
119
+ | `--status` | `1` | 课程状态:0=未发布,1=已发布,2=已关闭 |
120
+ | `--is-joint` | `0` | 协同给我的:0=否,1=是 |
121
+ | `--joint-out` | `0` | 我协同出去的:0=否,1=是 |
115
122
 
116
123
  ## 返回数据示例
117
124
 
@@ -166,66 +173,24 @@ soke-cli course +list-courses \
166
173
  | description | String | 课程描述 |
167
174
  | pc_url | String | PC端跳转链接 |
168
175
  | mobile_url | String | 移动端跳转链接 |
169
- | create_time | Int | 创建时间(Unix时间戳,毫秒) |
170
- | update_time | Int | 更新时间(Unix时间戳,毫秒) |
176
+ | create_time | Int/String | 创建时间 |
177
+ | update_time | Int/String | 更新时间 |
171
178
  | create_dept_user_id | String | 创建人ID |
172
179
  | create_dept_user_name | String | 创建人姓名 |
173
180
  | has_more | Int | 是否还有更多数据(1=有, 0=没有) |
174
181
 
175
- ## 时间戳转换
176
-
177
- ### JavaScript/Node.js
178
- ```javascript
179
- // 获取当前时间戳(毫秒)
180
- const now = Date.now();
181
-
182
- // 获取指定日期的时间戳
183
- const date = new Date('2024-01-01 00:00:00');
184
- const timestamp = date.getTime();
185
- ```
186
-
187
- ### Python
188
- ```python
189
- import time
190
- from datetime import datetime
191
-
192
- # 获取当前时间戳(毫秒)
193
- now = int(time.time() * 1000)
194
-
195
- # 获取指定日期的时间戳
196
- dt = datetime(2024, 1, 1, 0, 0, 0)
197
- timestamp = int(dt.timestamp() * 1000)
198
- ```
199
-
200
- ### Go
201
- ```go
202
- import "time"
203
-
204
- // 获取当前时间戳(毫秒)
205
- now := time.Now().UnixMilli()
206
-
207
- // 获取指定日期的时间戳
208
- t := time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC)
209
- timestamp := t.UnixMilli()
210
- ```
211
-
212
182
  ## 常见问题
213
183
 
214
- ### Q: 为什么时间范围不能超过365天?
215
- A: 这是API的限制,为了防止一次查询返回过多数据。如果需要查询更长时间范围的数据,可以分多次查询。
216
-
217
184
  ### Q: 如何查询所有课程?
218
- A: 可以按年份分批查询,例如:
185
+ A: 使用分页逐页查询,例如:
219
186
  ```bash
220
- # 查询2024年的课程
221
187
  soke-cli course +list-courses \
222
- --start-time 1704038400000 \
223
- --end-time 1735660799000
188
+ --page 1 \
189
+ --page-size 10
224
190
 
225
- # 查询2025年的课程
226
191
  soke-cli course +list-courses \
227
- --start-time 1735660800000 \
228
- --end-time 1767196799000
192
+ --page 2 \
193
+ --page-size 10
229
194
  ```
230
195
 
231
196
  ### Q: 如何知道是否还有更多数据?
@@ -30,14 +30,14 @@
30
30
  | 14 | "换个封面" | cover | Phase 3(⚠️ CLI 不支持) |
31
31
  | 15 | "加几个标签" | tags | Phase 3(⚠️ CLI 不支持) |
32
32
 
33
- ## advanced_settings(高级设置)
33
+ ## advanced(高级设置)
34
34
 
35
35
  | # | 用户输入 | 提取 | 路由 |
36
36
  |---|---------|------|------|
37
- | 16 | "开启倍速" | speed | Phase 3(⚠️ 不支持) |
38
- | 17 | "改成解锁式学习" | study_type=2 | Phase 3(⚠️ 不支持) |
39
- | 18 | "开启人脸识别" | face_recognition | Phase 3(⚠️ 不支持) |
40
- | 19 | "设置未学提醒,每周推送" | remind_cycle=7 | Phase 3(⚠️ 不支持) |
37
+ | 16 | "开启倍速" | is_accelerate=1 | Phase 3(course +advanced) |
38
+ | 17 | "改成解锁式学习" | study_type=2 | Phase 3(course +advanced) |
39
+ | 18 | "开启人脸识别" | open_face_recognition=1 | Phase 3(course +advanced) |
40
+ | 19 | "设置未学提醒,每周推送" | is_remind=1, remind_days=7 | Phase 3(course +advanced) |
41
41
  | 20 | "关联证书" | certificate | Phase 3(⚠️ 不支持) |
42
42
 
43
43
  ## charge(收费)
@@ -53,7 +53,7 @@
53
53
  |---|---------|------|------|
54
54
  | 23 | "发布课程" | publish | Phase 4 |
55
55
  | 24 | "上线吧" | publish | Phase 4 |
56
- | 25 | "定时发布,下周一早上9点" | scheduled | Phase 4(⚠️ 不支持) |
56
+ | 25 | "定时发布,下周一早上9点" | scheduled, publish_time | Phase 4 |
57
57
  | 26 | "提交审批" | approval | Phase 4(⚠️ 不支持) |
58
58
 
59
59
  ## assign(指派)
@@ -78,8 +78,8 @@
78
78
 
79
79
  | # | 用户输入 | 提取 | 路由 |
80
80
  |---|---------|------|------|
81
- | 35 | "关闭这门课" | close | Phase 6(⚠️ 不支持) |
82
- | 36 | "删除课程" | delete | Phase 6(⚠️ 不支持) |
81
+ | 35 | "关闭这门课" | close | Phase 6(course +update --action close) |
82
+ | 36 | "删除课程" | delete | Phase 6(先查 status,仅 0/2 可删) |
83
83
  | 37 | "复制这门课,叫 V2.0" | copy, title=V2.0 | Phase 6(⚠️ 不支持) |
84
84
  | 38 | "批量发布这几门" | batch, publish | Phase 6(⚠️ 不支持) |
85
85
 
@@ -92,8 +92,10 @@ Gate 2→3: ✅ lesson_ids 长度 ≥ 1
92
92
 
93
93
  ### Step 3.2: 高级设置
94
94
  调度: soke-course-settings
95
- 全部 ⚠️ CLI 不支持,统一告知:
96
- "高级设置(学习模式/倍速/人脸/提醒/评价/证书/签名/钉钉群)需在后台→课程编辑→高级设置中手动配置。"
95
+ 操作: course +advanced --course-id <uuid> ...
96
+ 支持: 学习模式/待办推送/截止后学习/人脸识别/学习中人脸识别/未学提醒/倍速/拖动/评价/交流群二维码/文档防挂机/评论
97
+ 交流群二维码: 用户给本地图片时,使用 course +advanced --image-file <path>,命令内部只上传 OSS 并生成 imageOssUrl,不进入图片库
98
+ 证书/签名仍需后台操作。
97
99
 
98
100
  ### Step 3.3: 收费设置(可选)
99
101
  读取: subs/charge/SOP.md 执行
@@ -120,12 +122,13 @@ Gate 3→4: 无硬阻塞(设置可跳过)
120
122
  仅警告 → 询问是否忽略
121
123
 
122
124
  ### Step 4.2: 执行发布
123
- 自身: course +publish --course-id <uuid>
125
+ 直接发布: course +publish --course-id <uuid>
126
+ 定时发布: course +publish --course-id <uuid> --publish-time "<北京时间>"
124
127
  提取: 发布状态 → 存上下文
125
128
  失败: 检查 Gate Check 结果
126
129
 
127
130
  ### Step 4.3: 后续(可选)
128
- 定时发布/审批/批量 → ⚠️ CLI 不支持 → 告知后台路径
131
+ 审批/批量 → ⚠️ CLI 不支持 → 告知后台路径
129
132
 
130
133
  Gate 4→5: ✅ status=1
131
134
 
@@ -163,9 +166,11 @@ Gate 4→5: ✅ status=1
163
166
  读取: subs/query/SOP.md 执行
164
167
  操作: course +list-course-users / +get-course-user / +list-lesson-learns / +list-lesson-faces
165
168
 
166
- ### Step 6.2: 关闭/删除(⚠️ CLI 不支持)
169
+ ### Step 6.2: 关闭/删除
167
170
  读取: subs/publish/SOP.md 执行
168
- 告知: "关闭/删除操作需在后台→课程列表中进行"
171
+ 关闭: course +update --course-id <uuid> --action close
172
+ 删除: 先查 status,仅 status=0 未发布或 status=2 已关闭时执行 course +delete --course-id <uuid>
173
+ 阻塞: status=1 已发布课程不能直接删除,先关闭再删除
169
174
 
170
175
  ### Step 6.3: 复制(⚠️ CLI 不支持)
171
176
  读取: subs/copy/SOP.md 执行
@@ -52,8 +52,10 @@
52
52
  - 审批人为空 → 默认通过
53
53
  - 多级审批: 一级不可删除,默认主管理员和或签
54
54
 
55
- ## 定时发布(⚠️ CLI 暂不支持)
55
+ ## 定时发布
56
56
 
57
+ - 执行: `course +publish --course-id <uuid> --publish-time "<北京时间>"`
58
+ - 输入北京时间,会在规定时间发布课程
57
59
  - 到时间点自动发布并推送消息
58
60
  - 未到点时学员收不到消息、前端看不到
59
61
 
@@ -53,25 +53,55 @@ tags: [soke, publish, gate-check, status, approval]
53
53
 
54
54
  ### 第二步:执行发布 `course +publish`
55
55
 
56
+ 直接发布:
57
+
56
58
  ```bash
57
59
  soke course +publish --course-id <courseId>
58
60
  ```
59
61
 
62
+ 定时发布:
63
+
64
+ ```bash
65
+ soke course +publish \
66
+ --course-id <courseId> \
67
+ --publish-time "2026-07-14 17:24:42"
68
+ ```
69
+
60
70
  | 参数 | 必填 | 说明 |
61
71
  |------|------|------|
62
72
  | `--course-id` | 是 | 课程 ID |
73
+ | `--publish-time` | 否 | 定时发布时间,输入北京时间;不传则直接发布 |
74
+
75
+ > 实现口径:传入非零 `--publish-time` 时开启定时发布;未传或传 `0000-00-00 00:00:00` 时不开启定时发布。
63
76
 
64
77
  发布成功后课程状态由 `0` → `1`。
65
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
+
66
99
  ## ⚠️ CLI 不支持的操作
67
100
 
68
101
  | 操作 | 说明 | 替代路径 |
69
102
  |------|------|---------|
70
- | **定时发布** | 设置未来时间自动发布 | 后台 → 课程管理 → 发布设置 → 定时发布 |
71
103
  | **审批流** | 发布需经过审批流程 | 后台 → 系统设置 → 审批设置 |
72
104
  | **批量发布** | 一次发布多门课程 | 后台 → 课程管理 → 批量操作 |
73
- | **关闭课程** | 将已发布课程下线 | 后台 → 课程管理 → 课程操作 → 关闭 |
74
- | **删除课程** | 物理删除课程及所有数据 | 后台 → 课程管理 → 课程操作 → 删除 |
75
105
 
76
106
  ## 审批规则
77
107
 
@@ -123,7 +153,7 @@ Gate Check 不通过(示例):
123
153
  2. 转码是异步过程,上传视频/音频后需等待转码完成再发布
124
154
  3. 课程关闭后学员端不可见,但历史学习记录保留
125
155
  4. 关闭后可重新发布,状态回到 1
126
- 5. 删除课程不可逆,CLI 不提供删除入口
156
+ 5. 删除课程不可逆,CLI 只允许删除未发布(status=0)或已关闭(status=2)课程
127
157
  6. 审批流默认关闭,如需开启需后台手动配置
128
158
 
129
159
  ## 检查清单
@@ -13,8 +13,8 @@ tags: [soke, query, data, analytics, learning-records]
13
13
 
14
14
  ## 通用约束
15
15
 
16
- - **时间范围限制**:所有查询的时间跨度 ≤ 365 天(如超出返回错误)
17
- - **时间戳格式**:所有时间戳均为**毫秒级 Unix timestamp**
16
+ - 课程列表走 `/skills/course/list`,不再使用创建时间范围筛选。
17
+ - 学习记录类查询如包含时间参数,时间戳仍使用**毫秒级 Unix timestamp**。
18
18
  - **状态码含义**:
19
19
  - `status`(课程):`0`=未发布,`1`=已发布,`2`=已关闭
20
20
  - `face_status`(人脸):`1`=验证成功,`2`=验证失败
@@ -29,13 +29,15 @@ soke course +list-courses
29
29
 
30
30
  | 参数 | 必填 | 说明 |
31
31
  |------|------|------|
32
- | `--keyword` | 否 | 按标题/描述模糊搜索 |
32
+ | `--keyword` | 否 | 课程列表模糊搜索关键字 |
33
+ | `--category-path` | 否 | 课程分类 ID,用于按照分类筛选课程 |
33
34
  | `--status` | 否 | 按状态过滤(0/1/2) |
34
- | `--category-id` | 否 | 按分类过滤 |
35
+ | `--is-in` | 否 | 课程来源:0=外部课列表,1=内部课列表(默认 1) |
36
+ | `--is-my` | 否 | 是否只看我创建的(默认 0) |
37
+ | `--is-joint` | 否 | 协同给我的(默认 0) |
38
+ | `--joint-out` | 否 | 我协同出去的(默认 0) |
35
39
  | `--page` | 否 | 页码(默认 1) |
36
- | `--page-size` | 否 | 每页条数(默认 20) |
37
- | `--start-time` | 否 | 创建时间起始(ms) |
38
- | `--end-time` | 否 | 创建时间结束(ms),与 start-time 跨度 ≤ 365 天 |
40
+ | `--page-size` | 否 | 每页条数(默认 10) |
39
41
 
40
42
  返回课程列表,包含课程 ID、标题、状态、创建时间、学习人数等摘要。
41
43