cloudcc-cli 2.3.1 → 2.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.json +15 -0
- package/.cloudcc-cache.json +21 -4
- package/.cursor/skills/cloudcc-cli-dev.zip +0 -0
- package/.cursor/skills/cloudcc-cli-usage/SKILL.md +67 -0
- package/README.md +11 -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 +2 -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 +451 -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 +212 -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 +203 -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/doc.js +46 -0
- package/src/pagelayout/docs/devguide.md +295 -0
- package/src/pagelayout/docs/introduction.md +44 -0
- package/src/pagelayout/get.js +46 -0
- package/src/pagelayout/index.js +9 -0
- package/src/plugin/doc.js +43 -863
- package/src/plugin/docs/devguide.md +923 -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 +332 -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 +387 -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/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 +334 -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 +634 -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/tmp_customsetting_detail.json +1 -0
- 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/344/275/234/344/270/232.md" → src/timer/docs/devguide.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,387 @@
|
|
|
1
|
+
# CloudCC 角色使用总结
|
|
2
|
+
|
|
3
|
+
角色(Role)是 CloudCC 系统中用于定义职能分工和业务角色的重要概念。通过角色可以对用户进行分组管理,实现权限的精细化控制。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 快速开始(CLI 命令)
|
|
8
|
+
|
|
9
|
+
### 支持的角色操作
|
|
10
|
+
|
|
11
|
+
| 操作 | 说明 |
|
|
12
|
+
|------|------|
|
|
13
|
+
| `create` | 创建新角色 |
|
|
14
|
+
| `get` | 查询角色列表 |
|
|
15
|
+
| `delete` | 删除角色 |
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## CLI 命令详解
|
|
20
|
+
|
|
21
|
+
### 创建角色
|
|
22
|
+
|
|
23
|
+
创建一个新的 CloudCC 角色。
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
cc create role <path> <roleName> [parentRoleName] [description]
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**参数说明:**
|
|
30
|
+
|
|
31
|
+
| 参数 | 必填 | 说明 |
|
|
32
|
+
|------|------|------|
|
|
33
|
+
| `path` | 是 | 项目路径,`.` 表示当前目录 |
|
|
34
|
+
| `roleName` | 是 | 角色名称 |
|
|
35
|
+
| `parentRoleName` | 否 | 直属上司角色名称(不传则交互式选择) |
|
|
36
|
+
| `description` | 否 | 角色描述(暂不支持保存到后端) |
|
|
37
|
+
|
|
38
|
+
**示例:**
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# 交互式选择直属上司
|
|
42
|
+
cc create role . "销售经理"
|
|
43
|
+
|
|
44
|
+
# 指定直属上司为 CEO(非交互式)
|
|
45
|
+
cc create role . "销售经理" "CEO"
|
|
46
|
+
|
|
47
|
+
# 指定直属上司并添加描述
|
|
48
|
+
cc create role . "市场专员" "销售总监" "负责市场推广工作"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**创建流程说明:**
|
|
52
|
+
1. 调用 `role/addRole` 获取可用直属上司列表
|
|
53
|
+
2. 如果指定了 `parentRoleName`,自动匹配对应角色;否则进入交互式选择
|
|
54
|
+
3. 调用 `role/saveRole` 创建新角色
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
### 查询角色列表
|
|
59
|
+
|
|
60
|
+
获取当前环境中的所有角色列表。
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
cc get role <projectPath> [encodedCondJson]
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**参数说明:**
|
|
67
|
+
|
|
68
|
+
| 参数 | 必填 | 说明 |
|
|
69
|
+
|------|------|------|
|
|
70
|
+
| `projectPath` | 否 | 项目路径,默认当前目录 |
|
|
71
|
+
| `encodedCondJson` | 否 | URI 编码后的查询条件 JSON |
|
|
72
|
+
|
|
73
|
+
**示例:**
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# 获取所有角色
|
|
77
|
+
cc get role .
|
|
78
|
+
|
|
79
|
+
# 带查询条件
|
|
80
|
+
cc get role . '%7B%22name%22%3A%22%E9%94%80%E5%94%AE%22%7D'
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
### 删除角色
|
|
86
|
+
|
|
87
|
+
删除指定的角色。
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
cc delete role <projectPath> <roleId>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**参数说明:**
|
|
94
|
+
|
|
95
|
+
| 参数 | 必填 | 说明 |
|
|
96
|
+
|------|------|------|
|
|
97
|
+
| `projectPath` | 否 | 项目路径,默认当前目录 |
|
|
98
|
+
| `roleId` | 是 | 角色 ID |
|
|
99
|
+
|
|
100
|
+
**示例:**
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# 删除指定角色
|
|
104
|
+
cc delete role . a0I9D000000XXXXUAI
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 完整工作流示例
|
|
110
|
+
|
|
111
|
+
### 场景:为新部门创建 CloudCC 角色
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# 1. 确认项目已初始化(有 cloudcc-cli.config.js)
|
|
115
|
+
cat cloudcc-cli.config.js
|
|
116
|
+
|
|
117
|
+
# 2. 查询现有角色
|
|
118
|
+
cc get role .
|
|
119
|
+
|
|
120
|
+
# 3. 创建新角色(交互式选择直属上司)
|
|
121
|
+
cc create role . "销售经理"
|
|
122
|
+
cc create role . "销售代表" "初级销售人员"
|
|
123
|
+
|
|
124
|
+
# 4. 验证角色创建成功
|
|
125
|
+
cc get role .
|
|
126
|
+
|
|
127
|
+
# 5. 如需删除
|
|
128
|
+
# cc delete role . <roleId>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### 创建角色流程说明
|
|
132
|
+
|
|
133
|
+
创建角色的完整流程包含以下步骤:
|
|
134
|
+
|
|
135
|
+
1. **获取直属上司列表** - 调用 `role/addRole` 接口获取可选的上级角色
|
|
136
|
+
2. **选择直属上司** - 通过交互式选择确定新角色的上级
|
|
137
|
+
3. **保存角色** - 调用 `role/saveRole` 接口创建角色
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## API 接口详情
|
|
142
|
+
|
|
143
|
+
### 什么是角色?
|
|
144
|
+
|
|
145
|
+
**角色(Role)** 是 CloudCC 系统中用于定义职能分工的概念。角色与简档(Profile)结合使用,共同控制用户的系统访问权限。
|
|
146
|
+
|
|
147
|
+
### 核心属性
|
|
148
|
+
|
|
149
|
+
| 属性 | 说明 | 示例 |
|
|
150
|
+
|------|------|------|
|
|
151
|
+
| **名称(rolename)** | 角色显示名称 | "销售经理" |
|
|
152
|
+
| **描述(description)** | 角色描述 | "负责销售团队管理" |
|
|
153
|
+
| **父角色(parentroleId)** | 上级角色 ID | "2025238BCF0D98D52xUF" |
|
|
154
|
+
| **角色ID(roleid)** | 角色唯一标识 | "202608C20F87C90KRqZr" |
|
|
155
|
+
| **创建时间** | 角色创建时间戳 | 1757993089000 |
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 一、查询角色
|
|
160
|
+
|
|
161
|
+
### 1.1 查询角色列表
|
|
162
|
+
|
|
163
|
+
**接口**: `POST /api/role/queryRole`
|
|
164
|
+
|
|
165
|
+
**请求参数**:
|
|
166
|
+
|
|
167
|
+
| 参数名 | 类型 | 必填 | 说明 |
|
|
168
|
+
|--------|------|------|------|
|
|
169
|
+
| display | string | 否 | 显示模式,传 `"list"` 返回列表数据 |
|
|
170
|
+
|
|
171
|
+
**请求示例**:
|
|
172
|
+
|
|
173
|
+
```json
|
|
174
|
+
{
|
|
175
|
+
"display": "list"
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**返回数据**:
|
|
180
|
+
|
|
181
|
+
```javascript
|
|
182
|
+
{
|
|
183
|
+
"result": true,
|
|
184
|
+
"data": {
|
|
185
|
+
"list": [
|
|
186
|
+
{
|
|
187
|
+
"id": "202608C20F87C90KRqZr",
|
|
188
|
+
"rolename": "销售经理",
|
|
189
|
+
"parentroleId": "2025238BCF0D98D52xUF"
|
|
190
|
+
}
|
|
191
|
+
]
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## 二、创建角色
|
|
199
|
+
|
|
200
|
+
### 2.1 获取直属上司列表
|
|
201
|
+
|
|
202
|
+
**接口**: `POST /api/role/addRole`
|
|
203
|
+
|
|
204
|
+
**说明**:创建角色前需要调用此接口获取可选的直属上司(上级角色)列表。
|
|
205
|
+
|
|
206
|
+
**请求参数**:
|
|
207
|
+
|
|
208
|
+
| 参数名 | 类型 | 必填 | 说明 |
|
|
209
|
+
|--------|------|------|------|
|
|
210
|
+
| id | string | 是 | 固定值 `"bab2025F8B20EE4d4005"` |
|
|
211
|
+
|
|
212
|
+
**请求示例**:
|
|
213
|
+
|
|
214
|
+
```json
|
|
215
|
+
{
|
|
216
|
+
"id": "bab2025F8B20EE4d4005"
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**返回数据**:
|
|
221
|
+
|
|
222
|
+
```javascript
|
|
223
|
+
{
|
|
224
|
+
"result": true,
|
|
225
|
+
"data": {
|
|
226
|
+
"flist": [
|
|
227
|
+
{
|
|
228
|
+
"id": "2025238BCF0D98D52xUF",
|
|
229
|
+
"name": "总经理"
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"id": "2025238BCF0D98D52xUG",
|
|
233
|
+
"name": "销售总监"
|
|
234
|
+
}
|
|
235
|
+
]
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### 2.2 保存新角色
|
|
241
|
+
|
|
242
|
+
**接口**: `POST /api/role/saveRole`
|
|
243
|
+
|
|
244
|
+
**说明**:选择直属上司后,调用此接口创建新角色。
|
|
245
|
+
|
|
246
|
+
**请求参数**:
|
|
247
|
+
|
|
248
|
+
| 参数名 | 类型 | 必填 | 说明 |
|
|
249
|
+
|--------|------|------|------|
|
|
250
|
+
| dataJson | string | 是 | JSON 字符串,包含 rolename 和 parentroleId |
|
|
251
|
+
|
|
252
|
+
**dataJson 结构**:
|
|
253
|
+
|
|
254
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
255
|
+
|------|------|------|------|
|
|
256
|
+
| rolename | string | 是 | 新角色名称 |
|
|
257
|
+
| parentroleId | string | 是 | 直属上司角色 ID |
|
|
258
|
+
|
|
259
|
+
**请求示例**:
|
|
260
|
+
|
|
261
|
+
```json
|
|
262
|
+
{
|
|
263
|
+
"dataJson": "{\"rolename\":\"新角色\",\"parentroleId\":\"2025238BCF0D98D52xUF\"}"
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
**返回数据**:
|
|
268
|
+
|
|
269
|
+
```javascript
|
|
270
|
+
{
|
|
271
|
+
"result": true,
|
|
272
|
+
"data": "202608C20F87C90KRqZr" // 新创建的角色 ID
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### 2.3 创建流程总结
|
|
277
|
+
|
|
278
|
+
```
|
|
279
|
+
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
280
|
+
│ 1. 调用 addRole │────▶│ 2. 选择直属上司 │────▶│ 3. 调用 saveRole│
|
|
281
|
+
│ 获取上司列表 │ │ (交互式选择) │ │ 创建新角色 │
|
|
282
|
+
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## 三、删除角色
|
|
288
|
+
|
|
289
|
+
### 3.1 删除前检查
|
|
290
|
+
|
|
291
|
+
- [ ] 是否有用户关联此角色
|
|
292
|
+
- [ ] 是否有下级角色依赖此角色
|
|
293
|
+
- [ ] 级联影响确认
|
|
294
|
+
|
|
295
|
+
### 3.2 删除流程
|
|
296
|
+
|
|
297
|
+
**接口**: `POST /api/role/deleteRole`
|
|
298
|
+
|
|
299
|
+
**请求参数**:
|
|
300
|
+
|
|
301
|
+
| 参数名 | 类型 | 必填 | 说明 |
|
|
302
|
+
|--------|------|------|------|
|
|
303
|
+
| roleid | string | 是 | 角色 ID(注意是小写) |
|
|
304
|
+
|
|
305
|
+
**请求示例**:
|
|
306
|
+
|
|
307
|
+
```json
|
|
308
|
+
{
|
|
309
|
+
"roleid": "202608C20F87C90KRqZr"
|
|
310
|
+
}
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## 四、角色数据结构
|
|
316
|
+
|
|
317
|
+
### 4.1 查询接口返回的角色数据
|
|
318
|
+
|
|
319
|
+
```javascript
|
|
320
|
+
{
|
|
321
|
+
id: "202608C20F87C90KRqZr",
|
|
322
|
+
rolename: "销售经理",
|
|
323
|
+
parentroleId: "2025238BCF0D98D52xUF"
|
|
324
|
+
}
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### 4.2 addRole 接口返回的上司数据
|
|
328
|
+
|
|
329
|
+
```javascript
|
|
330
|
+
{
|
|
331
|
+
id: "2025238BCF0D98D52xUF",
|
|
332
|
+
name: "总经理"
|
|
333
|
+
}
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
## 五、最佳实践
|
|
339
|
+
|
|
340
|
+
### 命名规范
|
|
341
|
+
|
|
342
|
+
| 项目 | 规范 | 示例 |
|
|
343
|
+
|------|------|------|
|
|
344
|
+
| 角色名 | 使用职能名称 | `销售经理`、`市场专员` |
|
|
345
|
+
| 描述 | 简洁说明职责 | `负责华东区销售管理` |
|
|
346
|
+
|
|
347
|
+
### 角色层级设计
|
|
348
|
+
|
|
349
|
+
- **合理分层**:根据组织架构设计角色层级
|
|
350
|
+
- **避免循环**:确保角色层级无循环依赖
|
|
351
|
+
- **权限继承**:上级角色自动继承下级角色的权限
|
|
352
|
+
|
|
353
|
+
### 创建角色注意事项
|
|
354
|
+
|
|
355
|
+
- 创建角色时必须选择一个直属上司
|
|
356
|
+
- 直属上司决定了角色在组织架构中的位置
|
|
357
|
+
- 建议先规划好组织架构再批量创建角色
|
|
358
|
+
|
|
359
|
+
---
|
|
360
|
+
|
|
361
|
+
## 六、常见问题
|
|
362
|
+
|
|
363
|
+
**Q: 角色和简档的区别?**
|
|
364
|
+
|
|
365
|
+
A:
|
|
366
|
+
- **简档(Profile)**:控制用户的系统功能访问权限,决定用户能做什么
|
|
367
|
+
- **角色(Role)**:定义用户的组织架构位置,用于数据共享和审批流程
|
|
368
|
+
|
|
369
|
+
**Q: 创建角色时如何选择直属上司?**
|
|
370
|
+
|
|
371
|
+
A: 当前实现会自动调用 `addRole` 接口获取可用的直属上司列表,并通过交互式命令行让用户选择。如需特定来源,建议先调用 `cc get role .` 查看现有角色。
|
|
372
|
+
|
|
373
|
+
**Q: 删除角色会影响用户吗?**
|
|
374
|
+
|
|
375
|
+
A: 如果角色已被用户关联,删除前需要先解除关联或转移用户到其他角色。
|
|
376
|
+
|
|
377
|
+
**Q: 可以修改角色的父级吗?**
|
|
378
|
+
|
|
379
|
+
A: 可以,调用角色更新接口修改 `parentroleId` 字段,注意检查循环依赖。
|
|
380
|
+
|
|
381
|
+
**Q: addRole 接口中的 id 参数是什么?**
|
|
382
|
+
|
|
383
|
+
A: 这是固定值 `"bab2025F8B20EE4d4005"`,用于获取直属上司列表的上下文标识。
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
*文档版本:1.1 | 最后更新:2026-03-26*
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# CloudCC 角色使用总结
|
|
2
|
+
|
|
3
|
+
角色(Role)用于定义 CloudCC 系统中的职能分工,可以对用户进行分组管理并分配不同的权限。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 快速开始(CLI 命令)
|
|
8
|
+
|
|
9
|
+
### 支持的角色操作
|
|
10
|
+
|
|
11
|
+
| 操作 | 说明 |
|
|
12
|
+
|------|------|
|
|
13
|
+
| `create` | 创建新角色 |
|
|
14
|
+
| `get` | 查询角色列表 |
|
|
15
|
+
| `delete` | 删除角色 |
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## CLI 命令详解
|
|
20
|
+
|
|
21
|
+
### 创建角色
|
|
22
|
+
|
|
23
|
+
创建一个新的 CloudCC 角色。
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
cc create role <path> <roleName> [description]
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**参数说明:**
|
|
30
|
+
|
|
31
|
+
| 参数 | 必填 | 说明 |
|
|
32
|
+
|------|------|------|
|
|
33
|
+
| `path` | 是 | 项目路径,`.` 表示当前目录 |
|
|
34
|
+
| `roleName` | 是 | 角色名称 |
|
|
35
|
+
| `description` | 否 | 角色描述 |
|
|
36
|
+
|
|
37
|
+
**示例:**
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# 创建角色
|
|
41
|
+
cc create role . "销售经理"
|
|
42
|
+
|
|
43
|
+
# 创建带描述的角色
|
|
44
|
+
cc create role . "市场专员" "负责市场推广工作"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
### 查询角色列表
|
|
50
|
+
|
|
51
|
+
获取当前环境中的所有角色列表。
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
cc get role <projectPath> [encodedCondJson]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**参数说明:**
|
|
58
|
+
|
|
59
|
+
| 参数 | 必填 | 说明 |
|
|
60
|
+
|------|------|------|
|
|
61
|
+
| `projectPath` | 否 | 项目路径,默认当前目录 |
|
|
62
|
+
| `encodedCondJson` | 否 | URI 编码后的查询条件 JSON |
|
|
63
|
+
|
|
64
|
+
**示例:**
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# 获取所有角色
|
|
68
|
+
cc get role .
|
|
69
|
+
|
|
70
|
+
# 带查询条件
|
|
71
|
+
cc get role . '%7B%22name%22%3A%22%E9%94%80%E5%94%AE%22%7D'
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
### 删除角色
|
|
77
|
+
|
|
78
|
+
删除指定的角色。
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
cc delete role <projectPath> <roleId>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**参数说明:**
|
|
85
|
+
|
|
86
|
+
| 参数 | 必填 | 说明 |
|
|
87
|
+
|------|------|------|
|
|
88
|
+
| `projectPath` | 否 | 项目路径,默认当前目录 |
|
|
89
|
+
| `roleId` | 是 | 角色 ID |
|
|
90
|
+
|
|
91
|
+
**示例:**
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# 删除指定角色
|
|
95
|
+
cc delete role . a0I9D000000XXXXUAI
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 完整工作流示例
|
|
101
|
+
|
|
102
|
+
### 场景:为新部门创建 CloudCC 角色
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# 1. 确认项目已初始化(有 cloudcc-cli.config.js)
|
|
106
|
+
cat cloudcc-cli.config.js
|
|
107
|
+
|
|
108
|
+
# 2. 查询现有角色
|
|
109
|
+
cc get role .
|
|
110
|
+
|
|
111
|
+
# 3. 创建新角色
|
|
112
|
+
cc create role . "销售经理"
|
|
113
|
+
cc create role . "销售代表"
|
|
114
|
+
|
|
115
|
+
# 4. 验证角色创建成功
|
|
116
|
+
cc get role .
|
|
117
|
+
|
|
118
|
+
# 5. 如需删除
|
|
119
|
+
# cc delete role . <roleId>
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
*文档版本:1.0 | 最后更新:2026-03-26*
|
package/src/role/get.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
const { postClass } = require("../../utils/http");
|
|
2
|
+
const { getPackageJson } = require("../../utils/config");
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 查询角色列表
|
|
6
|
+
* 用法:cc get role <projectPath> [encodedCondJson]
|
|
7
|
+
* 接口:POST /api/role/queryRole
|
|
8
|
+
* 默认参数:{ display: "list" }
|
|
9
|
+
*/
|
|
10
|
+
async function get(argvs, isMcp = false) {
|
|
11
|
+
const projectPath = argvs[2] || process.cwd();
|
|
12
|
+
const condArg = argvs[3];
|
|
13
|
+
|
|
14
|
+
let body = { display: "list" };
|
|
15
|
+
if (condArg) {
|
|
16
|
+
try {
|
|
17
|
+
body = JSON.parse(decodeURI(condArg));
|
|
18
|
+
} catch (e) {
|
|
19
|
+
throw new Error("Get Role Failed: encodedCondJson 解析失败,请传 encodeURI(JSON.stringify(...))");
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const config = await getPackageJson(projectPath);
|
|
24
|
+
const res = await postClass(
|
|
25
|
+
config.setupSvc + "/api/role/queryRole",
|
|
26
|
+
body,
|
|
27
|
+
config.accessToken
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
if (res && res.result) {
|
|
31
|
+
const data = res.data;
|
|
32
|
+
let rawList = [];
|
|
33
|
+
if (Array.isArray(data)) {
|
|
34
|
+
rawList = data;
|
|
35
|
+
} else if (data && Array.isArray(data.list)) {
|
|
36
|
+
rawList = data.list;
|
|
37
|
+
} else if (data && typeof data === "object") {
|
|
38
|
+
rawList = Object.keys(data)
|
|
39
|
+
.filter((key) => /list$/i.test(key) && Array.isArray(data[key]))
|
|
40
|
+
.flatMap((key) =>
|
|
41
|
+
data[key].map((item) => ({
|
|
42
|
+
...item,
|
|
43
|
+
__group: key
|
|
44
|
+
}))
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
if (!isMcp) {
|
|
48
|
+
console.log(JSON.stringify(rawList));
|
|
49
|
+
}
|
|
50
|
+
return rawList;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const msg = res && (res.returnInfo || res.message) ? (res.returnInfo || res.message) : "Unknown error";
|
|
54
|
+
throw new Error("Get Role Failed: " + msg);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
module.exports = get;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
const fs = require("fs");
|
|
2
|
+
const path = require("path");
|
|
3
|
+
|
|
4
|
+
const DOCS_DIR = path.join(__dirname, "docs");
|
|
5
|
+
const INTRODUCTION = path.join(DOCS_DIR, "introduction.md");
|
|
6
|
+
const DEVGUIDE = path.join(DOCS_DIR, "devguide.md");
|
|
7
|
+
|
|
8
|
+
function readDocOrFallback(filePath, fallback) {
|
|
9
|
+
try {
|
|
10
|
+
return fs.readFileSync(filePath, "utf8").trim();
|
|
11
|
+
} catch (e) {
|
|
12
|
+
return fallback;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function getIntroductionDoc() {
|
|
17
|
+
return readDocOrFallback(
|
|
18
|
+
INTRODUCTION,
|
|
19
|
+
`# CloudCC 定时作业(scheduleJob)介绍\n\n(未找到文件:${INTRODUCTION})\n`
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function getDevGuideDoc() {
|
|
24
|
+
return readDocOrFallback(
|
|
25
|
+
DEVGUIDE,
|
|
26
|
+
`# CloudCC 定时作业(scheduleJob)开发指南\n\n(未找到文件:${DEVGUIDE})\n`
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* cc doc scheduleJob <introduction|devguide>
|
|
32
|
+
* @param {string[]} argvs [doc, type, introduction|devguide, ...]
|
|
33
|
+
*/
|
|
34
|
+
function doc(argvs = []) {
|
|
35
|
+
const subType = String(argvs[2] || "").trim().toLowerCase();
|
|
36
|
+
if (!subType || subType === "devguide") {
|
|
37
|
+
const content = getDevGuideDoc();
|
|
38
|
+
console.log(content);
|
|
39
|
+
return content;
|
|
40
|
+
}
|
|
41
|
+
if (subType === "introduction") {
|
|
42
|
+
const content = getIntroductionDoc();
|
|
43
|
+
console.log(content);
|
|
44
|
+
return content;
|
|
45
|
+
}
|
|
46
|
+
throw new Error(`doc 不支持的子命令: ${argvs[2]},请使用 introduction 或 devguide`);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
module.exports = doc;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# CloudCC 定时作业(scheduleJob)开发指南
|
|
2
|
+
|
|
3
|
+
本指南说明 `scheduleJob` 模块在 cloudcc-cli
|
|
4
|
+
中的能力边界、命令参数、接口映射与二次开发注意事项。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 一、模块定位
|
|
9
|
+
|
|
10
|
+
`scheduleJob` 只负责“作业管理”相关能力:
|
|
11
|
+
|
|
12
|
+
- 查询作业列表:`get`
|
|
13
|
+
- 查询作业详情:`detail`
|
|
14
|
+
- 删除作业:`delete`
|
|
15
|
+
- 文档查看:`doc`
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 二、CLI 命令说明
|
|
20
|
+
|
|
21
|
+
### 1) 查询作业列表
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
cc get scheduleJob <projectPath> [encodedCondJson]
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
参数说明:
|
|
28
|
+
|
|
29
|
+
| 参数 | 必填 | 说明 |
|
|
30
|
+
| ----------------- | ---- | ------------------------- |
|
|
31
|
+
| `projectPath` | 否 | 项目路径,默认当前目录 |
|
|
32
|
+
| `encodedCondJson` | 否 | URI 编码后的查询条件 JSON |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
### 2) 查询作业详情
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cc detail scheduleJob <jobId> [projectPath]
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
参数说明:
|
|
43
|
+
|
|
44
|
+
| 参数 | 必填 | 说明 |
|
|
45
|
+
| ------------- | ---- | ---------------------- |
|
|
46
|
+
| `jobId` | 是 | 定时作业 ID |
|
|
47
|
+
| `projectPath` | 否 | 项目路径,默认当前目录 |
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
### 3) 删除作业
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
cc delete scheduleJob <jobId> [projectPath]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
参数说明:
|
|
58
|
+
|
|
59
|
+
| 参数 | 必填 | 说明 |
|
|
60
|
+
| ------------- | ---- | ---------------------- |
|
|
61
|
+
| `jobId` | 是 | 待删除作业 ID |
|
|
62
|
+
| `projectPath` | 否 | 项目路径,默认当前目录 |
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
### 4) 查看文档
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
cc doc scheduleJob <introduction|devguide>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 三、关联文档
|
|
75
|
+
|
|
76
|
+
- `cc doc timer introduction`
|
|
77
|
+
- `cc doc timer devguide`
|
|
78
|
+
|
|
79
|
+
---
|