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,81 @@
|
|
|
1
|
+
# CloudCC 角色 CLI 命令说明
|
|
2
|
+
|
|
3
|
+
## 支持的命令
|
|
4
|
+
|
|
5
|
+
| 操作 | 说明 |
|
|
6
|
+
|------|------|
|
|
7
|
+
| `create` | 创建新角色 |
|
|
8
|
+
| `get` | 查询角色列表 |
|
|
9
|
+
| `delete` | 删除角色 |
|
|
10
|
+
|
|
11
|
+
## CLI 命令详解
|
|
12
|
+
|
|
13
|
+
### 创建角色
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
cc create role <path> <roleName> [parentRoleName] [description]
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**参数说明:**
|
|
20
|
+
|
|
21
|
+
| 参数 | 必填 | 说明 |
|
|
22
|
+
|------|------|------|
|
|
23
|
+
| `path` | 是 | 项目路径,`.` 表示当前目录 |
|
|
24
|
+
| `roleName` | 是 | 角色名称 |
|
|
25
|
+
| `parentRoleName` | 否 | 直属上司角色名称(不传则交互式选择)|
|
|
26
|
+
| `description` | 否 | 角色描述 |
|
|
27
|
+
|
|
28
|
+
**示例:**
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# 交互式选择直属上司
|
|
32
|
+
cc create role . "销售经理"
|
|
33
|
+
|
|
34
|
+
# 指定直属上司(非交互式)
|
|
35
|
+
cc create role . "销售经理" "CEO"
|
|
36
|
+
|
|
37
|
+
# 指定直属上司并添加描述
|
|
38
|
+
cc create role . "市场专员" "销售总监" "负责市场推广工作"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 查询角色列表
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
cc get role <projectPath> [encodedCondJson]
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**参数说明:**
|
|
48
|
+
|
|
49
|
+
| 参数 | 必填 | 说明 |
|
|
50
|
+
|------|------|------|
|
|
51
|
+
| `projectPath` | 否 | 项目路径,默认当前目录 |
|
|
52
|
+
| `encodedCondJson` | 否 | URI 编码后的查询条件 JSON |
|
|
53
|
+
|
|
54
|
+
**示例:**
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# 获取所有角色
|
|
58
|
+
cc get role .
|
|
59
|
+
|
|
60
|
+
# 带查询条件
|
|
61
|
+
cc get role . '%7B%22name%22%3A%22%E9%94%80%E5%94%AE%22%7D'
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 删除角色
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
cc delete role <projectPath> <roleId>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**参数说明:**
|
|
71
|
+
|
|
72
|
+
| 参数 | 必填 | 说明 |
|
|
73
|
+
|------|------|------|
|
|
74
|
+
| `projectPath` | 否 | 项目路径,默认当前目录 |
|
|
75
|
+
| `roleId` | 是 | 角色 ID |
|
|
76
|
+
|
|
77
|
+
**示例:**
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
cc delete role . a0I9D000000XXXXUAI
|
|
81
|
+
```
|
|
@@ -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
|
+
---
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# CloudCC 定时作业(scheduleJob)介绍
|
|
2
|
+
|
|
3
|
+
定时作业(`scheduleJob`)用于查看和管理已经配置在 CloudCC 平台中的调度任务。它聚焦于**作业管理侧**,常用于运维排查、任务巡检和作业下线。依赖定时类。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 快速开始(CLI 命令)
|
|
8
|
+
|
|
9
|
+
### 支持的操作
|
|
10
|
+
|
|
11
|
+
| 操作 | 说明 |
|
|
12
|
+
|------|------|
|
|
13
|
+
| `get` | 查询定时作业列表 |
|
|
14
|
+
| `detail` | 查看单个作业详情 |
|
|
15
|
+
| `delete` | 删除指定作业 |
|
|
16
|
+
| `doc` | 查看模块文档 |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 什么时候用 scheduleJob
|
|
21
|
+
|
|
22
|
+
当你需要处理“已配置好的定时任务”时,优先使用 `scheduleJob`:
|
|
23
|
+
|
|
24
|
+
- 日常巡检:查看当前有哪些任务、是否符合预期
|
|
25
|
+
- 故障排查:根据作业 ID 查看具体配置
|
|
26
|
+
- 任务治理:删除无效、重复或已弃用的作业
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 与 timer 的关系
|
|
31
|
+
|
|
32
|
+
- `timer`:偏向**开发与发布定时类代码**(创建、发布、拉取源码等)
|
|
33
|
+
- `scheduleJob`:偏向**运行时作业管理**(查列表、查详情、删除)
|
|
34
|
+
|
|
35
|
+
通常流程是:先通过 `timer` 交付能力,再通过 `scheduleJob` 做线上作业管理。
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 后台页面配置说明(与实际界面对齐)
|
|
40
|
+
|
|
41
|
+
根据当前定时作业配置页面,创建/编辑作业时主要关注以下字段:
|
|
42
|
+
|
|
43
|
+
| 配置项 | 是否必填 | 说明 |
|
|
44
|
+
|------|------|------|
|
|
45
|
+
| 作业程序 | 是 | 选择要执行的定时类程序(即作业绑定的业务逻辑) |
|
|
46
|
+
| 频率 | 是 | 支持 `每周`、`每月` |
|
|
47
|
+
| 星期(仅每周) | 是(每周时) | 勾选周一到周日,可多选,表示每周哪些天触发 |
|
|
48
|
+
| 开始 | 是 | 作业生效开始日期 |
|
|
49
|
+
| 结束 | 是 | 作业生效结束日期 |
|
|
50
|
+
| 执行时间 | 是 | 每次触发的具体时间点(例如 `上午 0:00`) |
|
|
51
|
+
|
|
52
|
+
### 频率规则
|
|
53
|
+
|
|
54
|
+
- 选择 `每周`:必须至少勾选一个星期值(周一到周日)
|
|
55
|
+
- 选择 `每月`:按每月规则触发(具体以后台月度配置项为准)
|
|
56
|
+
- 所有计划都会受 `开始` 和 `结束` 日期约束,超出范围不触发
|
|
57
|
+
|
|
58
|
+
### 示例:每周定时任务
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
作业程序:客户长时间未联系新建活动
|
|
62
|
+
频率:每周
|
|
63
|
+
星期:星期一、星期三、星期五
|
|
64
|
+
开始:2026-04-01
|
|
65
|
+
结束:2026-12-31
|
|
66
|
+
执行时间:上午 08:00
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
该配置表示:在有效期内,每周一/三/五上午 08:00 执行一次选定作业程序。
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 命令示例
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# 1) 查看全部定时作业
|
|
77
|
+
cc get scheduleJob .
|
|
78
|
+
|
|
79
|
+
# 2) 带条件查询(URI 编码 JSON)
|
|
80
|
+
cc get scheduleJob . '%7B%22name%22%3A%22%E6%8A%A5%E8%A1%A8%22%7D'
|
|
81
|
+
|
|
82
|
+
# 3) 查看某个作业详情
|
|
83
|
+
cc detail scheduleJob a0I9D000000XXXXUAI .
|
|
84
|
+
|
|
85
|
+
# 4) 删除作业(危险操作)
|
|
86
|
+
cc delete scheduleJob a0I9D000000XXXXUAI .
|
|
87
|
+
|
|
88
|
+
# 5) 查看文档
|
|
89
|
+
cc doc scheduleJob introduction
|
|
90
|
+
cc doc scheduleJob devguide
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 注意事项
|
|
96
|
+
|
|
97
|
+
- `delete` 为破坏性操作,建议先 `detail` 再删除
|
|
98
|
+
- 查询条件参数需使用 URI 编码 JSON
|
|
99
|
+
- 请确保当前项目目录已完成 CloudCC CLI 初始化并可读取访问配置
|
|
100
|
+
|
|
101
|
+
---
|
package/src/scheduleJob/index.js
CHANGED
|
@@ -2,8 +2,13 @@ const cc = {};
|
|
|
2
2
|
cc.get = require("./get");
|
|
3
3
|
cc.detail = require("./detail");
|
|
4
4
|
cc.delete = require("./delete");
|
|
5
|
+
cc.doc = require("./doc");
|
|
5
6
|
|
|
6
7
|
function main(action, argvs) {
|
|
8
|
+
if (action === "doc") {
|
|
9
|
+
cc.doc(argvs);
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
7
12
|
cc[action](argvs[2], argvs[3]);
|
|
8
13
|
}
|
|
9
14
|
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
const { checkUpdate } = require("../../utils/checkVersion.js");
|
|
2
|
+
const chalk = require("chalk");
|
|
3
|
+
const { post } = require("../../utils/http.js");
|
|
4
|
+
const { getPackageJson } = require("../../utils/config.js");
|
|
5
|
+
|
|
6
|
+
const BaseUrl = "https://developer.apis.cloudcc.cn";
|
|
7
|
+
|
|
8
|
+
function parseScriptPath(scriptPath) {
|
|
9
|
+
const [objName, scriptName] = String(scriptPath || "").split("/");
|
|
10
|
+
if (!objName || !scriptName) {
|
|
11
|
+
throw new Error('Script path format error, should be "objName/scriptName"');
|
|
12
|
+
}
|
|
13
|
+
return { objName, scriptName };
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
async function resolveScriptIdFromRemote({ objName, scriptName }, devConsoleConfig) {
|
|
17
|
+
const body = {
|
|
18
|
+
pageSize: 50,
|
|
19
|
+
pageNo: 1,
|
|
20
|
+
condition: {
|
|
21
|
+
objName,
|
|
22
|
+
scriptName,
|
|
23
|
+
pageLabel: "",
|
|
24
|
+
id: ""
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const res = await post(
|
|
29
|
+
(devConsoleConfig.baseUrl || BaseUrl) + "/devconsole/script/pageClientScript",
|
|
30
|
+
body,
|
|
31
|
+
devConsoleConfig
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
if (!res || !res.result) {
|
|
35
|
+
throw new Error("Query Client Script Failed: " + (res?.returnInfo || "Unknown error"));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const list = res.data?.list || [];
|
|
39
|
+
const match = list.find(it => it && it.objName === objName && it.scriptName === scriptName) || list[0];
|
|
40
|
+
if (!match || !match.id) {
|
|
41
|
+
throw new Error(`Cannot resolve script id from remote: ${objName}/${scriptName}`);
|
|
42
|
+
}
|
|
43
|
+
return match.id;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
async function del(argvs) {
|
|
47
|
+
const res = await checkUpdate();
|
|
48
|
+
if (res) return;
|
|
49
|
+
|
|
50
|
+
const arg = argvs[2]; // scriptId or "objName/scriptName"
|
|
51
|
+
const projectPath = argvs[3] || process.cwd();
|
|
52
|
+
if (!arg) {
|
|
53
|
+
console.error();
|
|
54
|
+
console.error(chalk.red("Delete Client Script Failed: missing script id or path"));
|
|
55
|
+
console.error();
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
try {
|
|
60
|
+
const devConsoleConfig = await getPackageJson(projectPath);
|
|
61
|
+
if (!devConsoleConfig || !devConsoleConfig.accessToken) {
|
|
62
|
+
console.error();
|
|
63
|
+
console.error(chalk.red("Delete Client Script Failed: accessToken is missing. Please check config/cache."));
|
|
64
|
+
console.error();
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
let scriptId = arg;
|
|
69
|
+
if (String(arg).includes("/")) {
|
|
70
|
+
const scriptPath = parseScriptPath(arg);
|
|
71
|
+
scriptId = await resolveScriptIdFromRemote(scriptPath, devConsoleConfig);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const now = new Date();
|
|
75
|
+
const timeStr =
|
|
76
|
+
now.getFullYear() +
|
|
77
|
+
"-" +
|
|
78
|
+
String(now.getMonth() + 1).padStart(2, "0") +
|
|
79
|
+
"-" +
|
|
80
|
+
String(now.getDate()).padStart(2, "0") +
|
|
81
|
+
" " +
|
|
82
|
+
String(now.getHours()).padStart(2, "0") +
|
|
83
|
+
":" +
|
|
84
|
+
String(now.getMinutes()).padStart(2, "0") +
|
|
85
|
+
":" +
|
|
86
|
+
String(now.getSeconds()).padStart(2, "0");
|
|
87
|
+
console.error(chalk.green(timeStr));
|
|
88
|
+
console.error(chalk.green("Deleting, please wait..."));
|
|
89
|
+
|
|
90
|
+
const url = (devConsoleConfig.baseUrl || BaseUrl) + "/devconsole/script/deleteClientScript";
|
|
91
|
+
const result = await post(url, { id: scriptId }, devConsoleConfig);
|
|
92
|
+
|
|
93
|
+
if (result && result.result) {
|
|
94
|
+
console.error();
|
|
95
|
+
console.error(chalk.green("Success!"));
|
|
96
|
+
console.error();
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
console.error();
|
|
100
|
+
console.error(chalk.red("Delete Client Script Failed:" + (result?.returnInfo || "Unknown error")));
|
|
101
|
+
console.error();
|
|
102
|
+
return false;
|
|
103
|
+
} catch (e) {
|
|
104
|
+
console.error();
|
|
105
|
+
console.error(chalk.red("Delete Client Script Failed:" + (e?.message || e)));
|
|
106
|
+
console.error();
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
module.exports = del;
|
|
112
|
+
|