cloudcc-cli 2.3.1 → 2.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.json +25 -0
- package/.cloudcc-cache.json +21 -4
- package/.cursor/skills/cloudcc-cli-dev.zip +0 -0
- package/.cursor/skills/cloudcc-cli-usage/SKILL.md +68 -0
- package/README.md +22 -0
- package/bin/cc.js +13 -8
- package/bin/index.js +9 -2
- package/bin/mcp.js +1 -1
- package/build/component-CCPlugin1774500425584.common.js +831 -0
- package/build/component-CCPlugin1774500425584.common.js.map +1 -0
- package/build/component-CCPlugin1774500425584.css +1 -0
- package/build/component-CCPlugin1774500425584.umd.js +874 -0
- package/build/component-CCPlugin1774500425584.umd.js.map +1 -0
- package/build/component-CCPlugin1774500425584.umd.min.js +8 -0
- package/build/component-CCPlugin1774500425584.umd.min.js.map +1 -0
- package/build/demo.html +1 -0
- package/{src/mcp → mcp}/tools/Class Editor Guide/handler.js +12 -4
- package/{src/mcp → mcp}/tools/Component Editor Guide/handler.js +15 -14
- package/{src/mcp → mcp}/tools/Trigger Editor Guide/handler.js +8 -2
- package/package.json +3 -2
- package/src/application/doc.js +46 -0
- package/src/application/docs/devguide.md +173 -0
- package/src/application/docs/introduction.md +81 -0
- package/src/application/index.js +1 -0
- package/src/brief/get.js +1 -1
- package/src/classes/create.js +6 -1
- package/src/classes/delete.js +7 -1
- package/src/classes/detail.js +8 -1
- package/src/classes/doc.js +49 -472
- package/src/classes/docs/devguide.md +541 -0
- package/src/classes/get.js +9 -2
- package/src/classes/index.js +2 -1
- package/src/classes/publish.js +6 -1
- package/src/classes/pull.js +6 -1
- package/src/classes/pullList.js +6 -3
- package/src/config/doc.js +31 -0
- package/src/config/docs/devguide.md +100 -0
- package/src/config/index.js +5 -0
- package/src/customPage/create.js +52 -19
- package/src/customPage/doc.js +46 -0
- package/src/customPage/docs/devguide.md +200 -0
- package/{.cursor/skills/cloudcc-cli-dev/docs//350/207/252/345/256/232/344/271/211/351/241/265/351/235/242.md → src/customPage/docs/introduction.md} +1 -5
- package/src/customPage/index.js +1 -0
- package/src/customSetting/create.js +9 -0
- package/src/customSetting/delete.js +10 -1
- package/src/customSetting/deleteCustomSettingField.js +43 -0
- package/src/customSetting/detail.js +10 -1
- package/src/customSetting/doc.js +22 -179
- package/src/customSetting/docs/devguide.md +181 -0
- package/src/customSetting/docs/introduction.md +3 -0
- package/src/customSetting/editCustomSettingField.js +34 -0
- package/src/customSetting/get.js +9 -0
- package/src/customSetting/index.js +6 -1
- package/src/customSetting/modify.js +30 -0
- package/src/customSetting/saveCustomSettingField.js +46 -0
- package/src/fields/doc.js +45 -0
- package/src/fields/docs/devguide.md +224 -0
- package/src/fields/docs/introduction.md +217 -0
- package/src/fields/index.js +1 -0
- package/src/globalSelectList/create.js +51 -0
- package/src/globalSelectList/delete.js +56 -0
- package/src/globalSelectList/detail.js +45 -0
- package/src/globalSelectList/doc.js +52 -0
- package/src/globalSelectList/docs/devguide.md +153 -0
- package/src/globalSelectList/docs/introduction.md +82 -0
- package/src/globalSelectList/get.js +31 -0
- package/src/globalSelectList/index.js +16 -0
- package/src/menu/create-page.js +43 -6
- package/src/menu/create-script.js +67 -19
- package/src/menu/doc.js +57 -0
- package/src/menu/docs/devguide.md +129 -0
- package/src/menu/docs/introduction.md +99 -0
- package/src/menu/index.js +1 -0
- package/src/menu/validator.js +80 -0
- package/src/object/doc.js +45 -0
- package/src/object/docs/devguide.md +112 -0
- package/src/object/docs/introduction.md +187 -0
- package/src/object/get.js +1 -23
- package/src/object/index.js +1 -0
- package/src/pagelayout/create.js +123 -0
- package/src/pagelayout/delete.js +57 -0
- package/src/pagelayout/doc.js +46 -0
- package/src/pagelayout/docs/devguide.md +83 -0
- package/src/pagelayout/docs/introduction.md +44 -0
- package/src/pagelayout/get.js +46 -0
- package/src/pagelayout/index.js +10 -0
- package/src/plugin/doc.js +43 -863
- package/src/plugin/docs/devguide.md +996 -0
- package/src/profile/create.js +108 -0
- package/src/profile/delete.js +59 -0
- package/src/profile/doc.js +46 -0
- package/src/profile/docs/devguide.md +77 -0
- package/src/profile/docs/introduction.md +123 -0
- package/src/profile/get.js +55 -0
- package/src/profile/index.js +14 -0
- package/src/project/doc.js +39 -372
- package/src/project/docs/devguide.md +359 -0
- package/src/project/docs/introduction.md +3 -0
- package/src/recordType/create.js +77 -0
- package/src/recordType/delete.js +52 -0
- package/src/recordType/doc.js +36 -0
- package/src/recordType/docs/devguide.md +160 -0
- package/src/recordType/docs/introduction.md +53 -0
- package/src/recordType/editInfo.js +39 -0
- package/src/recordType/editSave.js +47 -0
- package/src/recordType/getList.js +31 -0
- package/src/recordType/index.js +16 -3
- package/src/recordType/newInfo.js +39 -0
- package/src/recordType/validDelete.js +91 -0
- package/src/res.md +66 -0
- package/src/role/create.js +153 -0
- package/src/role/delete.js +59 -0
- package/src/role/doc.js +46 -0
- package/src/role/docs/devguide.md +81 -0
- package/src/role/docs/introduction.md +124 -0
- package/src/role/get.js +57 -0
- package/src/role/index.js +10 -0
- package/src/scheduleJob/doc.js +49 -0
- package/src/scheduleJob/docs/devguide.md +79 -0
- package/src/scheduleJob/docs/introduction.md +101 -0
- package/src/scheduleJob/index.js +5 -0
- package/src/script/delete.js +112 -0
- package/src/script/doc.js +31 -245
- package/src/script/docs/devguide.md +290 -0
- package/src/script/docs/introduction.md +48 -0
- package/src/script/index.js +1 -0
- package/src/staticResource/count.js +31 -10
- package/src/staticResource/create.js +97 -0
- package/src/staticResource/delete.js +30 -8
- package/src/staticResource/detail.js +32 -10
- package/src/staticResource/doc.js +21 -88
- package/src/staticResource/docs/devguide.md +157 -0
- package/src/staticResource/docs/introduction.md +3 -0
- package/src/staticResource/get.js +31 -8
- package/src/staticResource/index.js +2 -1
- package/src/timer/create.js +6 -1
- package/src/timer/delete.js +7 -1
- package/src/timer/detail.js +5 -5
- package/src/timer/doc.js +57 -0
- package/{.cursor/skills/cloudcc-cli-dev/docs/cloudcc/345/256/232/346/227/266/344/275/234/344/270/232.md → src/timer/docs/devguide.md} +83 -1
- package/src/timer/get.js +7 -1
- package/src/timer/index.js +3 -1
- package/src/timer/publish.js +6 -1
- package/src/timer/pull.js +6 -1
- package/src/timer/pullList.js +5 -3
- package/src/triggers/detail.js +5 -5
- package/src/triggers/doc.js +49 -364
- package/src/triggers/docs/devguide.md +442 -0
- package/src/triggers/get.js +7 -3
- package/src/triggers/index.js +1 -4
- package/src/triggers/pullList.js +7 -7
- package/src/user/create.js +50 -0
- package/src/user/delete.js +59 -0
- package/src/user/doc.js +46 -0
- package/src/user/docs/devguide.md +122 -0
- package/src/user/docs/introduction.md +124 -0
- package/src/user/get.js +112 -0
- package/src/user/index.js +12 -0
- package/src/user/update.js +96 -0
- package/src/user/view.js +60 -0
- package/test/classes.cli.test.js +7 -4
- package/test/customPage.cli.test.js +96 -0
- package/test/globalSelectList.cli.test.js +94 -0
- package/test/menu-script.cli.test.js +147 -0
- package/test/menu.cli.test.js +8 -1
- package/test/plugin.cli.test.js +5 -3
- package/test/timer.cli.test.js +15 -8
- package/test/trigger.cli.test.js +5 -3
- package/.cursor/skills/cloudcc-cli-dev/BACKEND_CLASS.md +0 -111
- package/.cursor/skills/cloudcc-cli-dev/BACKEND_SCHEDULE.md +0 -152
- package/.cursor/skills/cloudcc-cli-dev/BACKEND_TRIGGER.md +0 -150
- package/.cursor/skills/cloudcc-cli-dev/CLI_CHEATSHEET.md +0 -372
- package/.cursor/skills/cloudcc-cli-dev/CUSTOM-SETTING-API.md +0 -62
- package/.cursor/skills/cloudcc-cli-dev/INSTALL_AND_BOOTSTRAP.md +0 -62
- package/.cursor/skills/cloudcc-cli-dev/OBJECTS_AND_FIELDS.md +0 -214
- package/.cursor/skills/cloudcc-cli-dev/REQUIREMENTS_BREAKDOWN.md +0 -113
- package/.cursor/skills/cloudcc-cli-dev/SKILL.md +0 -66
- package/.cursor/skills/cloudcc-cli-dev/STATIC-RESOURCE-API.md +0 -60
- package/.cursor/skills/cloudcc-cli-dev/VUE_CUSTOM_COMPONENT.md +0 -151
- package/.cursor/skills/cloudcc-cli-dev/VUE_CUSTOM_PAGE.md +0 -216
- package/src/approval/approve.js +0 -105
- package/src/approval/get.js +0 -245
- package/src/approval/index.js +0 -11
- package/src/approval/reject.js +0 -105
- package/src/plugin/readme.md +0 -7
- /package/{src/mcp → mcp}/cliRunner.js +0 -0
- /package/{src/mcp → mcp}/index.js +0 -0
- /package/{src/mcp → mcp}/readme.md +0 -0
- /package/{src/mcp → mcp}/tools/Application Creator/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Approval/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Class Creator/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Class Detail Retriever/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Class List Retriever/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Class Publisher/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Class Puller/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Client Script Detail Retriever/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Client Script Editor Guide/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Client Script List Retriever/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Client Script Publisher/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Client Script Puller/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/CloudCC Development Overview/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Component Creator/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Component Detail Retriever/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Component List Retriever/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Component Publisher/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Component Puller/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Dev Environment Creator/fetcher.js +0 -0
- /package/{src/mcp → mcp}/tools/Dev Environment Creator/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Dev Environment Validator/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Developer Key Setup Guide/fetcher.js +0 -0
- /package/{src/mcp → mcp}/tools/Developer Key Setup Guide/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/JSP Migrator/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Menu Creator/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Object Creator/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Object Fields Creator/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Object Fields Retriever/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Object List Retriever/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Scheduled Class Creator/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Scheduled Class Detail Retriever/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Scheduled Class List Retriever/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Scheduled Class Publisher/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Scheduled Class Puller/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Trigger Creator/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Trigger Detail Retriever/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Trigger List Retriever/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Trigger Publisher/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/Trigger Puller/handler.js +0 -0
- /package/{src/mcp → mcp}/tools/index.js +0 -0
- /package/{.cursor/skills/cloudcc-cli-dev/docs//350/207/252/345/256/232/344/271/211/347/261/273.md" → src/classes/docs/introduction.md} +0 -0
- /package/{.cursor/skills/cloudcc-cli-dev/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
- /package/{.cursor/skills/cloudcc-cli-dev/docs/cloudcc/345/256/232/346/227/266/347/261/273.md" → src/timer/docs/introduction.md} +0 -0
- /package/{.cursor/skills/cloudcc-cli-dev/docs//350/247/246/345/217/221/345/231/250/347/261/273.md" → src/triggers/docs/introduction.md} +0 -0
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
## 覆盖范围
|
|
2
|
-
|
|
3
|
-
本篇聚焦用 `cloudcc-cli` 的 `cc` 命令完成:
|
|
4
|
-
|
|
5
|
-
- 创建自定义对象(Custom Object)
|
|
6
|
-
- 删除自定义对象
|
|
7
|
-
- 查询对象列表
|
|
8
|
-
- 查询对象字段
|
|
9
|
-
- 为对象创建字段(支持多字段类型)
|
|
10
|
-
- 删除字段
|
|
11
|
-
-(可选)创建菜单、创建应用(把对象挂到导航中)
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## 自定义对象(Custom Object)
|
|
16
|
-
|
|
17
|
-
### 你需要准备什么信息
|
|
18
|
-
|
|
19
|
-
- **对象显示标签(label)**:例如“客户”“合同”“付款计划”
|
|
20
|
-
- **项目路径(projectPath)**:模板项目根目录
|
|
21
|
-
|
|
22
|
-
### CLI 命令(项目已有实现)
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
cc create object <projectPath> <label>
|
|
26
|
-
cc create object <projectPath> <label> <nameLabel>
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
示例:
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
cc create object . 客户
|
|
33
|
-
cc create object . 客户 customer_custom_object
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
说明:
|
|
37
|
-
|
|
38
|
-
- `nameLabel` 可选,不传时会由工具根据 `label` 自动生成(例如 `customer_custom_object`)。
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## 删除自定义对象
|
|
43
|
-
|
|
44
|
-
### CLI 命令(项目已有实现)
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
cc delete object <projectPath> <objid>
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
示例:
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
cc delete object . 20261EF49B88F9269cVr
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
说明:
|
|
57
|
-
|
|
58
|
-
- `objid` 为对象 ID,可先用 `cc get object <projectPath> custom` 查询。
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## 查询对象列表
|
|
63
|
-
|
|
64
|
-
### CLI 命令(输出 JSON)
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
# type 可选:standard / custom / chat / trigger / fields
|
|
68
|
-
# 不传 type 时返回 standard + custom
|
|
69
|
-
cc get object <projectPath> [type]
|
|
70
|
-
|
|
71
|
-
# 当 type=fields 时,需要额外传对象 JSON(至少含 objprefix)
|
|
72
|
-
cc get object <projectPath> fields <encodedObjectJson>
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
示例:
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
cc get object .
|
|
79
|
-
cc get object . custom
|
|
80
|
-
cc get object . fields "$(node -e 'console.log(encodeURI(JSON.stringify({objprefix:\"a01\"})))')"
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
用途:
|
|
84
|
-
|
|
85
|
-
- 获取对象 `objprefix` / 对象 `id`(后续创建字段、触发器会用到)
|
|
86
|
-
- `type=trigger` 时可拿到触发器创建所需的目标对象信息
|
|
87
|
-
- `type=fields` 时用于基于对象前缀查询字段(需额外传 encodedObjectJson,通常更建议直接使用 `cc get fields`)
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## 查询对象字段列表
|
|
92
|
-
|
|
93
|
-
### CLI 命令(输出 JSON)
|
|
94
|
-
|
|
95
|
-
```bash
|
|
96
|
-
cc get fields <projectPath> <objprefix>
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
示例:
|
|
100
|
-
|
|
101
|
-
```bash
|
|
102
|
-
cc get fields . a01
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
用途:
|
|
106
|
-
|
|
107
|
-
- 在创建字段前,先确认是否已存在同名/同含义字段,避免重复与冲突。
|
|
108
|
-
|
|
109
|
-
---
|
|
110
|
-
|
|
111
|
-
## 创建字段(Field)
|
|
112
|
-
|
|
113
|
-
### CLI 命令形态(项目已有实现)
|
|
114
|
-
|
|
115
|
-
字段创建命令由工具根据字段类型拼装,典型形态:
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
cc create fields <projectPath> <fieldType> <objid> <nameLabel> [ptext|lookupObj]
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
### 字段类型选择建议(常用)
|
|
122
|
-
|
|
123
|
-
- **S**:文本(最常用)
|
|
124
|
-
- **N**:数字
|
|
125
|
-
- **D / F**:日期 / 日期时间
|
|
126
|
-
- **B**:复选框
|
|
127
|
-
- **L / Q**:选项列表(单选/多选)
|
|
128
|
-
- **Y / MR / M**:关系字段(查找/查找多选/主详)
|
|
129
|
-
- **E / H / U**:邮箱/电话/URL
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
## 删除字段(Field)
|
|
134
|
-
|
|
135
|
-
### CLI 命令(项目已有实现)
|
|
136
|
-
|
|
137
|
-
```bash
|
|
138
|
-
cc delete fields <projectPath> <fieldId> <objid>
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
示例:
|
|
142
|
-
|
|
143
|
-
```bash
|
|
144
|
-
cc delete fields . ffe2026F12B15D3sCX5R 202688F2CF34EE6vnMQ5
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
说明:
|
|
148
|
-
|
|
149
|
-
- 删除接口为“彻底删除”,执行前请确认该字段未被公式字段、触发器、脚本、页面布局依赖。
|
|
150
|
-
|
|
151
|
-
---
|
|
152
|
-
|
|
153
|
-
## 菜单与应用(让对象可访问)
|
|
154
|
-
|
|
155
|
-
### 创建菜单(CLI)
|
|
156
|
-
|
|
157
|
-
```bash
|
|
158
|
-
cc create menu object <projectPath> <objectId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
|
|
159
|
-
cc create menu page <projectPath> <pageApi> <tabName> <pname> [tabStyle] [mobileimg] [cloudccservicetab] [mobileurl]
|
|
160
|
-
cc create menu script <projectPath> <scriptId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
|
|
161
|
-
cc create menu site <projectPath> <siteId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
示例:
|
|
165
|
-
|
|
166
|
-
```bash
|
|
167
|
-
cc create menu object . <objectId> "我的对象菜单"
|
|
168
|
-
cc create menu page . contract-assistant "合同助手" contract_assistant_menu
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
说明:
|
|
172
|
-
|
|
173
|
-
- `pageApi` 为自定义页面 API 名,命令内部会自动拼接为 `lightningPage`(`pageApi#lightning`)。
|
|
174
|
-
- `create menu page` 的 `pageType` 固定为 `customPage`,`mobileurl` 默认空字符串。
|
|
175
|
-
- `pname` 为菜单名称字段,必填。
|
|
176
|
-
|
|
177
|
-
### 查询菜单(CLI)
|
|
178
|
-
|
|
179
|
-
```bash
|
|
180
|
-
cc get menu <projectPath> [encodedCondJson]
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
说明:
|
|
184
|
-
|
|
185
|
-
- 接口若返回分组结构(如 `botlist/objectlist/objlist/pagelist/scriptlist`),CLI 会自动聚合为数组并输出。
|
|
186
|
-
- 聚合结果每一项会附带 `__group` 字段,表示来源分组。
|
|
187
|
-
|
|
188
|
-
### 删除菜单(CLI)
|
|
189
|
-
|
|
190
|
-
```bash
|
|
191
|
-
cc delete menu <projectPath> <tabId>
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
### 创建应用(CLI)
|
|
195
|
-
|
|
196
|
-
```bash
|
|
197
|
-
cc create application <projectPath> <appName> <appCode> [menuIds]
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
### 查询应用(CLI)
|
|
201
|
-
|
|
202
|
-
```bash
|
|
203
|
-
cc get application <projectPath> [encodedCondJson]
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
### 删除应用(CLI)
|
|
207
|
-
|
|
208
|
-
```bash
|
|
209
|
-
cc delete application <projectPath> <appId>
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
说明:
|
|
213
|
-
|
|
214
|
-
- `menuIds`:可选,多个用逗号分隔;系统会确保默认菜单 `acf000001` 被包含。
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
## 目标
|
|
2
|
-
|
|
3
|
-
把业务需求翻译成 CloudCC CRM 二开落地项,并选择“应该做什么组件”:自定义对象/字段/菜单/应用/自定义类/定时器/触发器/自定义组件/客户端脚本。
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 设计前阅读(先看模块文档)
|
|
8
|
-
|
|
9
|
-
在做需求拆解与技术方案设计前,优先阅读 `docs` 目录中对应模块说明,先建立能力边界与适用场景认知,再进行选型与设计,避免组件误选。
|
|
10
|
-
|
|
11
|
-
- 自定义类:`docs/自定义类.md`
|
|
12
|
-
- 触发器:`docs/触发器类.md`
|
|
13
|
-
- 定时类:`docs/cloudcc定时类.md`
|
|
14
|
-
- 定时作业:`docs/cloudcc定时作业.md`
|
|
15
|
-
- 自定义页面:`docs/自定义页面.md`
|
|
16
|
-
- 自定义组件:`docs/CloudCC自定义组件使用说明.md`
|
|
17
|
-
|
|
18
|
-
如需求涉及多个模块,按“后端能力 -> 页面能力 -> 组合方案”顺序阅读,再输出拆解结果与交付物清单。
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## 需求拆解模板(AI 必须输出)
|
|
23
|
-
|
|
24
|
-
拿到需求后,先输出以下结构(缺信息则显式标注“待确认”):
|
|
25
|
-
|
|
26
|
-
- **背景与目标**:要解决什么问题,成功标准是什么。
|
|
27
|
-
- **角色与权限**:涉及哪些用户/简档/权限集,是否需要后台权限调整。
|
|
28
|
-
- **对象与数据模型**:
|
|
29
|
-
- 需要哪些**自定义对象**(表)?
|
|
30
|
-
- 需要哪些**字段**(类型、必填/唯一、默认值、选项、查找/主详关系)?
|
|
31
|
-
- 是否涉及**记录类型**、**布局**、**验证规则**(若 CLI 不覆盖,需在 CRM 配置)?
|
|
32
|
-
- **业务流程**:
|
|
33
|
-
- 触发时机:保存前/保存后/提交审批/批处理/定时等
|
|
34
|
-
- 需要哪些自动化:校验、自动赋值、联动更新、异步任务、定时任务
|
|
35
|
-
- **界面与交互**:
|
|
36
|
-
- 是否需要自定义页面或嵌入式 UI?
|
|
37
|
-
- 是否需要列表/详情/编辑页的前端交互(客户端脚本 / 自定义组件)?
|
|
38
|
-
- **集成与外部依赖**:第三方接口、鉴权方式、重试/限流、日志与审计。
|
|
39
|
-
- **风险与回滚**:数据迁移、权限影响、性能与批量场景、灰度与回滚方案。
|
|
40
|
-
- **交付物清单**:最终要产出哪些 CloudCC 资产(对象/字段/菜单/应用/类/触发器/定时器/组件/脚本)。
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## 方案选型决策表(怎么判断用什么)
|
|
45
|
-
|
|
46
|
-
### 自定义对象(Custom Object)
|
|
47
|
-
|
|
48
|
-
当出现以下需求时,优先考虑创建自定义对象:
|
|
49
|
-
|
|
50
|
-
- 需要一个新的业务实体(类似新表),有独立的字段、权限、页面与列表
|
|
51
|
-
- 需要与现有对象建立查找/主详关系
|
|
52
|
-
- 需要支持审批、报表、共享规则等平台能力(通常都围绕对象展开)
|
|
53
|
-
|
|
54
|
-
### 自定义字段(Field)
|
|
55
|
-
|
|
56
|
-
当需求是“给已有对象补充数据结构”时:
|
|
57
|
-
|
|
58
|
-
- 新增文本/数值/日期/选项/查找关系等字段
|
|
59
|
-
- 需要字段级校验、默认值、必填等(部分能力可能需在 CRM 配置完成)
|
|
60
|
-
|
|
61
|
-
### 触发器(Trigger)
|
|
62
|
-
|
|
63
|
-
当需求是“数据写入前后做强一致业务逻辑”时:
|
|
64
|
-
|
|
65
|
-
- 保存前校验/自动赋值/阻止不合法写入(before*)
|
|
66
|
-
- 保存后联动更新、写日志、创建子记录(after*)
|
|
67
|
-
- 批量/审批/提交后回调等特定时机(approval/batch/commitBatch 等)
|
|
68
|
-
|
|
69
|
-
> 注意:触发器要考虑**批量**、幂等、递归、性能与异常处理。
|
|
70
|
-
|
|
71
|
-
### 自定义类(Class)
|
|
72
|
-
|
|
73
|
-
当需求是“可复用的服务逻辑/复杂计算/对外接口封装”时:
|
|
74
|
-
|
|
75
|
-
- 作为触发器/定时器/页面调用的后端服务类
|
|
76
|
-
- 抽取通用能力(查询封装、校验器、集成适配器)
|
|
77
|
-
|
|
78
|
-
### 定时类(Scheduled Class / Timer)
|
|
79
|
-
|
|
80
|
-
当需求是“按时间周期跑任务”时:
|
|
81
|
-
|
|
82
|
-
- 夜间同步、定时报表、到期提醒、批量修复数据
|
|
83
|
-
- 需要可控的调度表达式与运行日志
|
|
84
|
-
|
|
85
|
-
### 自定义组件(Vue Custom Component)
|
|
86
|
-
|
|
87
|
-
当需求是“在 CloudCC UI 中提供复杂交互 UI”时:
|
|
88
|
-
|
|
89
|
-
- 自定义表单、复杂联动、可视化、批量操作 UI
|
|
90
|
-
- 需要前端框架能力(Vue2.x)与更强的用户体验
|
|
91
|
-
|
|
92
|
-
### 客户端脚本(Client Script)
|
|
93
|
-
|
|
94
|
-
当需求是“页面级轻量交互/字段联动/保存前校验”时:
|
|
95
|
-
|
|
96
|
-
- 列表/详情/编辑/新建页生命周期钩子
|
|
97
|
-
- 字段变更联动、提示、轻量校验
|
|
98
|
-
|
|
99
|
-
> 客户端脚本更轻量;交互复杂或需要组件化复用,建议升级为自定义组件。
|
|
100
|
-
|
|
101
|
-
---
|
|
102
|
-
|
|
103
|
-
## 推荐落地流程(AI 执行顺序)
|
|
104
|
-
|
|
105
|
-
一般建议按以下顺序落地(从“数据结构”到“业务逻辑”再到“界面”):
|
|
106
|
-
|
|
107
|
-
1. **对象与字段**:先把数据模型搭好(对象、字段、关系)
|
|
108
|
-
2. **菜单与应用**:让用户能访问(菜单/应用)
|
|
109
|
-
3. **后端逻辑**:自定义类 / 触发器 / 定时器
|
|
110
|
-
4. **前端交互**:客户端脚本 / 自定义组件
|
|
111
|
-
5. **联调与回归**:核心路径 + 批量场景 + 权限场景
|
|
112
|
-
6. **发布与回滚准备**:版本记录、灰度、回滚策略
|
|
113
|
-
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cloudcc-cli-dev
|
|
3
|
-
description: CloudCC CRM 二次开发 CLI 助手。用于需求拆解与方案选型,并通过 cloudcc-cli(cc 命令)创建/拉取/发布类、定时类、定时作业、触发器、自定义组件、自定义页面、自定义设置、客户端脚本与静态资源。用户提到 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
|
-
- 每次启动这个技能,要扫描下code文件夹,查看创建的项目
|
|
14
|
-
|
|
15
|
-
## 使用方式(AI 必须遵循)
|
|
16
|
-
|
|
17
|
-
- 设计实现方案时,重点阅读 `REQUIREMENTS_BREAKDOWN.md`,输出需求拆解与交付物清单,发开时可以忽略
|
|
18
|
-
- 需要环境/密钥 配置时,阅读 `INSTALL_AND_BOOTSTRAP.md`。
|
|
19
|
-
- 需要建模时(对象/字段/菜单/应用),阅读 `OBJECTS_AND_FIELDS.md`。
|
|
20
|
-
- 需要开发后端逻辑时(类/定时器/触发器),按主题阅读:
|
|
21
|
-
- `BACKEND_CLASS.md`
|
|
22
|
-
- `BACKEND_SCHEDULE.md`
|
|
23
|
-
- `BACKEND_TRIGGER.md`
|
|
24
|
-
- 需要开发自定义组件时,阅读 `VUE_CUSTOM_COMPONENT.md`。
|
|
25
|
-
- 需要开发自定义页面时,阅读 `VUE_CUSTOM_PAGE.md`。
|
|
26
|
-
- 需要开发自定义设置时,阅读 `CUSTOM-SETTING-API.md`。
|
|
27
|
-
- 需要管理静态资源时,阅读 `STATIC-RESOURCE-API.md`。
|
|
28
|
-
- 需要开发客户端脚本时,优先阅读 `CLI_CHEATSHEET.md` 中的 `script` 命令章节。
|
|
29
|
-
- 需要快速对照命令与参数时,阅读 `CLI_CHEATSHEET.md`。
|
|
30
|
-
|
|
31
|
-
## 密钥配置
|
|
32
|
-
|
|
33
|
-
密钥应配置在每个项目的 `cloudcc-cli.config.js` 文件中,不要存储在技能目录中。
|
|
34
|
-
|
|
35
|
-
示例配置:
|
|
36
|
-
```javascript
|
|
37
|
-
module.exports = {
|
|
38
|
-
"use": "junjiedemo",
|
|
39
|
-
"junjiedemo": {
|
|
40
|
-
"safetyMark": "xxx",
|
|
41
|
-
"CloudCCDev": "xxx"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## 强制安全边界
|
|
47
|
-
|
|
48
|
-
- 不要在输出/代码/提交中包含真实密钥(`CloudCCDev`、`safetyMark`、`secretKey`、`openSecretKey`、token
|
|
49
|
-
等)。
|
|
50
|
-
- 后端类/触发器/定时器遵守片段同步:仅在
|
|
51
|
-
`@SOURCE_CONTENT_START`~`@SOURCE_CONTENT_END` 内编写可发布逻辑。
|
|
52
|
-
- 客户端脚本遵守片段同步:仅在 `function main($CCDK, obj) { ... }`
|
|
53
|
-
的函数体内编写可发布逻辑。
|
|
54
|
-
|
|
55
|
-
## 快速入口
|
|
56
|
-
|
|
57
|
-
- 安装与初始化:`INSTALL_AND_BOOTSTRAP.md`
|
|
58
|
-
- 需求拆解与方案选择:`REQUIREMENTS_BREAKDOWN.md`
|
|
59
|
-
- 自定义对象与字段:`OBJECTS_AND_FIELDS.md`
|
|
60
|
-
- 类/定时类/定时作业/触发器:`BACKEND_CLASS.md`、`BACKEND_SCHEDULE.md`、`BACKEND_TRIGGER.md`
|
|
61
|
-
- Vue 自定义组件:`VUE_CUSTOM_COMPONENT.md`
|
|
62
|
-
- 自定义页面:`VUE_CUSTOM_PAGE.md`
|
|
63
|
-
- 自定义设置:`CUSTOM-SETTING-API.md`
|
|
64
|
-
- 静态资源:`STATIC-RESOURCE-API.md`
|
|
65
|
-
- 客户端脚本:`CLI_CHEATSHEET.md`(`script` 章节)
|
|
66
|
-
- CLI 速查:`CLI_CHEATSHEET.md`
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# 静态资源(cc 命令模式)
|
|
2
|
-
|
|
3
|
-
本文已从“直接 API 文档”重构为“`cc` 命令优先”。
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 覆盖范围
|
|
8
|
-
|
|
9
|
-
通过 `cc` 管理静态资源:
|
|
10
|
-
|
|
11
|
-
- 列表查询
|
|
12
|
-
- 详情查询
|
|
13
|
-
- 删除
|
|
14
|
-
- 容量统计
|
|
15
|
-
- 文档查看
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## 命令速查
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
# 文档
|
|
23
|
-
cc doc staticResource
|
|
24
|
-
|
|
25
|
-
# 列表(condition 可选)
|
|
26
|
-
cc get staticResource <projectPath> [encodedCondJson]
|
|
27
|
-
|
|
28
|
-
# 详情
|
|
29
|
-
cc detail staticResource <projectPath> <resourceId>
|
|
30
|
-
|
|
31
|
-
# 删除
|
|
32
|
-
cc delete staticResource <projectPath> <resourceId>
|
|
33
|
-
|
|
34
|
-
# 容量统计
|
|
35
|
-
cc count staticResource <projectPath> [encodedCondJson]
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## 参数说明
|
|
41
|
-
|
|
42
|
-
- `projectPath`:项目根目录(包含 `cloudcc-cli.config.js`)。
|
|
43
|
-
- `encodedCondJson`:`encodeURI(JSON.stringify({...}))` 形式条件参数。
|
|
44
|
-
|
|
45
|
-
示例:
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
cc get staticResource . "$(node -e 'console.log(encodeURI(JSON.stringify({label:\"logo\"})))')"
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
cc count staticResource .
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## 说明与边界
|
|
58
|
-
|
|
59
|
-
- 当前未封装“文件上传/更新”命令(`saveStaticResource` 涉及 `FormData` 上传文件)。
|
|
60
|
-
- 需要上传文件时,建议使用平台页面操作;后续可按需求补 `cc create staticResource`。
|
|
@@ -1,151 +0,0 @@
|
|
|
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
|
-
创建完成后通常会生成以下结构(以 `create1` 的骨架为准):
|
|
21
|
-
|
|
22
|
-
- `plugins/<pluginName>/<pluginName>.vue`:组件入口文件(包含
|
|
23
|
-
`componentInfo`,并默认引入一个 `HelloWorld` 子组件)
|
|
24
|
-
- `plugins/<pluginName>/components/HelloWorld.vue`:示例子组件
|
|
25
|
-
- `plugins/<pluginName>/config.json`:组件元数据(至少包含 `component` /
|
|
26
|
-
`compName` / `compDesc`)
|
|
27
|
-
|
|
28
|
-
> 组件入口文件里的 `componentInfo.component`
|
|
29
|
-
> 需要全局唯一(用于平台识别/装载组件)。
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
## 发布组件
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
cc publish plugin <pluginName>
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
> 发布会执行编译/打包/上传;如果组件依赖复杂,注意依赖收集与发布策略。
|
|
40
|
-
|
|
41
|
-
### 打包/注册策略(publish1:v1 / v2)
|
|
42
|
-
|
|
43
|
-
`publish1` 支持两种打包/注册方式,会根据组件里的 `componentInfo.buildVersion`
|
|
44
|
-
选择:
|
|
45
|
-
|
|
46
|
-
- 默认(v1,`buildVersion` 不写或不等于 `"v2"`)
|
|
47
|
-
- 使用 `vue-custom-element` 将组件注册为 Web Component/custom element
|
|
48
|
-
- 注册名来自 `componentInfo.component`
|
|
49
|
-
- v2(设置 `componentInfo.buildVersion = "v2"`)
|
|
50
|
-
- 使用 `Vue.component` 的方式注册组件
|
|
51
|
-
|
|
52
|
-
示例(在组件入口 `.vue` 的 `data()` 里配置):
|
|
53
|
-
|
|
54
|
-
```js
|
|
55
|
-
componentInfo: {
|
|
56
|
-
component: "component-<pluginName>",
|
|
57
|
-
compName: "compName-<pluginName>",
|
|
58
|
-
compDesc: "Component description information",
|
|
59
|
-
// 选填:不填默认 v1;填 "v2" 则走 Vue.component 注册
|
|
60
|
-
buildVersion: "v2"
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### 加载模式(loadModel:lazy / start)
|
|
65
|
-
|
|
66
|
-
`publish1` 会读取 `componentInfo.loadModel` 来决定组件加载时机:
|
|
67
|
-
|
|
68
|
-
- `lazy`:默认,进入对应页面/区域后再加载
|
|
69
|
-
- `start`:启动加载,在应用启动时即加载
|
|
70
|
-
|
|
71
|
-
你可以在 `componentInfo` 中按需设置,例如:
|
|
72
|
-
|
|
73
|
-
```js
|
|
74
|
-
componentInfo: {
|
|
75
|
-
// ...
|
|
76
|
-
loadModel: "start";
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
## 同步(从云端拉取)
|
|
82
|
-
|
|
83
|
-
> “同步”在本仓库中对应 `pull`:把云端的自定义组件代码/配置拉到本地 `plugins/<pluginName>/`。
|
|
84
|
-
|
|
85
|
-
### CLI 命令
|
|
86
|
-
|
|
87
|
-
```bash
|
|
88
|
-
# 同步插件到本地(可传组件名或 id)
|
|
89
|
-
cc pull plugin <pluginNameOrId> [projectPath]
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
说明:
|
|
93
|
-
|
|
94
|
-
- `projectPath` 可选;不传则默认当前工作目录。
|
|
95
|
-
- 传组件名时:如果本地 `plugins/<pluginName>/config.json` 存在 `id`,会用 `id` 拉取;否则会把入参当作 `id` 处理。
|
|
96
|
-
- 拉取后会生成/更新 `plugins/<归一化后的pluginName>/config.json` 与相关文件(包含依赖文件)。
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## 删除组件(云端)
|
|
100
|
-
|
|
101
|
-
> 删除只影响**云端**记录,本地 `plugins/<pluginName>/` 目录不会被删除。
|
|
102
|
-
|
|
103
|
-
### CLI 命令
|
|
104
|
-
|
|
105
|
-
```bash
|
|
106
|
-
# 传组件名(自动从本地 plugins/<pluginName>/config.json 读取 id)
|
|
107
|
-
cc delete plugin <pluginName> [projectPath]
|
|
108
|
-
|
|
109
|
-
# 直接传云端 ID
|
|
110
|
-
cc delete plugin <pluginId> [projectPath]
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
说明:
|
|
114
|
-
|
|
115
|
-
- 传组件名时:如果本地 `plugins/<pluginName>/config.json` 存在 `id`,会用 `id`
|
|
116
|
-
删除;否则把入参当作 `id` 直接请求。
|
|
117
|
-
- `projectPath` 可选,不传则默认当前工作目录。
|
|
118
|
-
- 删除成功后控制台会打印 `Success! Plugin (ID: xxx) deleted from server.`
|
|
119
|
-
|
|
120
|
-
---
|
|
121
|
-
## 批量拉取
|
|
122
|
-
|
|
123
|
-
> 当前仓库没有直接提供 `cc pullList plugin ...` 这种“内置批量拉取”命令。
|
|
124
|
-
|
|
125
|
-
推荐方式:先用 `get plugin` 获取线上列表(包含 `id`),再用循环批量执行 `pull plugin <id>`。
|
|
126
|
-
|
|
127
|
-
### 步骤 1:获取线上列表
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
cc get plugin <projectPath>
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### 步骤 2:循环拉取(示例)
|
|
134
|
-
|
|
135
|
-
```bash
|
|
136
|
-
# 批量拉取前 N 个线上组件(示例 N=5)
|
|
137
|
-
N=5
|
|
138
|
-
ids=$(cc get plugin . | node -e "const a=JSON.parse(require('fs').readFileSync(0,'utf8')); console.log(a.slice(0,${N}).map(x=>x.id).filter(Boolean).join(' '))")
|
|
139
|
-
for id in $ids; do
|
|
140
|
-
cc pull plugin "$id" .
|
|
141
|
-
done
|
|
142
|
-
```
|
|
143
|
-
---
|
|
144
|
-
|
|
145
|
-
## 编辑要点(CLI 项目约束)
|
|
146
|
-
|
|
147
|
-
- 组件目录通常为 `plugins/<pluginName>/`
|
|
148
|
-
- 确保所有 `<style>` 标签带 `scoped`,避免全局样式污染
|
|
149
|
-
- 发布通过 `cc publish plugin <pluginName>` 执行编译与上传
|
|
150
|
-
|
|
151
|
-
---
|