cloudcc-cli 2.2.8 → 2.2.9

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 (38) hide show
  1. package/.cloudcc-cache.json +32 -1
  2. package/.cursor/skills/cloudcc-cli-dev/BACKEND_CLASS.md +97 -0
  3. package/.cursor/skills/cloudcc-cli-dev/BACKEND_SCHEDULE.md +78 -0
  4. package/.cursor/skills/cloudcc-cli-dev/BACKEND_TRIGGER.md +137 -0
  5. package/.cursor/skills/cloudcc-cli-dev/CLI_CHEATSHEET.md +215 -0
  6. package/{cloudcc-cli-dev → .cursor/skills/cloudcc-cli-dev}/SKILL.md +7 -2
  7. package/.cursor/skills/cloudcc-cli-dev/VUE_CUSTOM_COMPONENT.md +151 -0
  8. package/README.md +11 -0
  9. package/bin/index.js +2 -0
  10. package/build/component-cc-test-001.common.js +831 -0
  11. package/build/component-cc-test-001.common.js.map +1 -0
  12. package/build/component-cc-test-001.css +1 -0
  13. package/build/component-cc-test-001.umd.js +874 -0
  14. package/build/component-cc-test-001.umd.js.map +1 -0
  15. package/build/component-cc-test-001.umd.min.js +8 -0
  16. package/build/component-cc-test-001.umd.min.js.map +1 -0
  17. package/build/demo.html +1 -0
  18. 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 +130 -0
  19. package/docs/cloudcc/345/256/232/346/227/266/344/275/234/344/270/232.md +472 -0
  20. package/docs/cloudcc/345/256/232/346/227/266/347/261/273.md +302 -0
  21. package/docs//350/207/252/345/256/232/344/271/211/347/261/273.md +258 -0
  22. package/docs//350/247/246/345/217/221/345/231/250/347/261/273.md +404 -0
  23. package/package.json +1 -1
  24. package/plugins/cc-test-001/cc-test-001.vue +32 -0
  25. package/plugins/cc-test-001/components/HelloWorld.vue +11 -0
  26. package/plugins/cc-test-001/config.json +6 -0
  27. package/src/classes/index.js +1 -6
  28. package/src/plugin/delete.js +91 -0
  29. package/src/plugin/doc.js +76 -0
  30. package/src/plugin/index.js +1 -0
  31. package/src/triggers/doc.js +258 -222
  32. package/src/triggers/pullList.js +3 -0
  33. package/cloudcc-cli-dev/BACKEND_CODE.md +0 -114
  34. package/cloudcc-cli-dev/CLI_CHEATSHEET.md +0 -90
  35. package/cloudcc-cli-dev/VUE_CUSTOM_COMPONENT.md +0 -50
  36. /package/{cloudcc-cli-dev → .cursor/skills/cloudcc-cli-dev}/INSTALL_AND_BOOTSTRAP.md +0 -0
  37. /package/{cloudcc-cli-dev → .cursor/skills/cloudcc-cli-dev}/OBJECTS_AND_FIELDS.md +0 -0
  38. /package/{cloudcc-cli-dev → .cursor/skills/cloudcc-cli-dev}/REQUIREMENTS_BREAKDOWN.md +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version_check": {
3
- "timestamp": 1773991959371
3
+ "timestamp": 1774424004502
4
4
  },
5
5
  "Je6yZ0TRyQFtpcH1gVKctqNhL": {
6
6
  "username": "admin@testuat.com",
@@ -34,5 +34,36 @@
34
34
  "secretKey": "d99313b4298544bc8ca1ee7459227b",
35
35
  "pluginToken": "unified2026624c45632",
36
36
  "timestamp": 1773991961909
37
+ },
38
+ "MA5XexqhSWW1jCeLpHcx4bXNh": {
39
+ "username": "gongjj@cloudcc.com",
40
+ "baseUrl": "https://yundong.lightning.cloudcc.cn/ccdomaingateway",
41
+ "orgId": "2010000000050855WyHh",
42
+ "clientId": "TsZ9nOhsriINhJFkxFr7i3Gja",
43
+ "openSecretKey": "41fb2c1f-84d2-41b5-bc46-0623041f96a0",
44
+ "CloudCCDev": "",
45
+ "safetyMark": "MA5XexqhSWW1jCeLpHcx4bXNh",
46
+ "apiSvc": "https://yundong.lightning.cloudcc.cn/ccdomaingateway/apisvc",
47
+ "setupSvc": "https://yundong.lightning.cloudcc.cn/ccdomaingateway/setup",
48
+ "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJjbG91ZGNjIiwibG9naW5OYW1lIjoiZ29uZ2pqQGNsb3VkY2MuY29tIiwiYmluZGluZyI6IjE5NzMxYjU0LWYwNmYtNDI4MS1hYWU3LWVjMWMzMzg3M2E1YSIsIkNsaWVudElkIjoiVHNaOW5PaHNyaUlOaEpGa3hGcjdpM0dqYSIsImV4cCI6MTc3NDUxMzI2Niwib3JnSWQiOiIyMDEwMDAwMDAwMDUwODU1V3lIaCJ9.pSAijHx9tUVQew9JINY6P2lD6kwvX-SRDYXxKQfVxbk",
49
+ "secretKey": "54db2d557fc04d11be2f9da34e2831",
50
+ "pluginToken": "unified2026461c3843d",
51
+ "timestamp": 1774340466848
52
+ },
53
+ "oFKfA8V9DXIcs1l2EIe6tGNOd": {
54
+ "username": "junsales@demo.com",
55
+ "baseUrl": "https://solution.lightning.cloudcc.cn/ccdomaingateway",
56
+ "setupSvc": "https://solution.lightning.cloudcc.cn/ccdomaingateway/setup",
57
+ "orgId": "orgb5bc93c891c40ceac",
58
+ "clientId": "halqHvw6tDXVCfWxeY9GOLxdp",
59
+ "version": "public",
60
+ "openSecretKey": "10634880-6b3c-4238-a4ef-83177b27ca33",
61
+ "safetyMark": "oFKfA8V9DXIcs1l2EIe6tGNOd",
62
+ "CloudCCDev": "",
63
+ "apiSvc": "https://solution.lightning.cloudcc.cn/ccdomaingateway/apisvc",
64
+ "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJjbG91ZGNjIiwibG9naW5OYW1lIjoianVuc2FsZXNAZGVtby5jb20iLCJiaW5kaW5nIjoiMGNjZDM1YjktZjRkNS00MzAzLTljMWYtYjIwNmNkNTQ3OGQ3IiwiQ2xpZW50SWQiOiJoYWxxSHZ3NnREWFZDZld4ZVk5R09MeGRwIiwiZXhwIjoxNzc0NTk2ODEzLCJvcmdJZCI6Im9yZ2I1YmM5M2M4OTFjNDBjZWFjIn0.4Oep03fP-4Tlak5sowGAylp89aJq-XB_CfGlLRE7ONc",
65
+ "secretKey": "5c91aef5bc2740c49ab97831385036",
66
+ "pluginToken": "unified20264b53258f0",
67
+ "timestamp": 1774424014085
37
68
  }
38
69
  }
@@ -0,0 +1,97 @@
1
+ ## 自定义类(Class)
2
+
3
+ ## 覆盖范围
4
+
5
+ 本篇聚焦 CloudCC 后端 Java 自定义类(通过 `cc` 命令):
6
+
7
+ - 创建类骨架
8
+ - 拉取线上源码片段
9
+ - 发布本地源码片段
10
+ - 列表、详情与按 ID 生成本地工程
11
+
12
+ ---
13
+
14
+ ## 目录结构(以本仓库约定为准)
15
+
16
+ - `classes/{ClassName}/...`
17
+
18
+ ---
19
+
20
+ ## 生成文件说明
21
+
22
+ 当执行 `cc create classes <ClassName>` 后,通常会在项目根目录生成:
23
+
24
+ - `classes/<ClassName>/<ClassName>.java`:主类文件
25
+ - `classes/<ClassName>/<ClassName>Test.java`:测试桩文件(便于本地跑 main)
26
+ - `classes/<ClassName>/config.json`:记录 `name`、`version`,以及首次 `publish` 成功后写入的 `id`
27
+
28
+ `<ClassName>.java` 的 Java 包名为 `package classes.<ClassName>;`
29
+
30
+ ---
31
+
32
+ ## 源码同步边界(必须理解)
33
+
34
+ 该项目使用“片段同步”策略:
35
+
36
+ - 自定义类只会拉取/发布 `@SOURCE_CONTENT_START` 与 `@SOURCE_CONTENT_END` 之间的内容。
37
+
38
+ 这意味着:
39
+
40
+ - 片段外可保留模板、import、类结构等。
41
+ - 片段内仅放可发布逻辑,不放本地临时调试代码。
42
+
43
+ ---
44
+
45
+ ## 创建
46
+
47
+ ```bash
48
+ # 在项目根目录执行
49
+ cc create classes <ClassName>
50
+ ```
51
+
52
+ ## 拉取 / 发布
53
+
54
+ ```bash
55
+ cc pull classes <ClassName>
56
+ cc publish classes <ClassName>
57
+ ```
58
+
59
+ ### `pull` 前置条件
60
+
61
+ - `pull` 会读取 `classes/<ClassName>/config.json` 里的 `id`
62
+ - 如果本地 `config.json` 没有 `id`(通常表示从未 `publish` 过),会提示 “Class ID is not exist, please publish first”
63
+
64
+ ### `publish` 行为
65
+
66
+ - `publish` 会从 `<ClassName>.java` 中提取 `@SOURCE_CONTENT_START` 与 `@SOURCE_CONTENT_END` 之间的源码作为 `source` 上传
67
+ - 首次发布成功后,会把云端返回的 `id` 写回本地 `config.json`
68
+
69
+ ---
70
+
71
+ ## 获取 / 详情 / 批量拉取
72
+
73
+ ```bash
74
+ # 列出(可选:传入 encodeURI(JSON.stringify({...})) 查询体;不传则用默认分页参数)
75
+ cc get classes <encodedJson>
76
+
77
+ # 详情:优先本地读取;当没有本地信息或未发布时,再通过 id 查云端
78
+ cc detail classes <ClassName> <ClassId>
79
+
80
+ # 批量拉取:根据云端 id 生成本地 classes/<ClassName>/ 目录
81
+ cc pullList classes <ClassId> <ProjectRoot>
82
+ ```
83
+
84
+ 说明:
85
+
86
+ - `detail`/`pull` 等命令在本地优先;只要你本地 `classes/<ClassName>/config.json` 已包含 `id`,就可以按 id 查并拉取源码。
87
+
88
+ ---
89
+
90
+ ## 推荐工作流(AI 执行顺序)
91
+
92
+ 1. 通过对象/字段工具确认数据结构(必要时先建对象字段)
93
+ 2. 创建类骨架(`create`)
94
+ 3. 拉取线上版本(`pull`)对齐基线(如是增量改造)
95
+ 4. 编写片段内业务逻辑(注意幂等、异常兜底)
96
+ 5. 发布(`publish`)
97
+ 6. 回归验证:单条调用、跨模块调用(触发器/定时类/组件等)与异常分支
@@ -0,0 +1,78 @@
1
+ ## 定时类(Scheduled Class / Timer)
2
+
3
+ ## 覆盖范围
4
+
5
+ 本篇聚焦 CloudCC 后端 Java 定时类(通过 `cc` 命令):
6
+
7
+ - 创建定时类骨架
8
+ - 拉取线上源码片段
9
+ - 发布本地源码片段
10
+ - 列表、详情与按 ID 批量落地
11
+
12
+ ---
13
+
14
+ ## 目录结构(以本仓库约定为准)
15
+
16
+ - `schedule/{ScheduleName}/...`
17
+
18
+ ---
19
+
20
+ ## 核心说明
21
+
22
+ 定时类在平台上对应“定时作业”类代码,本地由 `src/timer` 实现。CLI 上 `schedule` 与 `timer` 完全等价(同一模块),任选其一即可。
23
+
24
+ ### 目录与 Java 约定
25
+
26
+ - 路径:`schedule/<ScheduleName>/`
27
+ - 文件:
28
+ - `<ScheduleName>.java`:`package schedule.<ScheduleName>`,类 `extends CCSchedule`,业务逻辑写在无参构造函数中。
29
+ - `config.json`:至少包含 `name`、`version`;首次发布成功后会写入云端返回的 `id`,供后续拉取使用。
30
+
31
+ ### 片段同步
32
+
33
+ - 推荐在构造函数体内使用 `// @SOURCE_CONTENT_START` 与 `// @SOURCE_CONTENT_END` 包裹可同步逻辑。
34
+ - 发布:有标记时只上传标记之间源码;无标记时会把整文件作为 `source` 提交。
35
+ - 拉取:有标记时只替换标记区间;无标记时用接口返回的 `tsource` 覆盖整个 `.java` 文件。
36
+
37
+ ---
38
+
39
+ ## 创建 / 发布 / 拉取
40
+
41
+ ```bash
42
+ # 在项目根目录执行(schedule 可换成 timer)
43
+ cc create schedule <ScheduleName>
44
+ cc publish schedule <ScheduleName>
45
+ cc pull schedule <ScheduleName>
46
+ ```
47
+
48
+ **重要:`pull` 前置条件**
49
+
50
+ - `config.json` 中必须已有 `id`(通常需先 `publish` 成功一次)。否则会出现 “Schedule ID is not exist, please publish first” 类提示。
51
+
52
+ ---
53
+
54
+ ## 列表 / 详情 / 按 ID 生成本地工程
55
+
56
+ ```bash
57
+ # 列表(可选:传 encodeURI(JSON.stringify({...})) 查询体;不传用默认分页)
58
+ cc get schedule
59
+
60
+ # 详情:优先按本地 schedule/<name>/ 读取;仅查云端可传 id(name 置空)
61
+ cc detail schedule <ScheduleName> <ScheduleId>
62
+
63
+ # 按云端 id 拉取并在指定项目下生成 schedule/<name>/
64
+ cc pullList schedule <ScheduleId> <ProjectRoot>
65
+ ```
66
+
67
+ 说明:`get` / `detail` / `pullList` 同样支持将子命令中的 `schedule` 写成 `timer`。
68
+
69
+ ---
70
+
71
+ ## 推荐工作流(AI 执行顺序)
72
+
73
+ 1. 通过对象/字段工具确认数据结构(必要时先建对象字段)
74
+ 2. 创建定时类骨架(create)
75
+ 3. 拉取线上版本(pull)对齐基线(如是增量改造)
76
+ 4. 编写片段内业务逻辑(注意幂等、异常兜底)
77
+ 5. 发布(publish)
78
+ 6. 回归验证:单条、批量、跨天、异常分支
@@ -0,0 +1,137 @@
1
+ ## 触发器(Trigger)
2
+
3
+ ## 覆盖范围
4
+
5
+ 本篇聚焦 CloudCC 后端 Java 触发器(通过 `cc` 命令):
6
+
7
+ - 按对象与时机创建触发器
8
+ - 拉取线上源码片段
9
+ - 发布本地源码片段
10
+
11
+ ---
12
+
13
+ ## 目录结构(以本仓库约定为准)
14
+
15
+ - `triggers/{objectName}/{triggerName}/...`
16
+
17
+ ---
18
+
19
+ ## 源码同步边界(必须理解)
20
+
21
+ 该项目使用“片段同步”策略:
22
+
23
+ - 触发器只会拉取/发布 `@SOURCE_CONTENT_START` 与 `@SOURCE_CONTENT_END` 之间的内容。
24
+
25
+ 这意味着:
26
+
27
+ - 片段外可保留模板、import、类结构等。
28
+ - 片段内仅放可发布逻辑,不放本地临时调试代码。
29
+
30
+ ---
31
+
32
+ ## 创建(关键入参)
33
+
34
+ 触发器 CLI 创建参数是一个 JSON 对象,需要 `encodeURI` 后作为单参数传入:
35
+
36
+ ```bash
37
+ cc create triggers <encodedJson>
38
+ ```
39
+
40
+ JSON 字段(示例):
41
+
42
+ - `name`: 触发器名(Java 命名规范)
43
+ - `schemetableName`: 对象表名(如从对象列表拿到)
44
+ - `targetObjectId`: 目标对象 ID
45
+ - `triggerTime`: 触发时机(见下方枚举)
46
+
47
+ 可选枚举(以当前工具/handler 支持为准):
48
+ - `beforeInsert`
49
+ - `beforeUpdate`
50
+ - `beforeUpsert`
51
+ - `beforeDelete`
52
+ - `afterInsert`
53
+ - `afterUpdate`
54
+ - `afterUpsert`
55
+ - `afterDelete`
56
+ - `afterInsertCommit`
57
+ - `afterUpdateCommit`
58
+ - `afterUpsertCommit`
59
+ - `afterDeleteCommit`
60
+ - `approval`
61
+ - `beforeBatch`
62
+ - `afterBatch`
63
+ - `commitBatch`
64
+
65
+ 示例(macOS/zsh):
66
+
67
+ ```bash
68
+ cc create triggers "$(node -e 'console.log(encodeURI(JSON.stringify({name:\"MyTrigger\",schemetableName:\"account\",targetObjectId:\"a01...\",triggerTime:\"beforeInsert\"})))')"
69
+ ```
70
+
71
+ ---
72
+
73
+ ## 拉取 / 发布
74
+
75
+ ```bash
76
+ # namePath 形如 objectName/triggerName(objectName 通常为小写目录)
77
+ cc pull triggers <namePath>
78
+ cc publish triggers <namePath>
79
+ ```
80
+
81
+ > 说明:发布/拉取只会处理 `@SOURCE_CONTENT_START` 与 `@SOURCE_CONTENT_END` 之间的代码片段。
82
+
83
+ ---
84
+
85
+ ## 生成文件说明
86
+ 当执行 `cc create triggers <encodedJson>` 后,通常会生成:
87
+ - `triggers/<schemetableName_lower>/<triggerName>/<triggerName>.java`
88
+ - `triggers/<schemetableName_lower>/<triggerName>/config.json`
89
+
90
+ 触发器 Java 包名为:`package triggers.<schemetableName_lower>.<triggerName>;`
91
+ 业务逻辑写在构造函数 `public <triggerName>()` 中,且可同步代码放进 `// @SOURCE_CONTENT_START` 与 `// @SOURCE_CONTENT_END` 之间。
92
+
93
+ ---
94
+ ## 标记匹配与同步规则(务必)
95
+ - `// @SOURCE_CONTENT_START` 与 `// @SOURCE_CONTENT_END` 必须各自独占一行(并且是注释行)
96
+ - `publish`:有标记只上传标记之间内容;无标记则上传整个 `.java`(trim + `encodeURIComponent`)
97
+ - `pull`:有标记只替换标记之间内容;无标记则用云端源码覆盖整个 `.java`
98
+
99
+ ---
100
+ ## get / detail / pullList
101
+ - `cc get triggers <encodedJson>`:返回 `[{ apiname, id, name }, ...]`
102
+ - `cc detail triggers <objectName/triggerName> <triggerId>`:本地优先,不足时会按 `triggerId` 从服务器补齐
103
+ - `cc pullList triggers <triggerId> <ProjectRoot>`:生成 `triggers/<schemetableName_lower>/<triggerName>/` 下的 `.java` 与 `config.json`
104
+
105
+ 典型查询体(示例):
106
+ ```json
107
+ {
108
+ "shownum": "2000",
109
+ "showpage": "1",
110
+ "fid": "<targetObjectId 或空串>",
111
+ "sname": "<triggerName 或空串>",
112
+ "rptcond": "",
113
+ "rptorder": ""
114
+ }
115
+ ```
116
+
117
+ ---
118
+ ## 查看完整编辑指南
119
+ - `cc doc triggers`
120
+
121
+ ---
122
+ ## 触发器编辑 Checklist(最小必读)
123
+ - 只在标记块内写可发布逻辑,不放临时调试代码
124
+ - 保持幂等性,避免重复执行导致数据膨胀
125
+ - 避免递归触发(触发器里再次更新同一对象时),优先使用批量/降递归 API 或短路条件
126
+ - 查询字段尽量最小化,降低性能开销
127
+ - 对关键分支加异常处理与必要日志,确保失败可定位
128
+
129
+ ---
130
+ ## 推荐工作流(AI 执行顺序)
131
+
132
+ 1. 明确对象、触发时机与业务约束(幂等、递归更新风险)
133
+ 2. 创建触发器骨架(create)
134
+ 3. (可选)对齐线上基线:先 `publish` 一次生成 `id`,再 `pull`(或直接用 `pullList` 按 id 拉取)
135
+ 4. 编写片段内逻辑(批量处理优先)
136
+ 5. 发布(publish)(如第 3 步已发布,这里通常是二次 publish)
137
+ 6. 回归验证:插入/更新/删除/审批链路与异常分支
@@ -0,0 +1,215 @@
1
+ ## CLI 入口速查(本仓库已定义)
2
+
3
+ `package.json` 中定义的 bin:
4
+
5
+ - `cc`:主入口(按模块分发 `create/get/pull/publish/detail/pullList/doc/use/approve/reject` 等)
6
+ - `cloudccCreate`:创建模板项目(内部调用 `src/project/create.js`)
7
+ - `cloudccBuild`:组件发布/构建相关(内部调用 `src/plugin/publish.js`)
8
+ - `cc-mcp`:MCP 服务入口(运行在 IDE/MCP 客户端侧触发)
9
+
10
+ ---
11
+
12
+ ## 统一调用约定
13
+
14
+ 命令格式(主入口分发):
15
+
16
+ ```bash
17
+ cc <action> <type> [参数...]
18
+ ```
19
+
20
+ 常见 `action`:
21
+
22
+ - `create`
23
+ - `get`
24
+ - `pull`
25
+ - `publish`
26
+ - `detail`
27
+ - `pullList`
28
+ - `doc`
29
+ - `use`
30
+ - `approve`
31
+ - `reject`
32
+
33
+ ---
34
+
35
+ ## encodeURI JSON 参数提醒
36
+
37
+ 当某些命令需要传 JSON(例如触发器、定时类查询条件、自定义脚本等),建议用 `encodeURI(JSON.stringify(...))` 并用单引号/双引号把结果当作“单个参数”传入:
38
+
39
+ ```bash
40
+ cc create triggers "$(node -e 'console.log(encodeURI(JSON.stringify({name:\"MyTrigger\",schemetableName:\"account\",targetObjectId:\"a01...\",triggerTime:\"beforeInsert\"})))')"
41
+ ```
42
+
43
+ ---
44
+
45
+ ## 常用 CLI 命令速查(按模块分组)
46
+
47
+ ### 项目与文档
48
+
49
+ ```bash
50
+ # 创建模板项目
51
+ cc create project <projectName>
52
+
53
+ # 生成/输出文档(纯 CLI 文档)
54
+ cc doc project overview
55
+ cc doc project key-guide
56
+ ```
57
+
58
+ ### 配置、token、brief、recordType、版本
59
+
60
+ ```bash
61
+ # 版本
62
+ cc -v
63
+
64
+ # 配置文件管理
65
+ cc use config <env> [projectPath]
66
+ cc get config [projectPath]
67
+
68
+ # 从 CloudCC 获取 bus token(依赖你已配置的 dev 配置)
69
+ cc get token <projectPath>
70
+
71
+ # 获取页面/脚本相关的角色信息(brief)
72
+ cc get brief <projectPath>
73
+
74
+ # 拉取记录类型列表(需要 objprefix)
75
+ cc get recordType <projectPath> <prefix>
76
+ ```
77
+
78
+ ### 自定义对象(object)与字段(fields)
79
+
80
+ ```bash
81
+ # 创建自定义对象
82
+ # nameLabel 可选;如果不传 nameLabel,会从 label 自动生成
83
+ cc create object <projectPath> <label> [nameLabel]
84
+
85
+ # 查询对象列表
86
+ # type 可选:standard / custom / both(也支持 chat / trigger / fields 等内部类型)
87
+ cc get object <projectPath> [type]
88
+
89
+ # 查询对象字段(推荐直接用 fields 模块)
90
+ cc get fields <projectPath> <objprefix>
91
+
92
+ # 创建字段
93
+ # fieldType 支持:S/U/SCORE/IMG/P/C/J/H/E/B/A/D/F/T/N/ENC/ENCD/X/L/Q/AD/LT/FL/Y/MR/M
94
+ cc create fields <projectPath> <fieldType> <objid> <nameLabel> [ptext|lookupObj]
95
+ ```
96
+
97
+ ### 菜单(menu)与应用(application)
98
+
99
+ ```bash
100
+ # 创建菜单(标签页)
101
+ # type: object | page | script | site
102
+ # path: 项目路径(用于读取 cloudcc-cli.config.js)
103
+ cc create menu <type> <path> <resourceId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
104
+
105
+ # 创建应用
106
+ # menuIds 可选,多个用逗号分隔(内部会确保包含默认菜单 acf000001)
107
+ cc create application <path> <appName> <appCode> [menuIds]
108
+
109
+ # 获取应用(当前实现返回空列表)
110
+ cc get application <path>
111
+ ```
112
+
113
+ ### 自定义组件(plugin / plugins)
114
+
115
+ ```bash
116
+ # 创建到 plugins/<pluginName>/
117
+ cc create plugin <pluginName>
118
+
119
+ # 发布(编译并上传)
120
+ cc publish plugin <pluginName>
121
+
122
+ # 拉取(可传组件名或 ID)
123
+ cc pull plugin <pluginNameOrId> [projectPath]
124
+
125
+ # 列表
126
+ cc get plugin <projectPath>
127
+
128
+ # 详情
129
+ # pluginName/pluginId(二选一即可;要传 id 时可以把 pluginName 置空 "")
130
+ cc detail plugin <pluginName> <pluginId> [projectPath]
131
+ ```
132
+
133
+ ### 后端自定义类(classes)
134
+
135
+ ```bash
136
+ # 注意:当前 `src/classes/index.js` 仅接入 `doc`。
137
+ # create/pull/publish/get/detail/pullList 这些命令在代码层面存在(src/classes/*.js),但未挂载到 CLI 类型分发里。
138
+ cc doc classes
139
+
140
+ # 如果后续你把 classes/index.js 挂载齐全,可按下面命令使用(实现已存在):
141
+ cc create classes <ClassName>
142
+ cc pull classes <ClassName>
143
+ cc publish classes <ClassName>
144
+ cc get classes <encodedCondJson> <projectPath>
145
+ cc detail classes <ClassName> <ClassId>
146
+ cc pullList classes <ClassId> <ProjectRoot>
147
+ ```
148
+
149
+ ### 后端定时类(schedule / timer)
150
+
151
+ ```bash
152
+ # 创建(schedule 或 timer 二选一)
153
+ cc create schedule <ScheduleName>
154
+ cc create timer <ScheduleName>
155
+
156
+ # 拉取/发布(本地目录 schedule/<ScheduleName>/)
157
+ cc pull schedule <ScheduleName>
158
+ cc publish schedule <ScheduleName>
159
+
160
+ cc pull timer <ScheduleName>
161
+ cc publish timer <ScheduleName>
162
+
163
+ # 列表(查询条件 JSON,需 encodeURI)
164
+ cc get schedule <encodedCondJson> <projectPath>
165
+
166
+ # 详情
167
+ cc detail schedule <ScheduleName> <ScheduleId>
168
+
169
+ # 批量拉取并生成本地 files:schedule/<name>/
170
+ cc pullList schedule <ScheduleId> <ProjectRoot>
171
+ ```
172
+
173
+ ### 后端触发器(triggers)
174
+
175
+ ```bash
176
+ # 创建:参数是 encodeURI(JSON)(必传:name/schemetableName/targetObjectId/triggerTime)
177
+ cc create triggers <encodedJson>
178
+
179
+ # 拉取/发布
180
+ # namePath 形如:<schemetableNameLower>/<triggerName>
181
+ cc pull triggers <namePath>
182
+ cc publish triggers <namePath>
183
+
184
+ # 列表(查询条件 JSON,需 encodeURI)
185
+ cc get triggers <encodedCondJson> <projectPath>
186
+
187
+ # 详情(本地优先;也可只用 id)
188
+ cc detail triggers <namePath> <triggerId>
189
+
190
+ # 批量拉取并生成本地 triggers/<objectName>/<triggerName>/
191
+ cc pullList triggers <triggerId> <ProjectRoot>
192
+ ```
193
+
194
+ ### 客户端脚本(script)
195
+
196
+ ```bash
197
+ # 创建:参数是 encodeURI(JSON)(内部使用 body.objName/body.scriptName)
198
+ cc create script <encodedJson>
199
+
200
+ # 拉取/发布:scriptPath 形如 objName/scriptName
201
+ cc pull script <objName/scriptName>
202
+ cc publish script <objName/scriptName>
203
+
204
+ # 列表(查询条件 JSON + 项目路径)
205
+ cc get script <encodedCondJson> <projectPath>
206
+
207
+ # 详情(本地优先;也可只用 id)
208
+ cc detail script <objName/scriptName> <scriptId> <projectPath>
209
+
210
+ # 批量拉取并生成目录:script/<objName>/<scriptName>/
211
+ cc pullList script <scriptId> <ProjectRoot>
212
+
213
+ # 文档
214
+ cc doc script
215
+ ```
@@ -16,7 +16,10 @@ description: CloudCC CRM 二次开发 CLI 助手。用于需求拆解与方案
16
16
  - 先阅读 `REQUIREMENTS_BREAKDOWN.md`,输出需求拆解与交付物清单,再进入落地步骤。
17
17
  - 需要环境/密钥 配置时,阅读 `INSTALL_AND_BOOTSTRAP.md`。
18
18
  - 需要建模时(对象/字段/菜单/应用),阅读 `OBJECTS_AND_FIELDS.md`。
19
- - 需要后端逻辑时(类/定时器/触发器),阅读 `BACKEND_CODE.md`。
19
+ - 需要后端逻辑时(类/定时器/触发器),按主题阅读:
20
+ - `BACKEND_CLASS.md`
21
+ - `BACKEND_SCHEDULE.md`
22
+ - `BACKEND_TRIGGER.md`
20
23
  - 需要自定义组件时,阅读 `VUE_CUSTOM_COMPONENT.md`。
21
24
  - 需要快速对照命令与参数时,阅读 `CLI_CHEATSHEET.md`。
22
25
 
@@ -34,6 +37,8 @@ description: CloudCC CRM 二次开发 CLI 助手。用于需求拆解与方案
34
37
  - 安装与初始化:`INSTALL_AND_BOOTSTRAP.md`
35
38
  - 需求拆解与方案选择:`REQUIREMENTS_BREAKDOWN.md`
36
39
  - 自定义对象与字段:`OBJECTS_AND_FIELDS.md`
37
- - 自定义类/定时器/触发器:`BACKEND_CODE.md`
40
+ - 自定义类:`BACKEND_CLASS.md`
41
+ - 定时类:`BACKEND_SCHEDULE.md`
42
+ - 触发器:`BACKEND_TRIGGER.md`
38
43
  - Vue 自定义组件:`VUE_CUSTOM_COMPONENT.md`
39
44
  - CLI 速查:`CLI_CHEATSHEET.md`