cloudcc-cli 2.3.0 → 2.3.2

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 (273) hide show
  1. package/.claude/settings.json +15 -0
  2. package/.cloudcc-cache.json +17 -48
  3. package/.cursor/skills/cloudcc-cli-dev.zip +0 -0
  4. package/.cursor/skills/cloudcc-cli-usage/SKILL.md +67 -0
  5. package/README.md +22 -0
  6. package/bin/cc.js +13 -8
  7. package/bin/index.js +12 -2
  8. package/bin/mcp.js +1 -1
  9. package/build/{component-cc-test-001.common.js → component-CCPlugin1774500425584.common.js} +25 -25
  10. package/build/component-CCPlugin1774500425584.common.js.map +1 -0
  11. package/build/component-CCPlugin1774500425584.css +1 -0
  12. package/build/{component-cc-test-001.umd.js → component-CCPlugin1774500425584.umd.js} +27 -27
  13. package/build/component-CCPlugin1774500425584.umd.js.map +1 -0
  14. package/build/{component-cc-test-001.umd.min.js → component-CCPlugin1774500425584.umd.min.js} +3 -3
  15. package/build/component-CCPlugin1774500425584.umd.min.js.map +1 -0
  16. package/build/demo.html +1 -1
  17. package/{src/mcp → mcp}/tools/Class Editor Guide/handler.js +12 -4
  18. package/{src/mcp → mcp}/tools/Component Editor Guide/handler.js +15 -14
  19. package/{src/mcp → mcp}/tools/Trigger Editor Guide/handler.js +8 -2
  20. package/package.json +2 -2
  21. package/src/application/delete.js +59 -0
  22. package/src/application/doc.js +46 -0
  23. package/src/application/docs/devguide.md +173 -0
  24. package/src/application/docs/introduction.md +81 -0
  25. package/src/application/get.js +31 -5
  26. package/src/application/index.js +2 -0
  27. package/src/brief/get.js +1 -1
  28. package/src/classes/create.js +6 -1
  29. package/src/classes/delete.js +49 -0
  30. package/src/classes/detail.js +21 -7
  31. package/src/classes/doc.js +49 -472
  32. package/src/classes/docs/devguide.md +451 -0
  33. package/src/classes/get.js +9 -2
  34. package/src/classes/index.js +3 -1
  35. package/src/classes/publish.js +6 -1
  36. package/src/classes/pull.js +6 -1
  37. package/src/classes/pullList.js +6 -3
  38. package/src/config/doc.js +31 -0
  39. package/src/config/docs/devguide.md +100 -0
  40. package/src/config/index.js +5 -0
  41. package/src/customPage/create.js +109 -14
  42. package/src/customPage/delete.js +2 -2
  43. package/src/customPage/doc.js +46 -0
  44. package/src/customPage/docs/devguide.md +200 -0
  45. package/src/customPage/docs/introduction.md +224 -0
  46. package/src/customPage/get.js +1 -1
  47. package/src/customPage/index.js +1 -0
  48. package/src/customSetting/create.js +36 -0
  49. package/src/customSetting/delete.js +35 -0
  50. package/src/customSetting/deleteCustomSettingField.js +43 -0
  51. package/src/customSetting/detail.js +33 -0
  52. package/src/customSetting/doc.js +22 -179
  53. package/src/customSetting/docs/devguide.md +181 -0
  54. package/src/customSetting/docs/introduction.md +3 -0
  55. package/src/customSetting/editCustomSettingField.js +34 -0
  56. package/src/customSetting/get.js +34 -0
  57. package/src/customSetting/index.js +10 -1
  58. package/src/customSetting/modify.js +30 -0
  59. package/src/customSetting/saveCustomSettingField.js +46 -0
  60. package/src/fields/delete.js +52 -0
  61. package/src/fields/doc.js +45 -0
  62. package/src/fields/docs/devguide.md +224 -0
  63. package/src/fields/docs/introduction.md +217 -0
  64. package/src/fields/index.js +2 -0
  65. package/src/globalSelectList/create.js +51 -0
  66. package/src/globalSelectList/delete.js +56 -0
  67. package/src/globalSelectList/detail.js +45 -0
  68. package/src/globalSelectList/doc.js +52 -0
  69. package/src/globalSelectList/docs/devguide.md +212 -0
  70. package/src/globalSelectList/docs/introduction.md +82 -0
  71. package/src/globalSelectList/get.js +31 -0
  72. package/src/globalSelectList/index.js +16 -0
  73. package/src/menu/create-page.js +54 -26
  74. package/src/menu/create-script.js +67 -19
  75. package/src/menu/create.js +9 -3
  76. package/src/menu/delete.js +59 -0
  77. package/src/menu/doc.js +57 -0
  78. package/src/menu/docs/devguide.md +203 -0
  79. package/src/menu/docs/introduction.md +99 -0
  80. package/src/menu/get.js +56 -0
  81. package/src/menu/index.js +3 -0
  82. package/src/menu/validator.js +80 -0
  83. package/src/object/delete.js +51 -0
  84. package/src/object/doc.js +45 -0
  85. package/src/object/docs/devguide.md +112 -0
  86. package/src/object/docs/introduction.md +187 -0
  87. package/src/object/get.js +1 -23
  88. package/src/object/index.js +2 -0
  89. package/src/pagelayout/create.js +123 -0
  90. package/src/pagelayout/doc.js +46 -0
  91. package/src/pagelayout/docs/devguide.md +295 -0
  92. package/src/pagelayout/docs/introduction.md +44 -0
  93. package/src/pagelayout/get.js +46 -0
  94. package/src/pagelayout/index.js +9 -0
  95. package/src/plugin/detail.js +14 -6
  96. package/src/plugin/doc.js +43 -863
  97. package/src/plugin/docs/devguide.md +923 -0
  98. package/src/plugin/publish1.js +3 -3
  99. package/src/profile/create.js +108 -0
  100. package/src/profile/delete.js +59 -0
  101. package/src/profile/doc.js +46 -0
  102. package/src/profile/docs/devguide.md +332 -0
  103. package/src/profile/docs/introduction.md +123 -0
  104. package/src/profile/get.js +55 -0
  105. package/src/profile/index.js +14 -0
  106. package/src/project/doc.js +39 -372
  107. package/src/project/docs/devguide.md +359 -0
  108. package/src/project/docs/introduction.md +3 -0
  109. package/src/recordType/create.js +77 -0
  110. package/src/recordType/delete.js +52 -0
  111. package/src/recordType/doc.js +36 -0
  112. package/src/recordType/docs/devguide.md +160 -0
  113. package/src/recordType/docs/introduction.md +53 -0
  114. package/src/recordType/editInfo.js +39 -0
  115. package/src/recordType/editSave.js +47 -0
  116. package/src/recordType/get.js +1 -1
  117. package/src/recordType/getList.js +31 -0
  118. package/src/recordType/index.js +16 -3
  119. package/src/recordType/newInfo.js +39 -0
  120. package/src/recordType/validDelete.js +91 -0
  121. package/src/res.md +66 -0
  122. package/src/role/create.js +153 -0
  123. package/src/role/delete.js +59 -0
  124. package/src/role/doc.js +46 -0
  125. package/src/role/docs/devguide.md +387 -0
  126. package/src/role/docs/introduction.md +124 -0
  127. package/src/role/get.js +57 -0
  128. package/src/role/index.js +10 -0
  129. package/src/scheduleJob/delete.js +26 -0
  130. package/src/scheduleJob/detail.js +23 -0
  131. package/src/scheduleJob/doc.js +49 -0
  132. package/src/scheduleJob/docs/devguide.md +79 -0
  133. package/src/scheduleJob/docs/introduction.md +101 -0
  134. package/src/scheduleJob/get.js +26 -0
  135. package/src/scheduleJob/index.js +15 -0
  136. package/src/script/delete.js +112 -0
  137. package/src/script/doc.js +31 -245
  138. package/src/script/docs/devguide.md +290 -0
  139. package/src/script/docs/introduction.md +48 -0
  140. package/src/script/index.js +1 -0
  141. package/src/staticResource/count.js +46 -0
  142. package/src/staticResource/create.js +97 -0
  143. package/src/staticResource/delete.js +48 -0
  144. package/src/staticResource/detail.js +46 -0
  145. package/src/staticResource/doc.js +39 -0
  146. package/src/staticResource/docs/devguide.md +157 -0
  147. package/src/staticResource/docs/introduction.md +3 -0
  148. package/src/staticResource/get.js +48 -0
  149. package/src/staticResource/index.js +13 -0
  150. package/src/timer/create.js +6 -1
  151. package/src/timer/delete.js +49 -0
  152. package/src/timer/detail.js +5 -5
  153. package/src/timer/doc.js +57 -0
  154. package/src/timer/get.js +7 -1
  155. package/src/timer/index.js +4 -1
  156. package/src/timer/publish.js +6 -1
  157. package/src/timer/pull.js +6 -1
  158. package/src/timer/pullList.js +5 -3
  159. package/src/triggers/delete.js +46 -0
  160. package/src/triggers/detail.js +5 -5
  161. package/src/triggers/doc.js +49 -364
  162. package/src/triggers/docs/devguide.md +334 -0
  163. package/src/triggers/get.js +7 -3
  164. package/src/triggers/index.js +2 -4
  165. package/src/triggers/pullList.js +7 -7
  166. package/src/user/create.js +50 -0
  167. package/src/user/delete.js +59 -0
  168. package/src/user/doc.js +46 -0
  169. package/src/user/docs/devguide.md +634 -0
  170. package/src/user/docs/introduction.md +124 -0
  171. package/src/user/get.js +112 -0
  172. package/src/user/index.js +12 -0
  173. package/src/user/update.js +96 -0
  174. package/src/user/view.js +60 -0
  175. package/test/application.cli.test.js +49 -8
  176. package/test/classes.cli.test.js +14 -5
  177. package/test/customPage.cli.test.js +96 -0
  178. package/test/customSetting.cli.test.js +84 -0
  179. package/test/fields.cli.test.js +18 -3
  180. package/test/globalSelectList.cli.test.js +94 -0
  181. package/test/menu-script.cli.test.js +147 -0
  182. package/test/menu.cli.test.js +42 -5
  183. package/test/object.cli.test.js +17 -1
  184. package/test/plugin.cli.test.js +5 -3
  185. package/test/scheduleJob.cli.test.js +52 -0
  186. package/test/staticResource.cli.test.js +78 -0
  187. package/test/timer.cli.test.js +20 -7
  188. package/test/trigger.cli.test.js +13 -5
  189. package/tmp_customsetting_detail.json +1 -0
  190. package/.cursor/skills/cloudcc-cli-dev/BACKEND_CLASS.md +0 -97
  191. package/.cursor/skills/cloudcc-cli-dev/BACKEND_SCHEDULE.md +0 -78
  192. package/.cursor/skills/cloudcc-cli-dev/BACKEND_TRIGGER.md +0 -137
  193. package/.cursor/skills/cloudcc-cli-dev/CLI_CHEATSHEET.md +0 -215
  194. package/.cursor/skills/cloudcc-cli-dev/CUSTOM-SETTING-API.md +0 -241
  195. package/.cursor/skills/cloudcc-cli-dev/INSTALL_AND_BOOTSTRAP.md +0 -59
  196. package/.cursor/skills/cloudcc-cli-dev/OBJECTS_AND_FIELDS.md +0 -120
  197. package/.cursor/skills/cloudcc-cli-dev/REQUIREMENTS_BREAKDOWN.md +0 -98
  198. package/.cursor/skills/cloudcc-cli-dev/SKILL.md +0 -44
  199. package/.cursor/skills/cloudcc-cli-dev/VUE_CUSTOM_COMPONENT.md +0 -151
  200. package/build/component-cc-test-001.common.js.map +0 -1
  201. package/build/component-cc-test-001.css +0 -1
  202. package/build/component-cc-test-001.umd.js.map +0 -1
  203. package/build/component-cc-test-001.umd.min.js.map +0 -1
  204. package/classes/CCdd/CCdd.java +0 -22
  205. package/classes/CCdd/CCddTest.java +0 -11
  206. package/classes/CCdd/config.json +0 -1
  207. package/core.zip +0 -0
  208. package/plugins/cc-test-001/cc-test-001.vue +0 -32
  209. package/plugins/cc-test-001/components/HelloWorld.vue +0 -11
  210. package/plugins/cc-test-001/config.json +0 -6
  211. package/schedule/CCdd/CCdd.java +0 -11
  212. package/schedule/CCdd/config.json +0 -1
  213. package/src/approval/approve.js +0 -105
  214. package/src/approval/get.js +0 -245
  215. package/src/approval/index.js +0 -11
  216. package/src/approval/reject.js +0 -105
  217. package/src/plugin/readme.md +0 -7
  218. package/target/ccopenapi-0.0.4-classes.jar +0 -0
  219. package/target/ccopenapi-0.0.4.jar +0 -0
  220. package/target/classes/CCdd/CCdd.class +0 -0
  221. package/target/classes/CCdd/CCddTest.class +0 -0
  222. package/target/classes/CCdd/config.json +0 -1
  223. package/target/maven-archiver/pom.properties +0 -3
  224. package/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +0 -20
  225. package/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +0 -19
  226. /package/{src/mcp → mcp}/cliRunner.js +0 -0
  227. /package/{src/mcp → mcp}/index.js +0 -0
  228. /package/{src/mcp → mcp}/readme.md +0 -0
  229. /package/{src/mcp → mcp}/tools/Application Creator/handler.js +0 -0
  230. /package/{src/mcp → mcp}/tools/Approval/handler.js +0 -0
  231. /package/{src/mcp → mcp}/tools/Class Creator/handler.js +0 -0
  232. /package/{src/mcp → mcp}/tools/Class Detail Retriever/handler.js +0 -0
  233. /package/{src/mcp → mcp}/tools/Class List Retriever/handler.js +0 -0
  234. /package/{src/mcp → mcp}/tools/Class Publisher/handler.js +0 -0
  235. /package/{src/mcp → mcp}/tools/Class Puller/handler.js +0 -0
  236. /package/{src/mcp → mcp}/tools/Client Script Detail Retriever/handler.js +0 -0
  237. /package/{src/mcp → mcp}/tools/Client Script Editor Guide/handler.js +0 -0
  238. /package/{src/mcp → mcp}/tools/Client Script List Retriever/handler.js +0 -0
  239. /package/{src/mcp → mcp}/tools/Client Script Publisher/handler.js +0 -0
  240. /package/{src/mcp → mcp}/tools/Client Script Puller/handler.js +0 -0
  241. /package/{src/mcp → mcp}/tools/CloudCC Development Overview/handler.js +0 -0
  242. /package/{src/mcp → mcp}/tools/Component Creator/handler.js +0 -0
  243. /package/{src/mcp → mcp}/tools/Component Detail Retriever/handler.js +0 -0
  244. /package/{src/mcp → mcp}/tools/Component List Retriever/handler.js +0 -0
  245. /package/{src/mcp → mcp}/tools/Component Publisher/handler.js +0 -0
  246. /package/{src/mcp → mcp}/tools/Component Puller/handler.js +0 -0
  247. /package/{src/mcp → mcp}/tools/Dev Environment Creator/fetcher.js +0 -0
  248. /package/{src/mcp → mcp}/tools/Dev Environment Creator/handler.js +0 -0
  249. /package/{src/mcp → mcp}/tools/Dev Environment Validator/handler.js +0 -0
  250. /package/{src/mcp → mcp}/tools/Developer Key Setup Guide/fetcher.js +0 -0
  251. /package/{src/mcp → mcp}/tools/Developer Key Setup Guide/handler.js +0 -0
  252. /package/{src/mcp → mcp}/tools/JSP Migrator/handler.js +0 -0
  253. /package/{src/mcp → mcp}/tools/Menu Creator/handler.js +0 -0
  254. /package/{src/mcp → mcp}/tools/Object Creator/handler.js +0 -0
  255. /package/{src/mcp → mcp}/tools/Object Fields Creator/handler.js +0 -0
  256. /package/{src/mcp → mcp}/tools/Object Fields Retriever/handler.js +0 -0
  257. /package/{src/mcp → mcp}/tools/Object List Retriever/handler.js +0 -0
  258. /package/{src/mcp → mcp}/tools/Scheduled Class Creator/handler.js +0 -0
  259. /package/{src/mcp → mcp}/tools/Scheduled Class Detail Retriever/handler.js +0 -0
  260. /package/{src/mcp → mcp}/tools/Scheduled Class List Retriever/handler.js +0 -0
  261. /package/{src/mcp → mcp}/tools/Scheduled Class Publisher/handler.js +0 -0
  262. /package/{src/mcp → mcp}/tools/Scheduled Class Puller/handler.js +0 -0
  263. /package/{src/mcp → mcp}/tools/Trigger Creator/handler.js +0 -0
  264. /package/{src/mcp → mcp}/tools/Trigger Detail Retriever/handler.js +0 -0
  265. /package/{src/mcp → mcp}/tools/Trigger List Retriever/handler.js +0 -0
  266. /package/{src/mcp → mcp}/tools/Trigger Publisher/handler.js +0 -0
  267. /package/{src/mcp → mcp}/tools/Trigger Puller/handler.js +0 -0
  268. /package/{src/mcp → mcp}/tools/index.js +0 -0
  269. /package/{docs//350/207/252/345/256/232/344/271/211/347/261/273.md" → src/classes/docs/introduction.md} +0 -0
  270. /package/{docs/CloudCC/350/207/252/345/256/232/344/271/211/347/273/204/344/273/266/344/275/277/347/224/250/350/257/264/346/230/216.md" → src/plugin/docs/introduction.md} +0 -0
  271. /package/{docs/cloudcc/345/256/232/346/227/266/344/275/234/344/270/232.md" → src/timer/docs/devguide.md} +0 -0
  272. /package/{docs/cloudcc/345/256/232/346/227/266/347/261/273.md" → src/timer/docs/introduction.md} +0 -0
  273. /package/{docs//350/247/246/345/217/221/345/231/250/347/261/273.md" → src/triggers/docs/introduction.md} +0 -0
@@ -0,0 +1,79 @@
1
+ # CloudCC 定时作业(scheduleJob)开发指南
2
+
3
+ 本指南说明 `scheduleJob` 模块在 cloudcc-cli
4
+ 中的能力边界、命令参数、接口映射与二次开发注意事项。
5
+
6
+ ---
7
+
8
+ ## 一、模块定位
9
+
10
+ `scheduleJob` 只负责“作业管理”相关能力:
11
+
12
+ - 查询作业列表:`get`
13
+ - 查询作业详情:`detail`
14
+ - 删除作业:`delete`
15
+ - 文档查看:`doc`
16
+
17
+ ---
18
+
19
+ ## 二、CLI 命令说明
20
+
21
+ ### 1) 查询作业列表
22
+
23
+ ```bash
24
+ cc get scheduleJob <projectPath> [encodedCondJson]
25
+ ```
26
+
27
+ 参数说明:
28
+
29
+ | 参数 | 必填 | 说明 |
30
+ | ----------------- | ---- | ------------------------- |
31
+ | `projectPath` | 否 | 项目路径,默认当前目录 |
32
+ | `encodedCondJson` | 否 | URI 编码后的查询条件 JSON |
33
+
34
+ ---
35
+
36
+ ### 2) 查询作业详情
37
+
38
+ ```bash
39
+ cc detail scheduleJob <jobId> [projectPath]
40
+ ```
41
+
42
+ 参数说明:
43
+
44
+ | 参数 | 必填 | 说明 |
45
+ | ------------- | ---- | ---------------------- |
46
+ | `jobId` | 是 | 定时作业 ID |
47
+ | `projectPath` | 否 | 项目路径,默认当前目录 |
48
+
49
+ ---
50
+
51
+ ### 3) 删除作业
52
+
53
+ ```bash
54
+ cc delete scheduleJob <jobId> [projectPath]
55
+ ```
56
+
57
+ 参数说明:
58
+
59
+ | 参数 | 必填 | 说明 |
60
+ | ------------- | ---- | ---------------------- |
61
+ | `jobId` | 是 | 待删除作业 ID |
62
+ | `projectPath` | 否 | 项目路径,默认当前目录 |
63
+
64
+ ---
65
+
66
+ ### 4) 查看文档
67
+
68
+ ```bash
69
+ cc doc scheduleJob <introduction|devguide>
70
+ ```
71
+
72
+ ---
73
+
74
+ ## 三、关联文档
75
+
76
+ - `cc doc timer introduction`
77
+ - `cc doc timer devguide`
78
+
79
+ ---
@@ -0,0 +1,101 @@
1
+ # CloudCC 定时作业(scheduleJob)介绍
2
+
3
+ 定时作业(`scheduleJob`)用于查看和管理已经配置在 CloudCC 平台中的调度任务。它聚焦于**作业管理侧**,常用于运维排查、任务巡检和作业下线。依赖定时类。
4
+
5
+ ---
6
+
7
+ ## 快速开始(CLI 命令)
8
+
9
+ ### 支持的操作
10
+
11
+ | 操作 | 说明 |
12
+ |------|------|
13
+ | `get` | 查询定时作业列表 |
14
+ | `detail` | 查看单个作业详情 |
15
+ | `delete` | 删除指定作业 |
16
+ | `doc` | 查看模块文档 |
17
+
18
+ ---
19
+
20
+ ## 什么时候用 scheduleJob
21
+
22
+ 当你需要处理“已配置好的定时任务”时,优先使用 `scheduleJob`:
23
+
24
+ - 日常巡检:查看当前有哪些任务、是否符合预期
25
+ - 故障排查:根据作业 ID 查看具体配置
26
+ - 任务治理:删除无效、重复或已弃用的作业
27
+
28
+ ---
29
+
30
+ ## 与 timer 的关系
31
+
32
+ - `timer`:偏向**开发与发布定时类代码**(创建、发布、拉取源码等)
33
+ - `scheduleJob`:偏向**运行时作业管理**(查列表、查详情、删除)
34
+
35
+ 通常流程是:先通过 `timer` 交付能力,再通过 `scheduleJob` 做线上作业管理。
36
+
37
+ ---
38
+
39
+ ## 后台页面配置说明(与实际界面对齐)
40
+
41
+ 根据当前定时作业配置页面,创建/编辑作业时主要关注以下字段:
42
+
43
+ | 配置项 | 是否必填 | 说明 |
44
+ |------|------|------|
45
+ | 作业程序 | 是 | 选择要执行的定时类程序(即作业绑定的业务逻辑) |
46
+ | 频率 | 是 | 支持 `每周`、`每月` |
47
+ | 星期(仅每周) | 是(每周时) | 勾选周一到周日,可多选,表示每周哪些天触发 |
48
+ | 开始 | 是 | 作业生效开始日期 |
49
+ | 结束 | 是 | 作业生效结束日期 |
50
+ | 执行时间 | 是 | 每次触发的具体时间点(例如 `上午 0:00`) |
51
+
52
+ ### 频率规则
53
+
54
+ - 选择 `每周`:必须至少勾选一个星期值(周一到周日)
55
+ - 选择 `每月`:按每月规则触发(具体以后台月度配置项为准)
56
+ - 所有计划都会受 `开始` 和 `结束` 日期约束,超出范围不触发
57
+
58
+ ### 示例:每周定时任务
59
+
60
+ ```text
61
+ 作业程序:客户长时间未联系新建活动
62
+ 频率:每周
63
+ 星期:星期一、星期三、星期五
64
+ 开始:2026-04-01
65
+ 结束:2026-12-31
66
+ 执行时间:上午 08:00
67
+ ```
68
+
69
+ 该配置表示:在有效期内,每周一/三/五上午 08:00 执行一次选定作业程序。
70
+
71
+ ---
72
+
73
+ ## 命令示例
74
+
75
+ ```bash
76
+ # 1) 查看全部定时作业
77
+ cc get scheduleJob .
78
+
79
+ # 2) 带条件查询(URI 编码 JSON)
80
+ cc get scheduleJob . '%7B%22name%22%3A%22%E6%8A%A5%E8%A1%A8%22%7D'
81
+
82
+ # 3) 查看某个作业详情
83
+ cc detail scheduleJob a0I9D000000XXXXUAI .
84
+
85
+ # 4) 删除作业(危险操作)
86
+ cc delete scheduleJob a0I9D000000XXXXUAI .
87
+
88
+ # 5) 查看文档
89
+ cc doc scheduleJob introduction
90
+ cc doc scheduleJob devguide
91
+ ```
92
+
93
+ ---
94
+
95
+ ## 注意事项
96
+
97
+ - `delete` 为破坏性操作,建议先 `detail` 再删除
98
+ - 查询条件参数需使用 URI 编码 JSON
99
+ - 请确保当前项目目录已完成 CloudCC CLI 初始化并可读取访问配置
100
+
101
+ ---
@@ -0,0 +1,26 @@
1
+ const { getPackageJson } = require("../../utils/config");
2
+ const { postClass } = require("../../utils/http");
3
+
4
+ async function get(projectPath = process.cwd(), encodedCondJson, isMcp = false) {
5
+ let body = {};
6
+ if (encodedCondJson) {
7
+ body = JSON.parse(decodeURI(encodedCondJson));
8
+ }
9
+ const config = await getPackageJson(projectPath);
10
+ const res = await postClass(
11
+ config.setupSvc + "/api/schedulAbleprg/list",
12
+ body,
13
+ config.accessToken
14
+ );
15
+
16
+ if (res && res.result) {
17
+ const list = Array.isArray(res.data) ? res.data : [];
18
+ if (!isMcp) {
19
+ console.log(JSON.stringify(list));
20
+ }
21
+ return list;
22
+ }
23
+ throw new Error("Get Schedule Job Failed: " + (res?.returnInfo || res?.message || "Unknown error"));
24
+ }
25
+
26
+ module.exports = get;
@@ -0,0 +1,15 @@
1
+ const cc = {};
2
+ cc.get = require("./get");
3
+ cc.detail = require("./detail");
4
+ cc.delete = require("./delete");
5
+ cc.doc = require("./doc");
6
+
7
+ function main(action, argvs) {
8
+ if (action === "doc") {
9
+ cc.doc(argvs);
10
+ return;
11
+ }
12
+ cc[action](argvs[2], argvs[3]);
13
+ }
14
+
15
+ module.exports = main;
@@ -0,0 +1,112 @@
1
+ const { checkUpdate } = require("../../utils/checkVersion.js");
2
+ const chalk = require("chalk");
3
+ const { post } = require("../../utils/http.js");
4
+ const { getPackageJson } = require("../../utils/config.js");
5
+
6
+ const BaseUrl = "https://developer.apis.cloudcc.cn";
7
+
8
+ function parseScriptPath(scriptPath) {
9
+ const [objName, scriptName] = String(scriptPath || "").split("/");
10
+ if (!objName || !scriptName) {
11
+ throw new Error('Script path format error, should be "objName/scriptName"');
12
+ }
13
+ return { objName, scriptName };
14
+ }
15
+
16
+ async function resolveScriptIdFromRemote({ objName, scriptName }, devConsoleConfig) {
17
+ const body = {
18
+ pageSize: 50,
19
+ pageNo: 1,
20
+ condition: {
21
+ objName,
22
+ scriptName,
23
+ pageLabel: "",
24
+ id: ""
25
+ }
26
+ };
27
+
28
+ const res = await post(
29
+ (devConsoleConfig.baseUrl || BaseUrl) + "/devconsole/script/pageClientScript",
30
+ body,
31
+ devConsoleConfig
32
+ );
33
+
34
+ if (!res || !res.result) {
35
+ throw new Error("Query Client Script Failed: " + (res?.returnInfo || "Unknown error"));
36
+ }
37
+
38
+ const list = res.data?.list || [];
39
+ const match = list.find(it => it && it.objName === objName && it.scriptName === scriptName) || list[0];
40
+ if (!match || !match.id) {
41
+ throw new Error(`Cannot resolve script id from remote: ${objName}/${scriptName}`);
42
+ }
43
+ return match.id;
44
+ }
45
+
46
+ async function del(argvs) {
47
+ const res = await checkUpdate();
48
+ if (res) return;
49
+
50
+ const arg = argvs[2]; // scriptId or "objName/scriptName"
51
+ const projectPath = argvs[3] || process.cwd();
52
+ if (!arg) {
53
+ console.error();
54
+ console.error(chalk.red("Delete Client Script Failed: missing script id or path"));
55
+ console.error();
56
+ return;
57
+ }
58
+
59
+ try {
60
+ const devConsoleConfig = await getPackageJson(projectPath);
61
+ if (!devConsoleConfig || !devConsoleConfig.accessToken) {
62
+ console.error();
63
+ console.error(chalk.red("Delete Client Script Failed: accessToken is missing. Please check config/cache."));
64
+ console.error();
65
+ return;
66
+ }
67
+
68
+ let scriptId = arg;
69
+ if (String(arg).includes("/")) {
70
+ const scriptPath = parseScriptPath(arg);
71
+ scriptId = await resolveScriptIdFromRemote(scriptPath, devConsoleConfig);
72
+ }
73
+
74
+ const now = new Date();
75
+ const timeStr =
76
+ now.getFullYear() +
77
+ "-" +
78
+ String(now.getMonth() + 1).padStart(2, "0") +
79
+ "-" +
80
+ String(now.getDate()).padStart(2, "0") +
81
+ " " +
82
+ String(now.getHours()).padStart(2, "0") +
83
+ ":" +
84
+ String(now.getMinutes()).padStart(2, "0") +
85
+ ":" +
86
+ String(now.getSeconds()).padStart(2, "0");
87
+ console.error(chalk.green(timeStr));
88
+ console.error(chalk.green("Deleting, please wait..."));
89
+
90
+ const url = (devConsoleConfig.baseUrl || BaseUrl) + "/devconsole/script/deleteClientScript";
91
+ const result = await post(url, { id: scriptId }, devConsoleConfig);
92
+
93
+ if (result && result.result) {
94
+ console.error();
95
+ console.error(chalk.green("Success!"));
96
+ console.error();
97
+ return true;
98
+ }
99
+ console.error();
100
+ console.error(chalk.red("Delete Client Script Failed:" + (result?.returnInfo || "Unknown error")));
101
+ console.error();
102
+ return false;
103
+ } catch (e) {
104
+ console.error();
105
+ console.error(chalk.red("Delete Client Script Failed:" + (e?.message || e)));
106
+ console.error();
107
+ return false;
108
+ }
109
+ }
110
+
111
+ module.exports = del;
112
+
package/src/script/doc.js CHANGED
@@ -1,259 +1,45 @@
1
- /**
2
- * script 文档统一入口(全量一次性输出)
3
- */
4
1
  const fs = require("fs");
5
2
  const path = require("path");
6
3
 
7
- function generateFullMarkdownDoc() {
8
- const lines = [
9
- "# CloudCC 客户端脚本开发指南",
10
- "",
11
- "> 本文档参考 CloudCC 官方「客户端脚本」文档整理而成:[客户端脚本](https://help.cloudcc.cn/product03/ke-hu-duan-jiao-ben/)。 ",
12
- "> 目标:指导开发者在不同页面(列表、新建/编辑、详情、全局)特定时机运行 JavaScript,基于 CCDK 能力实现字段控制、布局调整等前端增强。",
13
- "",
14
- "---",
15
- "",
16
- "## 1. 概念与入口",
17
- "",
18
- "### 1.1 什么是客户端脚本",
19
- "",
20
- "- 客户端脚本是在 **浏览器端**、特定页面和时机执行的一段 JavaScript。 ",
21
- "- 依托 `$CCDK` 提供的桥接能力,可以:",
22
- " - 显示提示信息",
23
- " - 控制字段显隐 / 只读",
24
- " - 调整页面 DOM 结构",
25
- " - 在保存前/后执行校验或自定义逻辑",
26
- "",
27
- "### 1.2 进入客户端脚本设置页面",
28
- "",
29
- "1. 登录 CloudCC 系统 ",
30
- "2. 点击右上角头像,选择「开发者平台」(仅管理员简档可见) ",
31
- "3. 左侧菜单:`扩展 → 客户端脚本`",
32
- "",
33
- "---",
34
- "",
35
- "## 2. 创建第一个客户端脚本",
36
- "",
37
- "### 2.1 新建脚本",
38
- "",
39
- "1. 在「客户端脚本」列表页,点击右上角「新建」 ",
40
- "2. 填写基本信息(名称、适用对象/页面/事件等),进入代码编辑页面 ",
41
- "3. 在代码输入区输入示例代码:",
42
- "",
43
- "```javascript",
44
- "$CCDK.CCMessage.showMessage('hello cloudCC');",
45
- "```",
46
- "",
47
- "4. 点击右上角「保存」",
48
- "",
49
- "### 2.2 回到前台查看效果",
50
- "",
51
- "例如: ",
52
- "- 配置为在「客户详情页 onLoad」执行 ",
53
- "- 返回前台 → 打开客户菜单 → 进入任意一条客户详情 ",
54
- "- 页面加载完成后,会看到 `hello cloudCC` 提示信息",
55
- "",
56
- "---",
57
- "",
58
- "## 3. 利用 devid 精确控制页面元素",
59
- "",
60
- "> 为方便控制页面元素,平台在关键 DOM 节点上添加了 `devid` 自定义属性,并使用特定业务 ID 绑定。可通过 F12 查看并用于脚本选择器。",
61
- "",
62
- "### 3.1 示例:禁用编辑页的「分级」字段",
63
- "",
64
- "#### 第一步:查看 devid",
65
- "",
66
- "1. 按 `F12` 打开浏览器开发者工具 ",
67
- "2. 切换到「元素」(Elements) 面板 ",
68
- "3. 使用元素选择器选中「分级」字段对应 DOM ",
69
- "4. 在右侧/标签属性中查找并复制该元素的 `devid` 值备用",
70
- "",
71
- "#### 第二步:创建客户端脚本",
72
- "",
73
- "在客户端脚本中,根据 `devid` 操作 DOM:",
74
- "",
75
- "```javascript",
76
- "// 方式一:通过动态插入样式禁用点击",
77
- "let style = document.createElement('style');",
78
- "style.type = 'text/css';",
79
- "style.innerHTML = '[devid=\"ffe201100003855g6Ipz\"]{pointer-events:none}';",
80
- "document.getElementsByTagName('head').item(0).appendChild(style);",
81
- "",
82
- "// 方式二:直接隐藏某个元素",
83
- "let dd = document.querySelector('div[devid=\"ffe201100003428r65pk\"]');",
84
- "if (dd) {",
85
- " dd.style.display = \"none\";",
86
- "}",
87
- "```",
88
- "",
89
- "保存后回到前台,进入对应页面查看效果。",
90
- "",
91
- "### 3.2 示例:隐藏详情页某个字段",
92
- "",
93
- "同样通过 `devid` 精确定位字段,再注入样式:",
94
- "",
95
- "```javascript",
96
- "// 隐藏并不占用空间",
97
- "let style = document.createElement('style');",
98
- "style.type = 'text/css';",
99
- "style.innerHTML = '[devid=\"ffe20220523account01\"]{display:none !important}';",
100
- "document.getElementsByTagName('head').item(0).appendChild(style);",
101
- "```",
102
- "",
103
- "```javascript",
104
- "// 隐藏但保留空间",
105
- "let style = document.createElement('style');",
106
- "style.type = 'text/css';",
107
- "style.innerHTML = '[devid=\"ffe20220523account01\"]{visibility:hidden !important}';",
108
- "document.getElementsByTagName('head').item(0).appendChild(style);",
109
- "```",
110
- "",
111
- "### 3.3 示例:移动页面元素到其他位置",
112
- "",
113
- "```javascript",
114
- "// 获取要移动的节点",
115
- "const moveNode = document.querySelector('[devid=\"aee2024EFBBA5EEfs1Ta\"]');",
116
- "// 目标节点",
117
- "const targetNode = document.querySelector('[devid=\"adf2024D33E03DA6xzBj\"]');",
118
- "// 目标节点的父节点",
119
- "const targetParentNode = targetNode.parentNode;",
120
- "",
121
- "// 将需要移动的节点插入到目标节点前面",
122
- "if (moveNode && targetNode && targetParentNode) {",
123
- " targetParentNode.insertBefore(moveNode, targetNode);",
124
- "}",
125
- "```",
126
- "",
127
- "**注意**:DOM 可能尚未渲染完成,可结合定时器或 `MutationObserver` 等机制等待节点出现。",
128
- "",
129
- "---",
130
- "",
131
- "## 4. 页面类型与脚本事件映射",
132
- "",
133
- "> 系统页面大致分为「全局、列表、新建/编辑、详情」等类型,每种页面支持不同事件,脚本在对应时机执行。",
134
- "",
135
- "以下是官方提供的主要事件(简化说明):",
136
- "",
137
- "### 4.1 全局类型",
138
- "",
139
- "- **onCreate**",
140
- " - 适用:PC / HS",
141
- " - 函数签名:`function test($CCDK, obj = {})`",
142
- " - 说明:项目启动时触发(业务页面代码尚未执行)",
143
- "",
144
- "- **onLoad**",
145
- " - 适用:PC / HS",
146
- " - 场景:全局 UI 首次展示后",
147
- "",
148
- "- **onDestroy**",
149
- " - 适用:PC / HS",
150
- " - 场景:关闭 Tab / 更改流程等导致当前应用关闭时",
151
- "",
152
- "### 4.2 视图页(列表页面)",
153
- "",
154
- "事件函数统一形如:`function test($CCDK, obj = {})`",
155
- "",
156
- "- **onCreated**",
157
- " - 时机:进入视图页,但 DOM 还未创建 ",
158
- "- **onLoad**",
159
- " - 时机:首次进入,或点击搜索刷新列表数据后 ",
160
- "- **onDestroy**",
161
- " - 时机:离开列表页(如进入详情页等)",
162
- "",
163
- "### 4.3 新建/编辑页",
164
- "",
165
- "同样使用 `function test($CCDK, obj = {})`:",
166
- "",
167
- "- **onCreated**",
168
- " - 时机:进入新建/编辑页面,但 DOM 尚未创建 ",
169
- "- **onLoad**",
170
- " - 时机:详情数据加载完成、页面渲染结束 ",
171
- "- **onDestroy**",
172
- " - 时机:离开新建/编辑页面 ",
173
- "- **beforeSave**",
174
- " - 参数:`obj.detailData` 为 key-value 形式的详情数据,**可以在这里修改** ",
175
- " - 时机:点击保存按钮时触发,适合做前端校验与补充字段赋值 ",
176
- "- **afterSave**",
177
- " - 时机:保存接口请求完成后触发 ",
178
- "- **onChange**",
179
- " - 时机:编辑某个字段、光标失焦,且 value 有变化时触发",
180
- "",
181
- "### 4.4 详情页",
182
- "",
183
- "- **onLoad**",
184
- " - 适用:PC / HS ",
185
- " - 时机:获取详情基础数据并完成 DOM 渲染后触发 ",
186
- "",
187
- "---",
188
- "",
189
- "## 5. 实战建议与注意事项",
190
- "",
191
- "### 5.1 DOM 渲染时机",
192
- "",
193
- "- 部分页面在脚本执行时 DOM 可能尚未完全渲染,建议:",
194
- " - 使用 `setTimeout` / 轮询检查目标节点是否存在 ",
195
- " - 或配合 `MutationObserver` 监听 DOM 变化后再操作 ",
196
- "",
197
- "### 5.2 与 CCDK 的配合",
198
- "",
199
- "- `$CCDK` 提供了多种能力,如:",
200
- " - `CCMessage`:消息提示 ",
201
- " - `CCLoad`:脚本/样式加载 ",
202
- " - 其他与对象/类交互的桥接能力 ",
203
- "- 客户端脚本中应优先调用 `$CCDK` 而非自行拼接接口。",
204
- "",
205
- "### 5.3 与自定义组件的边界",
206
- "",
207
- "- 客户端脚本更适合:",
208
- " - 简单的字段控制",
209
- " - 小范围布局微调",
210
- " - 轻量交互增强 ",
211
- "- 更复杂的 UI、交互与业务逻辑推荐用「自定义组件」实现(详见 `custom-component-dev.md`)。",
212
- "",
213
- "---",
214
- "",
215
- "## 6. 客户端脚本开发 Checklist",
216
- "",
217
- "- [ ] 已在「开发者平台 → 客户端脚本」正确选择对象、页面类型与事件(onLoad / beforeSave 等) ",
218
- "- [ ] 使用 `$CCDK` 能力而非手工拼接接口或直接依赖不稳定的全局变量 ",
219
- "- [ ] 所有 DOM 操作都考虑了渲染时机,避免因节点不存在而报错 ",
220
- "- [ ] 通过 `devid` 精确定位关键元素,避免依赖脆弱的层级或 class 选择器 ",
221
- "- [ ] 对性能敏感操作(如定时器、频繁 DOM 查询)做了节流或销毁处理 ",
222
- "- [ ] 已区分客户端脚本与自定义组件的职责,将复杂 UI / 交互放到组件中实现 ",
223
- "- [ ] 在目标环境中完整测试:列表 / 新建 / 编辑 / 详情等场景,确认无脚本错误和布局异常 ",
224
- "",
225
- ];
4
+ const DOCS_DIR = path.join(__dirname, "docs");
5
+ const INTRODUCTION = path.join(DOCS_DIR, "introduction.md");
6
+ const DEVGUIDE = path.join(DOCS_DIR, "devguide.md");
226
7
 
227
- const base = lines.join("\n");
228
- const ccdkPath = path.join(__dirname, "..", "api", "ccdk-sdk.md");
229
- let ccdkContent = "";
8
+ function readDocOrFallback(filePath, fallback) {
230
9
  try {
231
- ccdkContent = fs.readFileSync(ccdkPath, "utf8");
10
+ return fs.readFileSync(filePath, "utf8").trim();
232
11
  } catch (e) {
233
- ccdkContent = `# CloudCC 前端 SDK(cloudcc-ccdk)使用指南\n\n(未找到文件:${ccdkPath})\n`;
12
+ return fallback;
234
13
  }
14
+ }
235
15
 
236
- return [
237
- base,
238
- "",
239
- "---",
240
- "",
241
- "## 附录:CCDK SDK 速查",
242
- "",
243
- "> 来源:`src/api/ccdk-sdk.md`",
244
- "",
245
- ccdkContent.trim(),
246
- "",
247
- ].join("\n");
16
+ function getIntroductionDoc() {
17
+ return readDocOrFallback(
18
+ INTRODUCTION,
19
+ `# CloudCC 客户端脚本介绍\n\n(未找到文件:${INTRODUCTION})\n`
20
+ );
248
21
  }
249
22
 
250
- function doc() {
251
- const content = generateFullMarkdownDoc();
252
- console.log(content);
253
- return content;
23
+ function getDevGuideDoc() {
24
+ return readDocOrFallback(
25
+ DEVGUIDE,
26
+ `# CloudCC 客户端脚本开发指南\n\n(未找到文件:${DEVGUIDE})\n`
27
+ );
254
28
  }
255
29
 
256
- // 兼容旧调用方:仍提供同名入口(但都返回全量文档)
257
- doc.getEditGuide = doc;
30
+ function doc(argvs = []) {
31
+ const subType = String(argvs[2] || "").trim().toLowerCase();
32
+ if (!subType || subType === "devguide") {
33
+ const content = getDevGuideDoc();
34
+ console.log(content);
35
+ return content;
36
+ }
37
+ if (subType === "introduction") {
38
+ const content = getIntroductionDoc();
39
+ console.log(content);
40
+ return content;
41
+ }
42
+ throw new Error(`doc 不支持的子命令: ${argvs[2]},请使用 introduction 或 devguide`);
43
+ }
258
44
 
259
45
  module.exports = doc;