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
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
# CloudCC 字段开发指南
|
|
2
|
+
|
|
3
|
+
## 1. 模块定位
|
|
4
|
+
|
|
5
|
+
`fields` 模块用于管理 CloudCC 对象字段,当前提供查询、创建、删除三类能力。
|
|
6
|
+
|
|
7
|
+
可通过以下命令读取文档:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
cc doc fields introduction
|
|
11
|
+
cc doc fields devguide
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 2. 当前支持的命令
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
cc get fields <projectPath> <objPrefix>
|
|
20
|
+
cc create fields <projectPath> <fieldType> <objid> <fieldLabel> [extraArg]
|
|
21
|
+
cc delete fields <projectPath> <fieldId> <objid>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
说明:
|
|
25
|
+
|
|
26
|
+
- `projectPath`:本地项目路径,用于读取 `cloudcc-cli.config.js`
|
|
27
|
+
- `objPrefix`:对象前缀,用于查询字段
|
|
28
|
+
- `fieldType`:字段类型编码(例如 `S`、`N`、`D` 等)
|
|
29
|
+
- `objid`:对象 ID
|
|
30
|
+
- `fieldLabel`:字段显示名称
|
|
31
|
+
- `extraArg`:部分字段类型需要的额外参数,如 `ptext` 或 `lookupObj`
|
|
32
|
+
- `fieldId`:字段 ID(用于删除)
|
|
33
|
+
|
|
34
|
+
说明:
|
|
35
|
+
|
|
36
|
+
- 当前 CLI 参数以 `src/fields/create.js`、`src/fields/get.js`、`src/fields/delete.js` 的实际实现为准
|
|
37
|
+
- 字段 API 名称在当前创建逻辑中默认由 CLI 自动生成,不要求单独传入
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 3. 查询字段
|
|
42
|
+
|
|
43
|
+
### 3.1 基本命令
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
cc get fields <projectPath> <objPrefix>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
返回结果包含:
|
|
50
|
+
|
|
51
|
+
- `obj`:对象基础信息
|
|
52
|
+
- `stdFields`:标准字段列表
|
|
53
|
+
- `cusFields`:自定义字段列表
|
|
54
|
+
|
|
55
|
+
每个字段通常包含:
|
|
56
|
+
|
|
57
|
+
- `fieldname`:字段显示名称
|
|
58
|
+
- `apiname`:字段 API 名称
|
|
59
|
+
- `schemefieldType`:字段类型编码
|
|
60
|
+
- `id`:字段 ID
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 4. 创建字段
|
|
65
|
+
|
|
66
|
+
### 4.1 基本命令
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
cc create fields <projectPath> <fieldType> <objid> <fieldLabel> [extraArg]
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
建议:
|
|
73
|
+
|
|
74
|
+
- 先确认对象存在且 `objid` 正确
|
|
75
|
+
- 字段类型与业务含义保持一致(如日期、数字、文本)
|
|
76
|
+
- 当前 CLI 会根据字段标签自动生成字段 API 名称
|
|
77
|
+
- 如果字段依赖选项值或关联对象,创建前先准备好 `extraArg`
|
|
78
|
+
|
|
79
|
+
### 4.2 支持的字段类型说明
|
|
80
|
+
|
|
81
|
+
根据 CloudCC 官方关于“对象-字段”的说明,平台层面支持文本、URL、百分比、币种、数字、文本区、长文本、富文本、电话、电子邮件、日期、日期/时间、评分、选项列表、图片、查找关系、主详信息关系、公式、自动编号、累计汇总、查找多选、复选框等类型。[CloudCC 帮助中心 - 标准对象 / 对象-字段](https://help.cloudcc.cn/product02/biao-zhun-dui-xiang/#3%E5%AF%B9%E8%B1%A1-%E5%AD%97%E6%AE%B5)
|
|
82
|
+
|
|
83
|
+
当前 `src/fields/fields` 中已实现的 CLI 字段类型如下。
|
|
84
|
+
|
|
85
|
+
#### 基础输入类
|
|
86
|
+
|
|
87
|
+
| CLI 类型编码 | 类型名称 | 说明 |
|
|
88
|
+
| --- | --- | --- |
|
|
89
|
+
| `S` | 文本 | 单行文本,默认长度 255 |
|
|
90
|
+
| `U` | URL | 输入有效网址,点击后可打开链接 |
|
|
91
|
+
| `P` | 百分比 | 输入百分比数字 |
|
|
92
|
+
| `C` | 币种 | 金额/币种场景,模板内部 `fdtype` 为 `c` |
|
|
93
|
+
| `N` | 数字 | 输入数值,适用于数量、金额基数等 |
|
|
94
|
+
| `D` | 日期 | 仅日期 |
|
|
95
|
+
| `T` | 时间 | 仅时间 |
|
|
96
|
+
| `F` | 日期/时间 | 日期和时间组合 |
|
|
97
|
+
| `B` | 复选框 | 布尔值,真/假 |
|
|
98
|
+
| `H` | 电话 | 电话号码 |
|
|
99
|
+
| `E` | 电子邮件 | 邮箱地址 |
|
|
100
|
+
| `SCORE` | 评分 | 用于评分或评价场景 |
|
|
101
|
+
|
|
102
|
+
#### 文本区与内容类
|
|
103
|
+
|
|
104
|
+
| CLI 类型编码 | 类型名称 | 说明 |
|
|
105
|
+
| --- | --- | --- |
|
|
106
|
+
| `X` | 文本区 | 多行文本,适合一般备注和说明 |
|
|
107
|
+
| `J` | 文本区(长) | 长文本,模板默认长度 10000 |
|
|
108
|
+
| `A` | 文本区(富文本) | 支持富文本内容、图文描述 |
|
|
109
|
+
| `IMG` | 图片 | 图片类字段 |
|
|
110
|
+
| `FL` | 文件 | 文件类字段 |
|
|
111
|
+
|
|
112
|
+
#### 选择类
|
|
113
|
+
|
|
114
|
+
| CLI 类型编码 | 类型名称 | 说明 |
|
|
115
|
+
| --- | --- | --- |
|
|
116
|
+
| `L` | 选项列表 | 单选下拉 |
|
|
117
|
+
| `Q` | 选项列表(多选) | 多选下拉 |
|
|
118
|
+
|
|
119
|
+
这两类字段创建时都需要额外的选项值参数:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
cc create fields <projectPath> L <objid> <fieldLabel> <ptext>
|
|
123
|
+
cc create fields <projectPath> Q <objid> <fieldLabel> <ptext>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
其中 `ptext` 表示选项内容,通常用于传入候选值集合。
|
|
127
|
+
|
|
128
|
+
平台层面的选项列表能力常用于:
|
|
129
|
+
|
|
130
|
+
- 状态
|
|
131
|
+
- 阶段
|
|
132
|
+
- 分类
|
|
133
|
+
- 来源
|
|
134
|
+
- 优先级
|
|
135
|
+
|
|
136
|
+
#### 关系类
|
|
137
|
+
|
|
138
|
+
| CLI 类型编码 | 类型名称 | 说明 |
|
|
139
|
+
| --- | --- | --- |
|
|
140
|
+
| `Y` | 查找关系 | 关联另一个对象 |
|
|
141
|
+
| `MR` | 查找多选 | 多选关联对象 |
|
|
142
|
+
| `M` | 主详信息关系 | 主从/主详关系字段 |
|
|
143
|
+
|
|
144
|
+
这三类字段创建时都需要额外传入目标对象参数:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
cc create fields <projectPath> Y <objid> <fieldLabel> <lookupObj>
|
|
148
|
+
cc create fields <projectPath> MR <objid> <fieldLabel> <lookupObj>
|
|
149
|
+
cc create fields <projectPath> M <objid> <fieldLabel> <lookupObj>
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
其中 `lookupObj` 表示被关联对象。
|
|
153
|
+
|
|
154
|
+
这类字段常用于:
|
|
155
|
+
|
|
156
|
+
- 客户与联系人的关联
|
|
157
|
+
- 项目与客户的关联
|
|
158
|
+
- 主记录与明细记录的主详结构
|
|
159
|
+
- 多对象之间的一对多或多对多表达
|
|
160
|
+
|
|
161
|
+
#### 地址与定位类
|
|
162
|
+
|
|
163
|
+
| CLI 类型编码 | 类型名称 | 说明 |
|
|
164
|
+
| --- | --- | --- |
|
|
165
|
+
| `AD` | 地址 | 地址复合字段 |
|
|
166
|
+
| `LT` | 地理定位 | 地理坐标或定位信息 |
|
|
167
|
+
|
|
168
|
+
#### 安全与加密类
|
|
169
|
+
|
|
170
|
+
| CLI 类型编码 | 类型名称 | 说明 |
|
|
171
|
+
| --- | --- | --- |
|
|
172
|
+
| `ENC` | 加密文本(存储加密) | 底层存储加密 |
|
|
173
|
+
| `ENCD` | 加密文本(显示加密) | 展示时掩码加密 |
|
|
174
|
+
|
|
175
|
+
说明:
|
|
176
|
+
|
|
177
|
+
- CLI 中使用的类型编码是 `ENC`、`ENCD`
|
|
178
|
+
- 模板内部提交到接口时,对应的 `fdtype` 分别是 `enc`、`encd`
|
|
179
|
+
- `C` 在模板内部对应的 `fdtype` 为小写 `c`
|
|
180
|
+
- 这两类字段更适合身份证号、银行卡号、敏感联系方式等场景
|
|
181
|
+
|
|
182
|
+
### 4.3 当前 CLI 未覆盖但平台支持的字段能力
|
|
183
|
+
|
|
184
|
+
根据官方文档,平台层面还支持以下字段能力,但当前 `src/fields/fields` 目录下尚未看到对应 CLI 创建模板:
|
|
185
|
+
|
|
186
|
+
- 公式
|
|
187
|
+
- 自动编号
|
|
188
|
+
- 累计汇总
|
|
189
|
+
|
|
190
|
+
如果后续希望通过 CLI 直接创建这些字段类型,需要继续补充对应的模板实现。
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## 5. 删除字段
|
|
195
|
+
|
|
196
|
+
### 5.1 基本命令
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
cc delete fields <projectPath> <fieldId> <objid>
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
删除前建议:
|
|
203
|
+
|
|
204
|
+
- 先确认字段未被页面、公式、触发器、类或脚本依赖
|
|
205
|
+
- 先记录字段 API 名称与 ID,防止误删
|
|
206
|
+
- 在测试环境验证后再在正式环境执行
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## 6. 开发前检查
|
|
211
|
+
|
|
212
|
+
- 已完成 `cc doc project devguide` 中的环境准备
|
|
213
|
+
- 项目根目录存在可用的 `cloudcc-cli.config.js`
|
|
214
|
+
- 当前环境密钥配置正确
|
|
215
|
+
- 已确认对象 API 名称、字段类型和命名规则
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## 7. 常见实践建议
|
|
220
|
+
|
|
221
|
+
- 优先先做对象建模,再补字段明细,避免频繁返工
|
|
222
|
+
- 字段命名规范化(显示名称清晰、API 名称可维护)
|
|
223
|
+
- 对核心字段(金额、状态、日期)提前统一格式约定
|
|
224
|
+
- 删除字段前先做依赖排查,确保不影响线上逻辑
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
# CloudCC 字段介绍
|
|
2
|
+
|
|
3
|
+
## 1. 什么是字段
|
|
4
|
+
|
|
5
|
+
字段是对象上的数据属性定义,用于描述一条记录中每个信息项的结构与含义。
|
|
6
|
+
|
|
7
|
+
你可以把字段理解为:
|
|
8
|
+
|
|
9
|
+
- 业务数据的最小单元
|
|
10
|
+
- 对象模型的具体列定义
|
|
11
|
+
- 页面录入、查询、统计和自动化逻辑的基础
|
|
12
|
+
|
|
13
|
+
从 CloudCC
|
|
14
|
+
平台的角度看,字段就是对象的属性。姓名、手机、金额、状态、日期、负责人、附件等信息,本质上都是通过字段来承载的。
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 2. 标准字段与自定义字段
|
|
19
|
+
|
|
20
|
+
CloudCC 对象上的字段通常分为两类:
|
|
21
|
+
|
|
22
|
+
- 标准字段:平台预置字段,属于对象默认能力的一部分
|
|
23
|
+
- 自定义字段:企业根据自身业务场景新增、维护和删除的字段
|
|
24
|
+
|
|
25
|
+
所有对象通常都带有一些共通标准字段,例如:
|
|
26
|
+
|
|
27
|
+
- 对象记录名
|
|
28
|
+
- 创建时间
|
|
29
|
+
- 创建人
|
|
30
|
+
- 最后修改时间
|
|
31
|
+
- 最后修改人
|
|
32
|
+
- 所有人
|
|
33
|
+
|
|
34
|
+
当标准字段无法表达业务信息时,就需要通过自定义字段去补充业务含义。
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 3. 字段模块能做什么
|
|
39
|
+
|
|
40
|
+
`fields` 模块用于围绕对象管理字段,当前支持:
|
|
41
|
+
|
|
42
|
+
- 查询对象字段(标准字段 + 自定义字段)
|
|
43
|
+
- 创建字段
|
|
44
|
+
- 删除字段
|
|
45
|
+
|
|
46
|
+
可通过以下命令读取文档:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
cc doc fields introduction
|
|
50
|
+
cc doc fields devguide
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 4. 字段在系统中的作用
|
|
56
|
+
|
|
57
|
+
字段决定了对象能记录什么信息、如何被录入、如何被展示以及如何参与流程。
|
|
58
|
+
|
|
59
|
+
常见作用包括:
|
|
60
|
+
|
|
61
|
+
- 定义业务属性(如名称、金额、状态、日期)
|
|
62
|
+
- 驱动页面展示和表单校验
|
|
63
|
+
- 支撑筛选、排序、报表统计
|
|
64
|
+
- 作为触发器和后端逻辑的判断条件
|
|
65
|
+
- 为自动化、审批、报表和搜索提供数据基础
|
|
66
|
+
|
|
67
|
+
如果对象是业务模型的骨架,那么字段就是业务模型的具体内容。
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 5. 为什么要重视字段设计
|
|
72
|
+
|
|
73
|
+
字段设计质量会直接影响:
|
|
74
|
+
|
|
75
|
+
- 数据录入是否清晰
|
|
76
|
+
- 报表口径是否统一
|
|
77
|
+
- 查询筛选是否高效
|
|
78
|
+
- 流程和代码是否容易维护
|
|
79
|
+
|
|
80
|
+
字段设计不合理时,常见问题包括:
|
|
81
|
+
|
|
82
|
+
- 同类信息分散在多个字段里
|
|
83
|
+
- 命名混乱,后续脚本和接口难维护
|
|
84
|
+
- 页面录入项过多或缺失,影响使用体验
|
|
85
|
+
- 统计分析无法统一口径
|
|
86
|
+
- 自动化逻辑和触发器条件复杂、难排查
|
|
87
|
+
|
|
88
|
+
因此,字段管理不是简单“加几个列”,而是业务建模和数据治理的重要部分。
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 6. 什么时候需要管理字段
|
|
93
|
+
|
|
94
|
+
通常在以下场景需要使用 `fields` 模块:
|
|
95
|
+
|
|
96
|
+
- 新建对象后,需要补齐业务字段
|
|
97
|
+
- 业务流程变化,需要新增或调整字段结构
|
|
98
|
+
- 数据治理中,需要清理不再使用的字段
|
|
99
|
+
- 接口联动或自动化逻辑需要新增数据位
|
|
100
|
+
- 页面、报表、审批、搜索需要新增业务属性
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 7. 常见业务场景
|
|
105
|
+
|
|
106
|
+
字段设计常见于以下业务场景:
|
|
107
|
+
|
|
108
|
+
- 销售场景:金额、预计签约日期、成交概率、阶段
|
|
109
|
+
- 服务场景:工单状态、处理时间、满意度评分、附件图片
|
|
110
|
+
- 项目场景:项目阶段、负责人、里程碑时间、进度说明
|
|
111
|
+
- 资产场景:设备编号、安装地址、巡检周期、归属客户
|
|
112
|
+
- 渠道场景:渠道级别、返佣比例、合作到期日、联系人信息
|
|
113
|
+
|
|
114
|
+
很多企业在标准 CRM
|
|
115
|
+
之外扩展业务时,真正落地管理的第一步往往不是写代码,而是先把字段设计清楚。
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 8. 平台能力与 CLI 能力的关系
|
|
120
|
+
|
|
121
|
+
根据 CloudCC
|
|
122
|
+
官方文档,平台层面支持丰富的字段体系,包括文本、URL、百分比、币种、数字、文本区、长文本、富文本、电话、电子邮件、日期、日期/时间、评分、选项列表、图片、查找关系、主详信息关系、公式、自动编号、累计汇总、查找多选、复选框等类型。
|
|
123
|
+
|
|
124
|
+
当前 `cloudcc-cli` 的 `fields`
|
|
125
|
+
模块已经覆盖了其中一部分常用字段类型,用于自动化创建和管理字段。
|
|
126
|
+
|
|
127
|
+
因此在实际使用时,需要区分两层:
|
|
128
|
+
|
|
129
|
+
- CloudCC 平台支持的完整字段能力
|
|
130
|
+
- 当前 CLI 已实现的字段创建能力
|
|
131
|
+
|
|
132
|
+
命令开发与自动化脚本,应以 `cc doc fields devguide` 中列出的“当前 CLI
|
|
133
|
+
支持字段类型”为准。
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 9. 字段列表说明
|
|
138
|
+
|
|
139
|
+
从业务理解角度,可以把常见字段类型分成下面几组:
|
|
140
|
+
|
|
141
|
+
### 9.1 基础信息字段
|
|
142
|
+
|
|
143
|
+
1. 文本(`S`):用于姓名、编号、标题、简称等
|
|
144
|
+
2. 数字(`N`):用于数量、次数、评分基数等
|
|
145
|
+
3. 币种(`C`):用于金额、预算、合同额、回款额等
|
|
146
|
+
4. 百分比(`P`):用于概率、折扣率、完成率等
|
|
147
|
+
5. 复选框(`B`):用于是/否类状态
|
|
148
|
+
|
|
149
|
+
### 9.2 时间类字段
|
|
150
|
+
|
|
151
|
+
1. 日期(`D`):用于开始日期、截止日期、签约日期等
|
|
152
|
+
2. 时间(`T`):用于预约时间、提醒时间等
|
|
153
|
+
3. 日期/时间(`F`):用于更精确的业务时间点,如处理时间、提交时间、完成时间
|
|
154
|
+
|
|
155
|
+
### 9.3 联系方式与标识类字段
|
|
156
|
+
|
|
157
|
+
1. 电话(`H`):用于手机、座机、联系方式
|
|
158
|
+
2. 电子邮件(`E`):用于邮箱地址
|
|
159
|
+
3. URL(`U`):用于官网、资料链接、外部系统地址
|
|
160
|
+
|
|
161
|
+
### 9.4 文本内容类字段
|
|
162
|
+
|
|
163
|
+
1. 文本区(`X`):用于备注、补充说明、简短描述
|
|
164
|
+
2. 文本区(长)(`J`):用于较长说明、详细记录、过程描述
|
|
165
|
+
3. 文本区(富文本)(`A`):用于图文混排的业务说明、通知内容、知识内容
|
|
166
|
+
|
|
167
|
+
### 9.5 选择类字段
|
|
168
|
+
|
|
169
|
+
1. 选项列表(`L`):用于状态、阶段、分类、来源、优先级等单选场景
|
|
170
|
+
2. 选项列表(多选)(`Q`):用于标签、能力项、覆盖区域、产品范围等多选场景
|
|
171
|
+
|
|
172
|
+
### 9.6 关系类字段
|
|
173
|
+
|
|
174
|
+
1. 查找关系(`Y`):用于把一条记录关联到另一对象
|
|
175
|
+
2. 主详信息关系(`M`):用于建立主从结构,适合主表与明细表场景
|
|
176
|
+
3. 查找多选(`MR`):用于一条记录关联多个对象值
|
|
177
|
+
|
|
178
|
+
这类字段通常用于:
|
|
179
|
+
|
|
180
|
+
1. 客户和联系人
|
|
181
|
+
2. 项目和客户
|
|
182
|
+
3. 合同和回款计划
|
|
183
|
+
4. 主记录和明细记录
|
|
184
|
+
|
|
185
|
+
### 9.7 媒体与附件类字段
|
|
186
|
+
|
|
187
|
+
1. 图片(`IMG`):用于头像、产品图、现场照片、凭证图片
|
|
188
|
+
2. 文件(`FL`):用于合同附件、方案文档、交付资料
|
|
189
|
+
|
|
190
|
+
### 9.8 安全与特殊字段
|
|
191
|
+
|
|
192
|
+
1. 加密文本(存储加密)(`ENC`)
|
|
193
|
+
2. 加密文本(显示加密)(`ENCD`)
|
|
194
|
+
3. 评分(`SCORE`)
|
|
195
|
+
4. 地址(`AD`)
|
|
196
|
+
5. 地理定位(`LT`)
|
|
197
|
+
|
|
198
|
+
平台层面还支持但通常更偏高级配置的字段类型包括:
|
|
199
|
+
|
|
200
|
+
1. 公式
|
|
201
|
+
2. 自动编号
|
|
202
|
+
3. 累计汇总
|
|
203
|
+
|
|
204
|
+
这些字段更适合在有明确建模规则和业务约束时使用。
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## 10. 与其他模块的关系
|
|
209
|
+
|
|
210
|
+
字段通常和这些模块联动:
|
|
211
|
+
|
|
212
|
+
- `object`:字段附着于对象,是对象建模的细化
|
|
213
|
+
- `menu` / `application`:字段会影响列表和详情页呈现
|
|
214
|
+
- `triggers` / `classes`:字段值常用于业务逻辑判断
|
|
215
|
+
- `script` / `plugin` / `customPage`:前端交互通常围绕字段展开
|
|
216
|
+
|
|
217
|
+
字段设计合理与否,直接影响后续开发效率和数据质量。
|
package/src/fields/index.js
CHANGED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
const chalk = require("chalk");
|
|
2
|
+
const { getPackageJson } = require("../../utils/config");
|
|
3
|
+
const { postClass } = require("../../utils/http");
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* cc create globalSelectList [projectPath] [encodedBodyJson]
|
|
7
|
+
*
|
|
8
|
+
* encodedBodyJson 示例(URI 编码前):
|
|
9
|
+
* {
|
|
10
|
+
* "label": "test2",
|
|
11
|
+
* "name": "test2",
|
|
12
|
+
* "description": "描述",
|
|
13
|
+
* "ptext": "值1\r\n值2\r\n值3",
|
|
14
|
+
* "isPicklistSorted": "1",
|
|
15
|
+
* "isFirstDefault": "1"
|
|
16
|
+
* }
|
|
17
|
+
*
|
|
18
|
+
* @param {string} projectPath
|
|
19
|
+
* @param {string} encodedBodyJson
|
|
20
|
+
* @param {boolean} isMcp
|
|
21
|
+
*/
|
|
22
|
+
async function create(projectPath = process.cwd(), encodedBodyJson, isMcp = false) {
|
|
23
|
+
if (!encodedBodyJson) {
|
|
24
|
+
throw new Error("Create Global Select List Failed: encodedBodyJson is required");
|
|
25
|
+
}
|
|
26
|
+
const body = JSON.parse(decodeURI(encodedBodyJson));
|
|
27
|
+
if (!body.label || !body.name) {
|
|
28
|
+
throw new Error("Create Global Select List Failed: label and name are required");
|
|
29
|
+
}
|
|
30
|
+
const config = await getPackageJson(projectPath);
|
|
31
|
+
if (!isMcp) {
|
|
32
|
+
console.error();
|
|
33
|
+
console.error(chalk.green("Creating global select list, please wait..."));
|
|
34
|
+
console.error();
|
|
35
|
+
}
|
|
36
|
+
const res = await postClass(
|
|
37
|
+
config.setupSvc + "/api/globalSelectSetup/save",
|
|
38
|
+
body,
|
|
39
|
+
config.accessToken
|
|
40
|
+
);
|
|
41
|
+
if (res && res.result) {
|
|
42
|
+
if (!isMcp) {
|
|
43
|
+
console.error(chalk.green("Success! Global select list created. id: " + res.data));
|
|
44
|
+
console.error();
|
|
45
|
+
}
|
|
46
|
+
return res;
|
|
47
|
+
}
|
|
48
|
+
throw new Error("Create Global Select List Failed: " + (res?.returnInfo || res?.message || "Unknown error"));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
module.exports = create;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
const chalk = require("chalk");
|
|
2
|
+
const { getPackageJson } = require("../../utils/config");
|
|
3
|
+
const { postClass } = require("../../utils/http");
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* cc delete globalSelectList [projectPath] [id]
|
|
7
|
+
*
|
|
8
|
+
* 删除逻辑:
|
|
9
|
+
* 1. 先以 deleteFromDisk=false 执行软删除
|
|
10
|
+
* 2. 若服务端返回失败(已被软删除过),自动以 deleteFromDisk=true 重试,执行彻底删除
|
|
11
|
+
*
|
|
12
|
+
* @param {string} projectPath
|
|
13
|
+
* @param {string} id
|
|
14
|
+
* @param {boolean} isMcp
|
|
15
|
+
*/
|
|
16
|
+
async function remove(projectPath = process.cwd(), id, isMcp = false) {
|
|
17
|
+
if (!id) {
|
|
18
|
+
throw new Error("Delete Global Select List Failed: id is required");
|
|
19
|
+
}
|
|
20
|
+
const config = await getPackageJson(projectPath);
|
|
21
|
+
if (!isMcp) {
|
|
22
|
+
console.error();
|
|
23
|
+
console.error(chalk.green(`Deleting global select list (${id}), please wait...`));
|
|
24
|
+
console.error();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// 第一次尝试:软删除
|
|
28
|
+
let res = await postClass(
|
|
29
|
+
config.setupSvc + "/api/globalSelectSetup/delete",
|
|
30
|
+
{ id, deleteFromDisk: "false" },
|
|
31
|
+
config.accessToken
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
// 若失败,说明记录已处于已删除状态,改用彻底删除重试
|
|
35
|
+
if (res && !res.result) {
|
|
36
|
+
if (!isMcp) {
|
|
37
|
+
console.error(chalk.yellow("Record may already be soft-deleted, retrying with permanent delete..."));
|
|
38
|
+
}
|
|
39
|
+
res = await postClass(
|
|
40
|
+
config.setupSvc + "/api/globalSelectSetup/delete",
|
|
41
|
+
{ id, deleteFromDisk: "true" },
|
|
42
|
+
config.accessToken
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (res && res.result) {
|
|
47
|
+
if (!isMcp) {
|
|
48
|
+
console.error(chalk.green("Success! Global select list deleted."));
|
|
49
|
+
console.error();
|
|
50
|
+
}
|
|
51
|
+
return res;
|
|
52
|
+
}
|
|
53
|
+
throw new Error("Delete Global Select List Failed: " + (res?.returnInfo || res?.message || "Unknown error"));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
module.exports = remove;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const { getPackageJson } = require("../../utils/config");
|
|
2
|
+
const { postClass } = require("../../utils/http");
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* cc detail globalSelectList [projectPath] [id]
|
|
6
|
+
*
|
|
7
|
+
* 返回结构:
|
|
8
|
+
* {
|
|
9
|
+
* globalSelect: { id, label, name, description, isDeleted, ... },
|
|
10
|
+
* enabledList: [ { id, codevalue, sortorder, isdefaultvalue, isactive, ... } ],
|
|
11
|
+
* disabledList: [],
|
|
12
|
+
* useList: []
|
|
13
|
+
* }
|
|
14
|
+
*
|
|
15
|
+
* @param {string} projectPath
|
|
16
|
+
* @param {string} id
|
|
17
|
+
* @param {boolean} isMcp
|
|
18
|
+
*/
|
|
19
|
+
async function detail(projectPath = process.cwd(), id, isMcp = false) {
|
|
20
|
+
if (!id) {
|
|
21
|
+
throw new Error("Global Select List detail requires id");
|
|
22
|
+
}
|
|
23
|
+
const config = await getPackageJson(projectPath);
|
|
24
|
+
const res = await postClass(
|
|
25
|
+
config.setupSvc + "/api/globalSelectSetup/detail",
|
|
26
|
+
{ id },
|
|
27
|
+
config.accessToken
|
|
28
|
+
);
|
|
29
|
+
if (res && res.result) {
|
|
30
|
+
const data = res.data || {};
|
|
31
|
+
const result = {
|
|
32
|
+
globalSelect: data.globalSelect || {},
|
|
33
|
+
enabledList: data.enabledList || [],
|
|
34
|
+
disabledList: data.disabledList || [],
|
|
35
|
+
useList: data.useList || []
|
|
36
|
+
};
|
|
37
|
+
if (!isMcp) {
|
|
38
|
+
console.log(JSON.stringify(result, null, 2));
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
throw new Error("Get Global Select List Detail Failed: " + (res?.returnInfo || res?.message || "Unknown error"));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
module.exports = detail;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* globalSelectList 文档入口:正文均在 `docs/` 目录,本文件只负责按子命令读取并输出。
|
|
3
|
+
*/
|
|
4
|
+
const fs = require("fs");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
|
|
7
|
+
const DOCS_DIR = path.join(__dirname, "docs");
|
|
8
|
+
|
|
9
|
+
function readDocFile(basename) {
|
|
10
|
+
return fs.readFileSync(path.join(DOCS_DIR, `${basename}.md`), "utf8");
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* 介绍文档(introduction.md)
|
|
15
|
+
* 用于了解 CloudCC 全局选项列表的概念、定位、价值与适用场景。
|
|
16
|
+
*/
|
|
17
|
+
function getIntroductionDoc() {
|
|
18
|
+
return readDocFile("introduction");
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* 开发指导文档(devguide.md)
|
|
23
|
+
* 用于在 CloudCC 平台上进行全局选项列表的管理与使用。
|
|
24
|
+
*/
|
|
25
|
+
function getDevGuideDoc() {
|
|
26
|
+
return readDocFile("devguide");
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* cc doc globalSelectList <introduction|devguide>
|
|
31
|
+
* @param {string[]} argvs [doc, type, introduction|devguide, ...]
|
|
32
|
+
*/
|
|
33
|
+
function doc(argvs) {
|
|
34
|
+
const subType = argvs[2];
|
|
35
|
+
const key = String(subType || "").trim().toLowerCase();
|
|
36
|
+
if (!key) {
|
|
37
|
+
throw new Error("cc doc globalSelectList 需要子命令:introduction 或 devguide");
|
|
38
|
+
}
|
|
39
|
+
if (key === "introduction") {
|
|
40
|
+
const content = getIntroductionDoc();
|
|
41
|
+
console.log(content);
|
|
42
|
+
return content;
|
|
43
|
+
}
|
|
44
|
+
if (key === "devguide") {
|
|
45
|
+
const content = getDevGuideDoc();
|
|
46
|
+
console.log(content);
|
|
47
|
+
return content;
|
|
48
|
+
}
|
|
49
|
+
throw new Error(`doc 不支持的子命令: ${subType},请使用 introduction 或 devguide`);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
module.exports = doc;
|