cloudcc-cli 2.2.6 → 2.2.8

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 (122) hide show
  1. package/.cloudcc-cache.json +24 -20
  2. package/README.md +24 -0
  3. package/bin/cc.js +7 -0
  4. package/cloudcc-cli-dev/BACKEND_CODE.md +114 -0
  5. package/cloudcc-cli-dev/CLI_CHEATSHEET.md +90 -0
  6. package/cloudcc-cli-dev/INSTALL_AND_BOOTSTRAP.md +59 -0
  7. package/cloudcc-cli-dev/OBJECTS_AND_FIELDS.md +120 -0
  8. package/cloudcc-cli-dev/REQUIREMENTS_BREAKDOWN.md +98 -0
  9. package/cloudcc-cli-dev/SKILL.md +39 -0
  10. package/cloudcc-cli-dev/VUE_CUSTOM_COMPONENT.md +50 -0
  11. package/java/com/cloudcc/core/BaseException.java +100 -0
  12. package/java/com/cloudcc/core/BusiException.java +43 -0
  13. package/java/com/cloudcc/core/CCService.java +3 -1
  14. package/java/com/cloudcc/core/StringUtils.java +7 -0
  15. package/java/com/cloudcc/core/TimeUtil.java +33 -0
  16. package/java/com/cloudcc/core/UserInfo.java +9 -0
  17. package/package.json +7 -1
  18. package/pom.xml +1 -1
  19. package/src/api/backend-sdk-java.md +427 -0
  20. package/src/api/ccdk-sdk.md +1039 -0
  21. package/src/classes/doc.js +486 -0
  22. package/src/classes/index.js +1 -0
  23. package/src/mcp/cliRunner.js +61 -0
  24. package/src/mcp/index.js +41 -3
  25. package/src/mcp/tools/Application Creator/handler.js +7 -9
  26. package/src/mcp/tools/Approval/handler.js +34 -151
  27. package/src/mcp/tools/Class Creator/handler.js +18 -15
  28. package/src/mcp/tools/Class Detail Retriever/handler.js +8 -9
  29. package/src/mcp/tools/Class Editor Guide/handler.js +5 -19
  30. package/src/mcp/tools/Class List Retriever/handler.js +8 -3
  31. package/src/mcp/tools/Class Publisher/handler.js +7 -9
  32. package/src/mcp/tools/Class Puller/handler.js +6 -65
  33. package/src/mcp/tools/Client Script Detail Retriever/handler.js +12 -18
  34. package/src/mcp/tools/Client Script Editor Guide/handler.js +9 -605
  35. package/src/mcp/tools/Client Script List Retriever/handler.js +30 -33
  36. package/src/mcp/tools/Client Script Publisher/handler.js +12 -11
  37. package/src/mcp/tools/Client Script Puller/handler.js +23 -30
  38. package/src/mcp/tools/CloudCC Development Overview/handler.js +11 -5
  39. package/src/mcp/tools/Component Creator/handler.js +12 -11
  40. package/src/mcp/tools/Component Detail Retriever/handler.js +12 -9
  41. package/src/mcp/tools/Component Editor Guide/handler.js +5 -22
  42. package/src/mcp/tools/Component List Retriever/handler.js +21 -18
  43. package/src/mcp/tools/Component Publisher/handler.js +25 -3
  44. package/src/mcp/tools/Component Puller/handler.js +13 -16
  45. package/src/mcp/tools/Dev Environment Creator/handler.js +5 -72
  46. package/src/mcp/tools/Dev Environment Validator/handler.js +5 -66
  47. package/src/mcp/tools/Developer Key Setup Guide/handler.js +11 -20
  48. package/src/mcp/tools/JSP Migrator/handler.js +842 -0
  49. package/src/mcp/tools/Menu Creator/handler.js +7 -30
  50. package/src/mcp/tools/Object Creator/handler.js +14 -6
  51. package/src/mcp/tools/Object Fields Creator/handler.js +9 -10
  52. package/src/mcp/tools/Object Fields Retriever/handler.js +6 -3
  53. package/src/mcp/tools/Object List Retriever/handler.js +10 -7
  54. package/src/mcp/tools/Scheduled Class Creator/handler.js +12 -16
  55. package/src/mcp/tools/Scheduled Class Detail Retriever/handler.js +7 -9
  56. package/src/mcp/tools/Scheduled Class List Retriever/handler.js +21 -23
  57. package/src/mcp/tools/Scheduled Class Publisher/handler.js +7 -9
  58. package/src/mcp/tools/Scheduled Class Puller/handler.js +6 -70
  59. package/src/mcp/tools/Trigger Creator/handler.js +12 -20
  60. package/src/mcp/tools/Trigger Detail Retriever/handler.js +7 -9
  61. package/src/mcp/tools/Trigger Editor Guide/handler.js +10 -35
  62. package/src/mcp/tools/Trigger List Retriever/handler.js +12 -4
  63. package/src/mcp/tools/Trigger Publisher/handler.js +8 -11
  64. package/src/mcp/tools/Trigger Puller/handler.js +12 -17
  65. package/src/plugin/doc.js +801 -0
  66. package/src/plugin/get.js +0 -1
  67. package/src/plugin/index.js +1 -0
  68. package/src/plugin/publish1.js +34 -20
  69. package/src/plugin/pull.js +69 -31
  70. package/src/project/doc.js +378 -0
  71. package/src/project/index.js +1 -0
  72. package/src/script/doc.js +259 -0
  73. package/src/script/index.js +1 -0
  74. package/src/timer/index.js +1 -0
  75. package/src/triggers/doc.js +342 -0
  76. package/src/triggers/index.js +5 -0
  77. package/target/ccopenapi-0.0.4-classes.jar +0 -0
  78. package/target/ccopenapi-0.0.4.jar +0 -0
  79. package/target/classes/com/cloudcc/core/BaseException.class +0 -0
  80. package/target/classes/com/cloudcc/core/BusiException.class +0 -0
  81. package/target/classes/com/cloudcc/core/CCService.class +0 -0
  82. package/target/classes/com/cloudcc/core/StringUtils.class +0 -0
  83. package/target/classes/com/cloudcc/core/TimeUtil.class +0 -0
  84. package/target/classes/com/cloudcc/core/UserInfo.class +0 -0
  85. package/target/maven-archiver/pom.properties +1 -1
  86. package/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +3 -1
  87. package/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +3 -3
  88. package/template/lib/ccopenapi-0.0.4.jar +0 -0
  89. package/test/application.cli.test.js +30 -0
  90. package/test/classes.cli.test.js +121 -0
  91. package/test/fields.cli.test.js +69 -0
  92. package/test/mcp.cli.test.js +21 -0
  93. package/test/menu.cli.test.js +41 -0
  94. package/test/object.cli.test.js +64 -0
  95. package/test/plugin.cli.test.js +109 -0
  96. package/test/script.cli.test.js +101 -0
  97. package/test/timer.cli.test.js +107 -0
  98. package/test/trigger.cli.test.js +146 -0
  99. package/.vscode/settings.json +0 -3
  100. package/bin/mcp-svc.js +0 -13
  101. package/src/mcp/MCP/345/234/272/346/231/257/346/250/241/346/213/237.md +0 -8
  102. package/src/mcp/index-sse-svc.js +0 -126
  103. package/src/mcp/index-streamable-svc.js +0 -180
  104. package/src/mcp/tools/Class Detail Retriever/prompt.js +0 -37
  105. package/src/mcp/tools/Class Editor Guide/prompt.js +0 -468
  106. package/src/mcp/tools/Class Publisher/prompt.js +0 -40
  107. package/src/mcp/tools/Class Puller/prompt.js +0 -49
  108. package/src/mcp/tools/Client Script Creator/handler.js +0 -179
  109. package/src/mcp/tools/CloudCC Development Overview/prompt.js +0 -871
  110. package/src/mcp/tools/Component Editor Guide/prompt.js +0 -519
  111. package/src/mcp/tools/Component Publisher/prompt.js +0 -659
  112. package/src/mcp/tools/Dev Environment Creator/prompt.js +0 -273
  113. package/src/mcp/tools/Dev Environment Validator/prompt.js +0 -193
  114. package/src/mcp/tools/Developer Key Setup Guide/prompt.js +0 -71
  115. package/src/mcp/tools/Object Fields Retriever/prompt.js +0 -10
  116. package/src/mcp/tools/Object List Retriever/prompt.js +0 -10
  117. package/src/mcp/tools/ccdk/fetcher.js +0 -18
  118. package/src/mcp/tools/ccdk/handler.js +0 -98
  119. package/src/mcp/tools/ccdk/prompt.js +0 -453
  120. package/target/ccopenapi-0.0.3-classes.jar +0 -0
  121. package/target/ccopenapi-0.0.3.jar +0 -0
  122. package/template/lib/ccopenapi-0.0.3.jar +0 -0
@@ -1,34 +1,38 @@
1
1
  {
2
+ "version_check": {
3
+ "timestamp": 1773991959371
4
+ },
5
+ "Je6yZ0TRyQFtpcH1gVKctqNhL": {
6
+ "username": "admin@testuat.com",
7
+ "baseUrl": "https://uat-one.cloudcc.cn/ccdomaingateway",
8
+ "orgId": "org28e02f50c6d727bbc",
9
+ "clientId": "MkZxyFscNEjHjQfR6lK4ZG8Ac",
10
+ "version": "public",
11
+ "openSecretKey": "ae62146f-e8d8-4cba-a60c-0d1e0cb80375",
12
+ "safetyMark": "Je6yZ0TRyQFtpcH1gVKctqNhL",
13
+ "CloudCCDev": "",
14
+ "apiSvc": "https://uat-one.cloudcc.cn/ccdomaingateway/apisvc",
15
+ "setupSvc": "https://uat-one.cloudcc.cn/ccdomaingateway/setup",
16
+ "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJjbG91ZGNjIiwibG9naW5OYW1lIjoiYWRtaW5AdGVzdHVhdC5jb20iLCJiaW5kaW5nIjoiYzQ2MTFjMmYtZGYyNS00NTQ5LTkxZTktZDkzY2YyMGFjOWIzIiwiQ2xpZW50SWQiOiJNa1p4eUZzY05FakhqUWZSNmxLNFpHOEFjIiwiZXhwIjoxNzczODk5MzM1LCJvcmdJZCI6Im9yZzI4ZTAyZjUwYzZkNzI3YmJjIn0._cpwUjyBbaHYGphZ5pGAksySYeG_ErHx8mEc3r03mns",
17
+ "secretKey": "40e68c50d21f41a1a583d7a7d55da3",
18
+ "pluginToken": "unified20269eec2d32c",
19
+ "timestamp": 1773812935285
20
+ },
2
21
  "QVOllKTKhnm5oHp49tCsSHvHg": {
3
22
  "username": "appstore@cloudcc.cn",
4
23
  "baseUrl": "https://yundong.lightning.cloudcc.cn/ccdomaingateway",
24
+ "setupSvc": "https://yundong.lightning.cloudcc.cn/ccdomaingateway/setup",
5
25
  "orgId": "org9697882320dc71f28",
6
26
  "clientId": "bIA1IXRHl28hBkaQdiwQ63hZZ",
7
27
  "version": "public",
8
28
  "openSecretKey": "15bba2de-e6e7-42dc-9d7c-f9b157cd0ddb",
9
29
  "CloudCCDev": "",
10
30
  "safetyMark": "QVOllKTKhnm5oHp49tCsSHvHg",
31
+ "buildVersion": "v2",
11
32
  "apiSvc": "https://yundong.lightning.cloudcc.cn/ccdomaingateway/apisvc",
12
- "setupSvc": "https://yundong.lightning.cloudcc.cn/ccdomaingateway/setup",
13
- "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJjbG91ZGNjIiwibG9naW5OYW1lIjoiYXBwc3RvcmVAY2xvdWRjYy5jbiIsImJpbmRpbmciOiJkYTY1NWYwOS02NmVmLTQ0NTktOTU5Ny05MmI3YWI1MTkzNTciLCJDbGllbnRJZCI6ImJJQTFJWFJIbDI4aEJrYVFkaXdRNjNoWloiLCJleHAiOjE3Njk3NjQ5NzYsIm9yZ0lkIjoib3JnOTY5Nzg4MjMyMGRjNzFmMjgifQ.Md2bT3oZKT-WHMLmEBdKw-sA9Hh2FC61qKTZffXHOJc",
33
+ "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJjbG91ZGNjIiwibG9naW5OYW1lIjoiYXBwc3RvcmVAY2xvdWRjYy5jbiIsImJpbmRpbmciOiJhZDRmYWE4Ny0yNzZkLTRkNjQtYTcxZi0yZjdmZWUwNmExYTIiLCJDbGllbnRJZCI6ImJJQTFJWFJIbDI4aEJrYVFkaXdRNjNoWloiLCJleHAiOjE3NzQxNjQ3NjEsIm9yZ0lkIjoib3JnOTY5Nzg4MjMyMGRjNzFmMjgifQ.x2NLnkbHtx9J1qKMBG04PWVjoplNJFR6dpDNZLz28m0",
14
34
  "secretKey": "d99313b4298544bc8ca1ee7459227b",
15
- "pluginToken": "unified202648c3bd21f",
16
- "timestamp": 1769592177005
17
- },
18
- "9lTJpVZ7Gz6Q7Uu8KuO2BT4ED": {
19
- "username": "cloudcc008@126.com",
20
- "baseUrl": "https://cnbh01.cloudcc.cn/ccdomaingateway",
21
- "setupSvc": "https://cnbh01.cloudcc.cn/ccdomaingateway/setup",
22
- "orgId": "orgc481843971a8faa9a",
23
- "clientId": "mruqXvHCsu1Mp6ZiFN30ddocZ",
24
- "version": "public",
25
- "openSecretKey": "88d38e16-3d07-49de-9de4-16bace67eaa6",
26
- "safetyMark": "9lTJpVZ7Gz6Q7Uu8KuO2BT4ED",
27
- "CloudCCDev": "",
28
- "apiSvc": "https://cnbh01.cloudcc.cn/ccdomaingateway/apisvc",
29
- "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJjbG91ZGNjIiwibG9naW5OYW1lIjoiY2xvdWRjYzAwOEAxMjYuY29tIiwiYmluZGluZyI6IjMzMDk1MmUxLTY2NTgtNGUzNS04M2ZkLTRkYjRmMTE2NGM0YyIsIkNsaWVudElkIjoibXJ1cVh2SENzdTFNcDZaaUZOMzBkZG9jWiIsImV4cCI6MTc2OTc3MjU0OCwib3JnSWQiOiJvcmdjNDgxODQzOTcxYThmYWE5YSJ9.sdMAQfcYG7zdAokg5eXU0dNbHas7wmK-l2S4YREProo",
30
- "secretKey": "52f3abb9f50a4cc392dbf9549e158d",
31
- "pluginToken": "unified20265de00f22d",
32
- "timestamp": 1769599748664
35
+ "pluginToken": "unified2026624c45632",
36
+ "timestamp": 1773991961909
33
37
  }
34
38
  }
package/README.md CHANGED
@@ -22,6 +22,30 @@ sudo npm i -g cloudcc-cli
22
22
  }
23
23
  ```
24
24
 
25
+ # ReleaseV2.2.8
26
+
27
+ #### Release Date: 2026-3-24
28
+
29
+ #### Release Scope: Full
30
+
31
+ #### Release Content
32
+
33
+ - Optimization
34
+ - Adjusted custom component `publish` and `pull`
35
+ - Fixed the issue where publishing components writes back the ID
36
+
37
+ # ReleaseV2.2.7
38
+
39
+ #### Release Date: 2026-3-20
40
+
41
+ #### Release Scope: Full
42
+
43
+ #### Release Content
44
+
45
+ - Optimization
46
+ - Standardized MCP usage: the `cc` command must be used
47
+ - Added a skill for accessing the `cc` command
48
+
25
49
  # ReleaseV2.2.6
26
50
 
27
51
  #### Release Date: 2026-2-25
package/bin/cc.js CHANGED
@@ -27,6 +27,13 @@ if (!type) {
27
27
  }
28
28
  const cc = require("./index")
29
29
  try {
30
+ if (action === "doc") {
31
+ if (!cc[type]) {
32
+ throw new Error(`doc 不支持的类型: ${type}`);
33
+ }
34
+ cc[type]("doc", argvs);
35
+ return;
36
+ }
30
37
  cc[argvs[1]](argvs[0], argvs);
31
38
  } catch (e) {
32
39
  console.error()
@@ -0,0 +1,114 @@
1
+ ## 覆盖范围
2
+
3
+ 本篇聚焦 CloudCC 后端 Java 侧二开资产(通过 `cc` 命令):
4
+
5
+ - 自定义类(Class)
6
+ - 定时类(Scheduled Class / Timer)
7
+ - 触发器(Trigger)
8
+
9
+ 并给出“创建 → 拉取 → 编辑 → 发布”的闭环流程。
10
+
11
+ ---
12
+
13
+ ## 目录结构(以本仓库约定为准)
14
+
15
+ 创建后通常会生成在以下目录(项目根下):
16
+
17
+ - `classes/{ClassName}/...`
18
+ - `schedule/{ScheduleName}/...`
19
+ - `triggers/{objectName}/{triggerName}/...`
20
+
21
+ ---
22
+
23
+ ## 源码同步边界(必须理解)
24
+
25
+ 该项目使用“片段同步”策略:
26
+
27
+ - **自定义类 / 定时类 / 触发器**:只会拉取/发布 `@SOURCE_CONTENT_START` 与 `@SOURCE_CONTENT_END` 之间的内容。
28
+
29
+ 这意味着:
30
+
31
+ - 你可以在片段外保留模板、import、类结构等;真正可同步的业务逻辑写在片段内。
32
+ - 拉取会覆盖片段区域,因此片段内不要放本地专用逻辑(如临时调试代码)。
33
+
34
+ ---
35
+
36
+ ## 自定义类(Class)
37
+
38
+ ### 创建
39
+
40
+ ```bash
41
+ # 在项目根目录执行
42
+ cc create classes <ClassName>
43
+ ```
44
+
45
+ ### 拉取 / 发布(片段同步)
46
+
47
+ ```bash
48
+ cc pull classes <ClassName>
49
+ cc publish classes <ClassName>
50
+ ```
51
+
52
+ > 说明:发布/拉取只会处理 `@SOURCE_CONTENT_START` 与 `@SOURCE_CONTENT_END` 之间的代码片段。
53
+
54
+ ---
55
+
56
+ ## 定时类(Scheduled Class)
57
+
58
+ ### 创建
59
+
60
+ ```bash
61
+ # 在项目根目录执行
62
+ cc create schedule <ScheduleName>
63
+ cc pull schedule <ScheduleName>
64
+ cc publish schedule <ScheduleName>
65
+ ```
66
+
67
+ ---
68
+
69
+ ## 触发器(Trigger)
70
+
71
+ ### 创建(关键入参)
72
+
73
+ 触发器的 CLI 创建参数是一个 JSON 对象(需要 `encodeURI` 后作为单参传入):
74
+
75
+ ```bash
76
+ cc create triggers <encodedJson>
77
+ ```
78
+
79
+ JSON 字段(示例):
80
+
81
+ - `name`: 触发器名(Java 命名规范)
82
+ - `schemetableName`: 对象表名(如从对象列表拿到)
83
+ - `targetObjectId`: 目标对象 ID
84
+ - `triggerTime`: 触发时机(beforeInsert/afterUpdate/.../approval 等)
85
+
86
+ 示例(macOS/zsh,注意引号与编码):
87
+
88
+ ```bash
89
+ cc create triggers "$(node -e 'console.log(encodeURI(JSON.stringify({name:\"MyTrigger\",schemetableName:\"account\",targetObjectId:\"a01...\",triggerTime:\"beforeInsert\"})))')"
90
+ ```
91
+
92
+ ### 拉取 / 发布
93
+
94
+ ```bash
95
+ # namePath 形如:objectName/triggerName(注意 objectName 通常为小写目录)
96
+ cc pull triggers <namePath>
97
+ cc publish triggers <namePath>
98
+ ```
99
+
100
+ > 说明:发布/拉取只会处理 `@SOURCE_CONTENT_START` 与 `@SOURCE_CONTENT_END` 之间的代码片段。
101
+
102
+ ---
103
+
104
+ ## 推荐工作流(AI 执行顺序)
105
+
106
+ 当需求涉及后端逻辑时,建议 AI 按以下顺序执行:
107
+
108
+ 1. 通过对象/字段工具确认数据结构(必要时先建对象字段)
109
+ 2. 创建类/触发器/定时器骨架(create_*)
110
+ 3. 拉取线上版本(pull_*)对齐基线(如是增量改造)
111
+ 4. 编写片段内业务逻辑(注意批量与幂等)
112
+ 5. 发布(publish_*)
113
+ 6. 回归验证:单条、批量、权限、异常分支
114
+
@@ -0,0 +1,90 @@
1
+ ## CLI 入口速查(本仓库已定义)
2
+
3
+ `package.json` 中定义的 bin:
4
+
5
+ - `cc`:主入口(支持 `create` / `get` / `pull` / `publish` / `doc` 等)
6
+ - `cloudccCreate`:创建模板项目(内部调用 `src/project/create.js`)
7
+ - `cloudccBuild`:组件发布/构建相关(内部调用 `src/plugin/publish.js`)
8
+
9
+ ---
10
+
11
+ ## 常用 CLI 命令速查(按开发流程分组)
12
+
13
+ ### 项目与文档
14
+
15
+ ```bash
16
+ # 版本
17
+ cc -v
18
+
19
+ # 创建模板项目
20
+ cc create project <projectName>
21
+
22
+ # 输出项目文档(纯 CLI 文档)
23
+ cc doc project overview
24
+ cc doc project key-guide
25
+ ```
26
+
27
+ ### 对象与字段
28
+
29
+ ```bash
30
+ # 创建自定义对象
31
+ cc create object <projectPath> <label>
32
+
33
+ # 查询对象列表(输出 JSON)
34
+ # type 可选:standard / custom / both(默认:both)
35
+ cc get object <projectPath> [type]
36
+
37
+ # 查询对象字段(输出 JSON)
38
+ cc get fields <projectPath> <objprefix>
39
+
40
+ # 创建字段(字段类型决定参数个数)
41
+ cc create fields <projectPath> <fieldType> <objid> <nameLabel> [ptext|lookupObj]
42
+ ```
43
+
44
+ ### 菜单与应用
45
+
46
+ ```bash
47
+ # 创建菜单(标签页)
48
+ cc create menu <type> <projectPath> <resourceId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
49
+
50
+ # 创建应用
51
+ cc create application <projectPath> <appName> <appCode> [menuIds]
52
+ ```
53
+
54
+ ### 自定义类(classes)
55
+
56
+ ```bash
57
+ cc create classes <ClassName>
58
+ cc pull classes <ClassName>
59
+ cc publish classes <ClassName>
60
+ ```
61
+
62
+ ### 定时类(schedule)
63
+
64
+ ```bash
65
+ cc create schedule <ScheduleName>
66
+ cc pull schedule <ScheduleName>
67
+ cc publish schedule <ScheduleName>
68
+ ```
69
+
70
+ ### 触发器(triggers)
71
+
72
+ ```bash
73
+ # 创建:参数是一个 JSON(需 encodeURI 后作为单个参数传入)
74
+ cc create triggers <encodedJson>
75
+
76
+ # 拉取/发布:namePath 形如 objectName/triggerName
77
+ cc pull triggers <namePath>
78
+ cc publish triggers <namePath>
79
+ ```
80
+
81
+ ### 自定义组件(plugin / plugins)
82
+
83
+ ```bash
84
+ # 创建(生成到 plugins/<pluginName>/)
85
+ cc create plugin <pluginName>
86
+
87
+ # 发布(编译并上传)
88
+ cc publish plugin <pluginName>
89
+ ```
90
+
@@ -0,0 +1,59 @@
1
+ ## 目标
2
+
3
+ 让开发者(或 AI)在一台新机器上,完成 `cloudcc-cli` 的安装、模板项目创建、开发密钥配置,并能通过 `cc` 命令进行开发与发布。
4
+
5
+ ---
6
+
7
+ ## 安装 cloudcc-cli
8
+
9
+ ### 全局安装
10
+
11
+ ```bash
12
+ # Windows
13
+ npm i -g cloudcc-cli
14
+
15
+ # macOS(通常需要 sudo)
16
+ sudo npm i -g cloudcc-cli
17
+ ```
18
+
19
+ ### 验证版本
20
+
21
+ ```bash
22
+ cc -v
23
+ ```
24
+
25
+ > 说明:`cc` 是该 CLI 的统一入口命令之一(见本仓库 `package.json` 的 bin 配置)。
26
+
27
+ ---
28
+
29
+ ## 创建 CloudCC 模板项目
30
+
31
+ 在你的工作目录下执行:
32
+
33
+ ```bash
34
+ cc create project demo1
35
+ cd demo1
36
+ npm i
37
+ npm run serve
38
+ ```
39
+
40
+ 如果能在本地启动并访问页面,说明前端开发链路可用。
41
+
42
+ ---
43
+
44
+ ## 配置开发者密钥与安全标记
45
+
46
+ ### 在 CloudCC CRM 后台获取
47
+
48
+ 你需要一个具备“代码管理/开发者权限”的账号。
49
+
50
+ - **开发者密钥(CloudCCDev)**:在 CRM 后台「连接的应用程序」中新建后获取并复制。
51
+ - **安全标记(safetyMark)**:在个人设置中重置安全标记后,通过邮箱获取。
52
+
53
+ ### 写入项目的 `cloudcc-cli.config.js`
54
+
55
+ 模板项目根目录通常会有 `cloudcc-cli.config.js`(或你们约定的同名配置文件),核心原则:
56
+
57
+ - **多环境**:用 `use` 字段选择当前环境(如 `dev/uat/prod`)。
58
+ - **不要提交真实密钥到 Git**:建议 `.gitignore` 忽略配置文件,或用本地私密文件方式管理。
59
+
@@ -0,0 +1,120 @@
1
+ ## 覆盖范围
2
+
3
+ 本篇聚焦用 `cloudcc-cli` 的 `cc` 命令完成:
4
+
5
+ - 创建自定义对象(Custom Object)
6
+ - 查询对象列表
7
+ - 查询对象字段
8
+ - 为对象创建字段(支持多字段类型)
9
+ -(可选)创建菜单、创建应用(把对象挂到导航中)
10
+
11
+ ---
12
+
13
+ ## 自定义对象(Custom Object)
14
+
15
+ ### 你需要准备什么信息
16
+
17
+ - **对象显示标签(label)**:例如“客户”“合同”“付款计划”
18
+ - **项目路径(projectPath)**:模板项目根目录
19
+
20
+ ### CLI 命令(项目已有实现)
21
+
22
+ ```bash
23
+ cc create object <projectPath> <label>
24
+ ```
25
+
26
+ 示例:
27
+
28
+ ```bash
29
+ cc create object . 客户
30
+ ```
31
+
32
+ ---
33
+
34
+ ## 查询对象列表
35
+
36
+ ### CLI 命令(输出 JSON)
37
+
38
+ ```bash
39
+ # type 可选:standard / custom / both(默认:both)
40
+ cc get object <projectPath> [type]
41
+ ```
42
+
43
+ 示例:
44
+
45
+ ```bash
46
+ cc get object . both
47
+ ```
48
+
49
+ 用途:
50
+
51
+ - 获取对象 `objprefix` / 对象 `id`(后续创建字段、触发器会用到)
52
+
53
+ ---
54
+
55
+ ## 查询对象字段列表
56
+
57
+ ### CLI 命令(输出 JSON)
58
+
59
+ ```bash
60
+ cc get fields <projectPath> <objprefix>
61
+ ```
62
+
63
+ 示例:
64
+
65
+ ```bash
66
+ cc get fields . a01
67
+ ```
68
+
69
+ 用途:
70
+
71
+ - 在创建字段前,先确认是否已存在同名/同含义字段,避免重复与冲突。
72
+
73
+ ---
74
+
75
+ ## 创建字段(Field)
76
+
77
+ ### CLI 命令形态(项目已有实现)
78
+
79
+ 字段创建命令由工具根据字段类型拼装,典型形态:
80
+
81
+ ```bash
82
+ cc create fields <projectPath> <fieldType> <objid> <nameLabel> [ptext|lookupObj]
83
+ ```
84
+
85
+ ### 字段类型选择建议(常用)
86
+
87
+ - **S**:文本(最常用)
88
+ - **N**:数字
89
+ - **D / F**:日期 / 日期时间
90
+ - **B**:复选框
91
+ - **L / Q**:选项列表(单选/多选)
92
+ - **Y / MR / M**:关系字段(查找/查找多选/主详)
93
+ - **E / H / U**:邮箱/电话/URL
94
+
95
+ ---
96
+
97
+ ## 菜单与应用(让对象可访问)
98
+
99
+ ### 创建菜单(CLI)
100
+
101
+ ```bash
102
+ cc create menu <type> <projectPath> <resourceId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
103
+ ```
104
+
105
+ 示例:
106
+
107
+ ```bash
108
+ cc create menu object . <objectId> "我的对象菜单"
109
+ ```
110
+
111
+ ### 创建应用(CLI)
112
+
113
+ ```bash
114
+ cc create application <projectPath> <appName> <appCode> [menuIds]
115
+ ```
116
+
117
+ 说明:
118
+
119
+ - `menuIds`:可选,多个用逗号分隔;系统会确保默认菜单 `acf000001` 被包含。
120
+
@@ -0,0 +1,98 @@
1
+ ## 目标
2
+
3
+ 把业务需求翻译成 CloudCC CRM 二开落地项,并选择“应该做什么组件”:自定义对象/字段/菜单/应用/自定义类/定时器/触发器/自定义组件/客户端脚本。
4
+
5
+ ---
6
+
7
+ ## 需求拆解模板(AI 必须输出)
8
+
9
+ 拿到需求后,先输出以下结构(缺信息则显式标注“待确认”):
10
+
11
+ - **背景与目标**:要解决什么问题,成功标准是什么。
12
+ - **角色与权限**:涉及哪些用户/简档/权限集,是否需要后台权限调整。
13
+ - **对象与数据模型**:
14
+ - 需要哪些**自定义对象**(表)?
15
+ - 需要哪些**字段**(类型、必填/唯一、默认值、选项、查找/主详关系)?
16
+ - 是否涉及**记录类型**、**布局**、**验证规则**(若 CLI 不覆盖,需在 CRM 配置)?
17
+ - **业务流程**:
18
+ - 触发时机:保存前/保存后/提交审批/批处理/定时等
19
+ - 需要哪些自动化:校验、自动赋值、联动更新、异步任务、定时任务
20
+ - **界面与交互**:
21
+ - 是否需要自定义页面或嵌入式 UI?
22
+ - 是否需要列表/详情/编辑页的前端交互(客户端脚本 / 自定义组件)?
23
+ - **集成与外部依赖**:第三方接口、鉴权方式、重试/限流、日志与审计。
24
+ - **风险与回滚**:数据迁移、权限影响、性能与批量场景、灰度与回滚方案。
25
+ - **交付物清单**:最终要产出哪些 CloudCC 资产(对象/字段/菜单/应用/类/触发器/定时器/组件/脚本)。
26
+
27
+ ---
28
+
29
+ ## 方案选型决策表(怎么判断用什么)
30
+
31
+ ### 自定义对象(Custom Object)
32
+
33
+ 当出现以下需求时,优先考虑创建自定义对象:
34
+
35
+ - 需要一个新的业务实体(类似新表),有独立的字段、权限、页面与列表
36
+ - 需要与现有对象建立查找/主详关系
37
+ - 需要支持审批、报表、共享规则等平台能力(通常都围绕对象展开)
38
+
39
+ ### 自定义字段(Field)
40
+
41
+ 当需求是“给已有对象补充数据结构”时:
42
+
43
+ - 新增文本/数值/日期/选项/查找关系等字段
44
+ - 需要字段级校验、默认值、必填等(部分能力可能需在 CRM 配置完成)
45
+
46
+ ### 触发器(Trigger)
47
+
48
+ 当需求是“数据写入前后做强一致业务逻辑”时:
49
+
50
+ - 保存前校验/自动赋值/阻止不合法写入(before*)
51
+ - 保存后联动更新、写日志、创建子记录(after*)
52
+ - 批量/审批/提交后回调等特定时机(approval/batch/commitBatch 等)
53
+
54
+ > 注意:触发器要考虑**批量**、幂等、递归、性能与异常处理。
55
+
56
+ ### 自定义类(Class)
57
+
58
+ 当需求是“可复用的服务逻辑/复杂计算/对外接口封装”时:
59
+
60
+ - 作为触发器/定时器/页面调用的后端服务类
61
+ - 抽取通用能力(查询封装、校验器、集成适配器)
62
+
63
+ ### 定时类(Scheduled Class / Timer)
64
+
65
+ 当需求是“按时间周期跑任务”时:
66
+
67
+ - 夜间同步、定时报表、到期提醒、批量修复数据
68
+ - 需要可控的调度表达式与运行日志
69
+
70
+ ### 自定义组件(Vue Custom Component)
71
+
72
+ 当需求是“在 CloudCC UI 中提供复杂交互 UI”时:
73
+
74
+ - 自定义表单、复杂联动、可视化、批量操作 UI
75
+ - 需要前端框架能力(Vue2.x)与更强的用户体验
76
+
77
+ ### 客户端脚本(Client Script)
78
+
79
+ 当需求是“页面级轻量交互/字段联动/保存前校验”时:
80
+
81
+ - 列表/详情/编辑/新建页生命周期钩子
82
+ - 字段变更联动、提示、轻量校验
83
+
84
+ > 客户端脚本更轻量;交互复杂或需要组件化复用,建议升级为自定义组件。
85
+
86
+ ---
87
+
88
+ ## 推荐落地流程(AI 执行顺序)
89
+
90
+ 一般建议按以下顺序落地(从“数据结构”到“业务逻辑”再到“界面”):
91
+
92
+ 1. **对象与字段**:先把数据模型搭好(对象、字段、关系)
93
+ 2. **菜单与应用**:让用户能访问(菜单/应用)
94
+ 3. **后端逻辑**:自定义类 / 触发器 / 定时器
95
+ 4. **前端交互**:客户端脚本 / 自定义组件
96
+ 5. **联调与回归**:核心路径 + 批量场景 + 权限场景
97
+ 6. **发布与回滚准备**:版本记录、灰度、回滚策略
98
+
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: cloudcc-cli-dev
3
+ description: CloudCC CRM 二次开发 CLI 助手。用于需求拆解与方案选型,并通过 cloudcc-cli(cc 命令)创建/拉取/发布自定义对象、字段、菜单/应用、自定义类、定时器、触发器与 Vue 自定义组件等资产。用户提到 CloudCC、cloudcc-cli、cc 命令、对象/字段/触发器/定时器/自定义组件 时应优先使用。
4
+ ---
5
+
6
+ # CloudCC CLI Development Skill
7
+
8
+ ## cloudcc-cli
9
+ - 需要检查全局是否安装了cloudcc-cli npm包,如果没有请先安装。
10
+
11
+ ## 工作目录
12
+ - 在openclaw环境中,需要在agent的workspace中创建code文件夹,然后在code文件中使用cc create project xxx,创建一个模版项目。
13
+
14
+ ## 使用方式(AI 必须遵循)
15
+
16
+ - 先阅读 `REQUIREMENTS_BREAKDOWN.md`,输出需求拆解与交付物清单,再进入落地步骤。
17
+ - 需要环境/密钥 配置时,阅读 `INSTALL_AND_BOOTSTRAP.md`。
18
+ - 需要建模时(对象/字段/菜单/应用),阅读 `OBJECTS_AND_FIELDS.md`。
19
+ - 需要后端逻辑时(类/定时器/触发器),阅读 `BACKEND_CODE.md`。
20
+ - 需要自定义组件时,阅读 `VUE_CUSTOM_COMPONENT.md`。
21
+ - 需要快速对照命令与参数时,阅读 `CLI_CHEATSHEET.md`。
22
+
23
+ ## 强制安全边界
24
+
25
+ - 不要在输出/代码/提交中包含真实密钥(`CloudCCDev`、`safetyMark`、`secretKey`、`openSecretKey`、token
26
+ 等)。
27
+ - 后端类/触发器/定时器遵守片段同步:仅在
28
+ `@SOURCE_CONTENT_START`~`@SOURCE_CONTENT_END` 内编写可发布逻辑。
29
+ - 客户端脚本遵守片段同步:仅在 `function main($CCDK, obj) { ... }`
30
+ 的函数体内编写可发布逻辑。
31
+
32
+ ## 快速入口
33
+
34
+ - 安装与初始化:`INSTALL_AND_BOOTSTRAP.md`
35
+ - 需求拆解与方案选择:`REQUIREMENTS_BREAKDOWN.md`
36
+ - 自定义对象与字段:`OBJECTS_AND_FIELDS.md`
37
+ - 自定义类/定时器/触发器:`BACKEND_CODE.md`
38
+ - Vue 自定义组件:`VUE_CUSTOM_COMPONENT.md`
39
+ - CLI 速查:`CLI_CHEATSHEET.md`
@@ -0,0 +1,50 @@
1
+ ## 覆盖范围
2
+
3
+ 本篇聚焦 CloudCC Vue2.x 自定义组件(Custom Component):
4
+
5
+ - 创建组件骨架
6
+ - 编辑与最佳实践入口
7
+ - 编译与发布到服务器
8
+
9
+ ---
10
+
11
+ ## 创建自定义组件
12
+
13
+ ### CLI 命令
14
+
15
+ ```bash
16
+ # 在项目根目录执行(会生成到 plugins/<pluginName>/)
17
+ cc create plugin <pluginName>
18
+ ```
19
+
20
+ 创建后会生成组件主文件、子组件目录与配置文件(以项目模板为准)。
21
+
22
+ ---
23
+
24
+ ## 发布组件
25
+
26
+ ```bash
27
+ cc publish plugin <pluginName>
28
+ ```
29
+
30
+ > 发布会执行编译/打包/上传;如果组件依赖复杂,注意依赖收集与发布策略。
31
+
32
+ ---
33
+
34
+ ## 编辑要点(CLI 项目约束)
35
+
36
+ - 组件目录通常为 `plugins/<pluginName>/`
37
+ - 确保所有 `<style>` 标签带 `scoped`,避免全局样式污染
38
+ - 发布通过 `cc publish plugin <pluginName>` 执行编译与上传
39
+
40
+ ---
41
+
42
+ ## 选型建议(组件 vs 客户端脚本)
43
+
44
+ - **自定义组件**:复杂交互、强 UI、可复用组件化、需要更完整工程化能力。
45
+ - **客户端脚本**:轻量联动、页面钩子逻辑、少量 UI 提示与校验。
46
+
47
+ 一般建议:
48
+
49
+ - 先用脚本满足基础联动;当逻辑与 UI 复杂度上升时,再升级为组件方案。
50
+