cloudcc-cli 2.3.0 → 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 +17 -48
- package/.cursor/skills/cloudcc-cli-dev.zip +0 -0
- package/.cursor/skills/cloudcc-cli-usage/SKILL.md +67 -0
- package/README.md +22 -0
- package/bin/cc.js +13 -8
- package/bin/index.js +12 -2
- package/bin/mcp.js +1 -1
- package/build/{component-cc-test-001.common.js → component-CCPlugin1774500425584.common.js} +25 -25
- package/build/component-CCPlugin1774500425584.common.js.map +1 -0
- package/build/component-CCPlugin1774500425584.css +1 -0
- package/build/{component-cc-test-001.umd.js → component-CCPlugin1774500425584.umd.js} +27 -27
- package/build/component-CCPlugin1774500425584.umd.js.map +1 -0
- package/build/{component-cc-test-001.umd.min.js → component-CCPlugin1774500425584.umd.min.js} +3 -3
- package/build/component-CCPlugin1774500425584.umd.min.js.map +1 -0
- package/build/demo.html +1 -1
- 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/delete.js +59 -0
- 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/get.js +31 -5
- package/src/application/index.js +2 -0
- package/src/brief/get.js +1 -1
- package/src/classes/create.js +6 -1
- package/src/classes/delete.js +49 -0
- package/src/classes/detail.js +21 -7
- 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 +3 -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 +109 -14
- package/src/customPage/delete.js +2 -2
- package/src/customPage/doc.js +46 -0
- package/src/customPage/docs/devguide.md +200 -0
- package/src/customPage/docs/introduction.md +224 -0
- package/src/customPage/get.js +1 -1
- package/src/customPage/index.js +1 -0
- package/src/customSetting/create.js +36 -0
- package/src/customSetting/delete.js +35 -0
- package/src/customSetting/deleteCustomSettingField.js +43 -0
- package/src/customSetting/detail.js +33 -0
- 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 +34 -0
- package/src/customSetting/index.js +10 -1
- package/src/customSetting/modify.js +30 -0
- package/src/customSetting/saveCustomSettingField.js +46 -0
- package/src/fields/delete.js +52 -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 +2 -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 +54 -26
- package/src/menu/create-script.js +67 -19
- package/src/menu/create.js +9 -3
- package/src/menu/delete.js +59 -0
- 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/get.js +56 -0
- package/src/menu/index.js +3 -0
- package/src/menu/validator.js +80 -0
- package/src/object/delete.js +51 -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 +2 -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/detail.js +14 -6
- package/src/plugin/doc.js +43 -863
- package/src/plugin/docs/devguide.md +923 -0
- package/src/plugin/publish1.js +3 -3
- 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/get.js +1 -1
- 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/delete.js +26 -0
- package/src/scheduleJob/detail.js +23 -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/get.js +26 -0
- package/src/scheduleJob/index.js +15 -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 +46 -0
- package/src/staticResource/create.js +97 -0
- package/src/staticResource/delete.js +48 -0
- package/src/staticResource/detail.js +46 -0
- package/src/staticResource/doc.js +39 -0
- package/src/staticResource/docs/devguide.md +157 -0
- package/src/staticResource/docs/introduction.md +3 -0
- package/src/staticResource/get.js +48 -0
- package/src/staticResource/index.js +13 -0
- package/src/timer/create.js +6 -1
- package/src/timer/delete.js +49 -0
- 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 +4 -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/delete.js +46 -0
- 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 +2 -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/application.cli.test.js +49 -8
- package/test/classes.cli.test.js +14 -5
- package/test/customPage.cli.test.js +96 -0
- package/test/customSetting.cli.test.js +84 -0
- package/test/fields.cli.test.js +18 -3
- package/test/globalSelectList.cli.test.js +94 -0
- package/test/menu-script.cli.test.js +147 -0
- package/test/menu.cli.test.js +42 -5
- package/test/object.cli.test.js +17 -1
- package/test/plugin.cli.test.js +5 -3
- package/test/scheduleJob.cli.test.js +52 -0
- package/test/staticResource.cli.test.js +78 -0
- package/test/timer.cli.test.js +20 -7
- package/test/trigger.cli.test.js +13 -5
- package/tmp_customsetting_detail.json +1 -0
- package/.cursor/skills/cloudcc-cli-dev/BACKEND_CLASS.md +0 -97
- package/.cursor/skills/cloudcc-cli-dev/BACKEND_SCHEDULE.md +0 -78
- package/.cursor/skills/cloudcc-cli-dev/BACKEND_TRIGGER.md +0 -137
- package/.cursor/skills/cloudcc-cli-dev/CLI_CHEATSHEET.md +0 -215
- package/.cursor/skills/cloudcc-cli-dev/CUSTOM-SETTING-API.md +0 -241
- package/.cursor/skills/cloudcc-cli-dev/INSTALL_AND_BOOTSTRAP.md +0 -59
- package/.cursor/skills/cloudcc-cli-dev/OBJECTS_AND_FIELDS.md +0 -120
- package/.cursor/skills/cloudcc-cli-dev/REQUIREMENTS_BREAKDOWN.md +0 -98
- package/.cursor/skills/cloudcc-cli-dev/SKILL.md +0 -44
- package/.cursor/skills/cloudcc-cli-dev/VUE_CUSTOM_COMPONENT.md +0 -151
- package/build/component-cc-test-001.common.js.map +0 -1
- package/build/component-cc-test-001.css +0 -1
- package/build/component-cc-test-001.umd.js.map +0 -1
- package/build/component-cc-test-001.umd.min.js.map +0 -1
- package/classes/CCdd/CCdd.java +0 -22
- package/classes/CCdd/CCddTest.java +0 -11
- package/classes/CCdd/config.json +0 -1
- package/core.zip +0 -0
- package/plugins/cc-test-001/cc-test-001.vue +0 -32
- package/plugins/cc-test-001/components/HelloWorld.vue +0 -11
- package/plugins/cc-test-001/config.json +0 -6
- package/schedule/CCdd/CCdd.java +0 -11
- package/schedule/CCdd/config.json +0 -1
- 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/target/ccopenapi-0.0.4-classes.jar +0 -0
- package/target/ccopenapi-0.0.4.jar +0 -0
- package/target/classes/CCdd/CCdd.class +0 -0
- package/target/classes/CCdd/CCddTest.class +0 -0
- package/target/classes/CCdd/config.json +0 -1
- package/target/maven-archiver/pom.properties +0 -3
- package/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +0 -20
- package/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +0 -19
- /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/{docs//350/207/252/345/256/232/344/271/211/347/261/273.md" → src/classes/docs/introduction.md} +0 -0
- /package/{docs/CloudCC/350/207/252/345/256/232/344/271/211/347/273/204/344/273/266/344/275/277/347/224/250/350/257/264/346/230/216.md" → src/plugin/docs/introduction.md} +0 -0
- /package/{docs/cloudcc/345/256/232/346/227/266/344/275/234/344/270/232.md" → src/timer/docs/devguide.md} +0 -0
- /package/{docs/cloudcc/345/256/232/346/227/266/347/261/273.md" → src/timer/docs/introduction.md} +0 -0
- /package/{docs//350/247/246/345/217/221/345/231/250/347/261/273.md" → src/triggers/docs/introduction.md} +0 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
const chalk = require("chalk");
|
|
2
|
+
const { postClass } = require("../../utils/http");
|
|
3
|
+
const { getPackageJson } = require("../../utils/config");
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 删除应用(Application)
|
|
7
|
+
* 用法:cc delete application <projectPath> <appId>
|
|
8
|
+
*/
|
|
9
|
+
async function remove(argvs) {
|
|
10
|
+
try {
|
|
11
|
+
const projectPath = argvs[2] || process.cwd();
|
|
12
|
+
const appId = argvs[3];
|
|
13
|
+
|
|
14
|
+
if (!appId) {
|
|
15
|
+
console.error();
|
|
16
|
+
console.error(chalk.red("Error: 缺少应用 ID"));
|
|
17
|
+
console.error(chalk.yellow("用法: cc delete application <projectPath> <appId>"));
|
|
18
|
+
console.error();
|
|
19
|
+
throw new Error("缺少必需参数: appId");
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const config = await getPackageJson(projectPath);
|
|
23
|
+
if (!config || !config.accessToken) {
|
|
24
|
+
console.error();
|
|
25
|
+
console.error(chalk.red("Error: 配置未找到或 accessToken 缺失"));
|
|
26
|
+
console.error();
|
|
27
|
+
throw new Error("配置未找到或 accessToken 缺失");
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
console.error();
|
|
31
|
+
console.error(chalk.green(`Deleting application (${appId}), please wait...`));
|
|
32
|
+
console.error();
|
|
33
|
+
|
|
34
|
+
const result = await postClass(
|
|
35
|
+
config.setupSvc + "/api/appProgram/deleteApp",
|
|
36
|
+
{ id: appId },
|
|
37
|
+
config.accessToken
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
if (result && result.result) {
|
|
41
|
+
console.error();
|
|
42
|
+
console.error(chalk.green("Success! Application deleted."));
|
|
43
|
+
console.error();
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const msg = result && (result.returnInfo || result.message) ? (result.returnInfo || result.message) : "Unknown error";
|
|
48
|
+
console.error();
|
|
49
|
+
console.error(chalk.red("Error: " + msg));
|
|
50
|
+
console.error();
|
|
51
|
+
throw new Error("Delete Application Failed: " + msg);
|
|
52
|
+
} catch (error) {
|
|
53
|
+
console.error();
|
|
54
|
+
console.error(chalk.red("应用删除失败:"), error);
|
|
55
|
+
throw error;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
module.exports = remove;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* application 文档入口:正文均在 `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
|
+
function getIntroductionDoc() {
|
|
15
|
+
return readDocFile("introduction");
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** 开发指导:CLI 创建/查询/删除应用 */
|
|
19
|
+
function getDevGuideDoc() {
|
|
20
|
+
return readDocFile("devguide");
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* cc doc application <introduction|devguide>
|
|
25
|
+
* @param {string[]} argvs [doc, type, introduction|devguide, ...]
|
|
26
|
+
*/
|
|
27
|
+
function doc(argvs) {
|
|
28
|
+
const subType = argvs[2];
|
|
29
|
+
const key = String(subType || "").trim().toLowerCase();
|
|
30
|
+
if (!key) {
|
|
31
|
+
throw new Error("cc doc application 需要子命令:introduction 或 devguide");
|
|
32
|
+
}
|
|
33
|
+
if (key === "introduction") {
|
|
34
|
+
const content = getIntroductionDoc();
|
|
35
|
+
console.log(content);
|
|
36
|
+
return content;
|
|
37
|
+
}
|
|
38
|
+
if (key === "devguide") {
|
|
39
|
+
const content = getDevGuideDoc();
|
|
40
|
+
console.log(content);
|
|
41
|
+
return content;
|
|
42
|
+
}
|
|
43
|
+
throw new Error(`doc 不支持的子命令: ${subType},请使用 introduction 或 devguide`);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
module.exports = doc;
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# CloudCC 应用开发指南
|
|
2
|
+
|
|
3
|
+
## 1. 模块定位
|
|
4
|
+
|
|
5
|
+
`application` 模块用于通过 CLI 管理 CloudCC 应用,当前提供:
|
|
6
|
+
|
|
7
|
+
- 创建应用:`cc create application ...`
|
|
8
|
+
- 查询应用:`cc get application ...`
|
|
9
|
+
- 删除应用:`cc delete application ...`
|
|
10
|
+
- 文档查看:`cc doc application introduction|devguide`
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 2. 开发前准备
|
|
15
|
+
|
|
16
|
+
执行命令前请确认:
|
|
17
|
+
|
|
18
|
+
- 已完成 `cc doc project devguide` 的环境初始化
|
|
19
|
+
- 项目根目录存在可用配置,且包含 `accessToken`
|
|
20
|
+
- 已准备应用名称、应用代码
|
|
21
|
+
- 若需自定义菜单挂载,已准备菜单 ID 列表
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 3. 命令总览(以代码实现为准)
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
cc create application <path> <p1> <p2> [duel1]
|
|
29
|
+
cc get application <projectPath> [encodedCondJson]
|
|
30
|
+
cc delete application <projectPath> <appId>
|
|
31
|
+
cc doc application <introduction|devguide>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
参数约定:
|
|
35
|
+
|
|
36
|
+
- `path` / `projectPath`:项目路径
|
|
37
|
+
- `p1`:应用名称
|
|
38
|
+
- `p2`:应用代码
|
|
39
|
+
- `duel1`:菜单 ID 列表(逗号分隔,可选)
|
|
40
|
+
- `encodedCondJson`:URI 编码后的 JSON 查询条件
|
|
41
|
+
- `appId`:应用 ID
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 4. 创建应用
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
cc create application <path> <p1> <p2> [duel1]
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 4.1 参数说明
|
|
52
|
+
|
|
53
|
+
- `path`:项目路径,推荐传 `.` 表示当前目录
|
|
54
|
+
- `p1`:应用名称(例如 `销售工作台`)
|
|
55
|
+
- `p2`:应用代码(例如 `sales_workbench`)
|
|
56
|
+
- `duel1`:菜单 ID 列表,多个 ID 以逗号分隔
|
|
57
|
+
|
|
58
|
+
### 4.2 默认行为与自动补全
|
|
59
|
+
|
|
60
|
+
- 若未传 `duel1`,CLI 会默认使用 `acf000001`
|
|
61
|
+
- 若传入 `duel1` 但不包含 `acf000001`,CLI 会自动补入该 ID
|
|
62
|
+
- 创建过程中会自动查询角色列表并注入权限参数
|
|
63
|
+
|
|
64
|
+
### 4.3 示例
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# 使用默认菜单 ID
|
|
68
|
+
cc create application . "销售工作台" sales_workbench
|
|
69
|
+
|
|
70
|
+
# 指定菜单 ID(可多个)
|
|
71
|
+
cc create application . "销售工作台" sales_workbench "acf000001,a0I9D000000XXXXUAI"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 4.4 常见报错
|
|
75
|
+
|
|
76
|
+
- 缺少参数:
|
|
77
|
+
|
|
78
|
+
```text
|
|
79
|
+
Error: 缺少必需参数
|
|
80
|
+
用法: cc create application <path> <p1> <p2> [duel1]
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
- 角色列表获取失败(依赖 `brief/get`):
|
|
84
|
+
|
|
85
|
+
```text
|
|
86
|
+
获取角色列表失败
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 5. 查询应用
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
cc get application <projectPath> [encodedCondJson]
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
说明:
|
|
98
|
+
|
|
99
|
+
- 不传条件时,返回应用列表
|
|
100
|
+
- 传条件时需使用 `encodeURI(JSON.stringify(...))` 编码
|
|
101
|
+
|
|
102
|
+
示例:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# 查询全部应用
|
|
106
|
+
cc get application .
|
|
107
|
+
|
|
108
|
+
# 按条件查询(示例)
|
|
109
|
+
cc get application . '%7B%22appType%22%3A%22app%22%7D'
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
若条件 JSON 无法解析,会报错:
|
|
113
|
+
|
|
114
|
+
```text
|
|
115
|
+
Get Application List Failed: encodedCondJson 解析失败,请传 encodeURI(JSON.stringify(...))
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 6. 删除应用
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
cc delete application <projectPath> <appId>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
参数说明:
|
|
127
|
+
|
|
128
|
+
- `projectPath`:项目路径
|
|
129
|
+
- `appId`:应用 ID(必填)
|
|
130
|
+
|
|
131
|
+
示例:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
cc delete application . a0L9D000000XXXXUAI
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
缺少 `appId` 时会报错:
|
|
138
|
+
|
|
139
|
+
```text
|
|
140
|
+
Error: 缺少应用 ID
|
|
141
|
+
用法: cc delete application <projectPath> <appId>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## 7. 文档命令
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
cc doc application introduction
|
|
150
|
+
cc doc application devguide
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
仅支持 `introduction` 与 `devguide`,其他子命令会抛错。
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## 8. 推荐操作顺序
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# 1) 先查现有应用,避免重名
|
|
161
|
+
cc get application .
|
|
162
|
+
|
|
163
|
+
# 2) 创建应用
|
|
164
|
+
cc create application . "销售工作台" sales_workbench
|
|
165
|
+
|
|
166
|
+
# 3) 再次查询确认已创建
|
|
167
|
+
cc get application .
|
|
168
|
+
|
|
169
|
+
# 4) 如需回滚,按 appId 删除
|
|
170
|
+
cc delete application . <appId>
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# CloudCC 应用模块介绍
|
|
2
|
+
|
|
3
|
+
## 1. 模块定位
|
|
4
|
+
|
|
5
|
+
`application` 模块用于在 CloudCC 中创建和管理应用程序(Application)。
|
|
6
|
+
|
|
7
|
+
应用是菜单与功能入口的承载容器。对象菜单、页面菜单、脚本菜单通常需要归属于某个应用,业务用户才会在对应导航中看到完整功能集合。
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 2. 应用能做什么
|
|
12
|
+
|
|
13
|
+
通过 `application` 模块,你可以:
|
|
14
|
+
|
|
15
|
+
- 创建新应用并设置应用名称、代码
|
|
16
|
+
- 绑定菜单集合(支持多菜单 ID)
|
|
17
|
+
- 获取当前组织内应用列表
|
|
18
|
+
- 删除指定应用
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 3. 应用在平台中的作用
|
|
23
|
+
|
|
24
|
+
应用解决的是“功能编排与入口组织”问题:
|
|
25
|
+
|
|
26
|
+
- 将零散菜单按业务域组织为统一导航体验
|
|
27
|
+
- 给不同业务线提供独立的应用入口
|
|
28
|
+
- 配合简档权限,控制不同角色可见的应用能力
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 4. 典型使用流程
|
|
33
|
+
|
|
34
|
+
在 CloudCC 中,应用相关流程通常如下:
|
|
35
|
+
|
|
36
|
+
1. 准备对象、页面、脚本等能力
|
|
37
|
+
2. 创建或确认对应菜单入口
|
|
38
|
+
3. 创建应用并绑定菜单
|
|
39
|
+
4. 验证应用在目标角色下的可见性与可用性
|
|
40
|
+
|
|
41
|
+
`cloudcc-cli` 主要覆盖第 3 步(应用创建/查询/删除),建议结合菜单与权限配置一同验收。
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 5. 适用场景
|
|
46
|
+
|
|
47
|
+
以下场景建议使用 `application` 模块:
|
|
48
|
+
|
|
49
|
+
- 新项目上线,需要快速搭建业务导航应用
|
|
50
|
+
- 多业务线并行,需要拆分不同应用入口
|
|
51
|
+
- 现有菜单较多,需要按业务域重新归类到应用
|
|
52
|
+
- 自动化脚本中需要批量创建和清理测试应用
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 6. 与其他模块的关系
|
|
57
|
+
|
|
58
|
+
`application` 常与以下模块协同:
|
|
59
|
+
|
|
60
|
+
- `menu`:应用通过菜单承载具体入口
|
|
61
|
+
- `object`:对象能力常通过对象菜单进入应用
|
|
62
|
+
- `customPage`:页面能力可通过页面菜单加入应用
|
|
63
|
+
- `script`:脚本能力可通过脚本菜单加入应用
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 7. 建议实践
|
|
68
|
+
|
|
69
|
+
- 应用命名与编码遵循统一规范(如业务域前缀)
|
|
70
|
+
- 创建前先梳理菜单清单,避免重复或遗漏入口
|
|
71
|
+
- 先在测试环境验证应用可见性,再推广到生产环境
|
|
72
|
+
- 变更应用菜单后,回归验证关键业务流程是否可达
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 8. 相关文档与命令
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
cc doc application introduction
|
|
80
|
+
cc doc application devguide
|
|
81
|
+
```
|
package/src/application/get.js
CHANGED
|
@@ -2,12 +2,38 @@ const { postClass } = require("../../utils/http")
|
|
|
2
2
|
const { getPackageJson } = require("../../utils/config")
|
|
3
3
|
|
|
4
4
|
async function get(argvs, isMcp = false) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
const projectPath = argvs[2] || process.cwd();
|
|
6
|
+
const condArg = argvs[3];
|
|
7
|
+
|
|
8
|
+
let body = {};
|
|
9
|
+
if (condArg) {
|
|
10
|
+
try {
|
|
11
|
+
body = JSON.parse(decodeURI(condArg));
|
|
12
|
+
} catch (e) {
|
|
13
|
+
throw new Error("Get Application List Failed: encodedCondJson 解析失败,请传 encodeURI(JSON.stringify(...))");
|
|
14
|
+
}
|
|
9
15
|
}
|
|
10
|
-
|
|
16
|
+
|
|
17
|
+
const config = await getPackageJson(projectPath);
|
|
18
|
+
const result = await postClass(
|
|
19
|
+
config.setupSvc + "/api/appProgram/queryAppList",
|
|
20
|
+
body,
|
|
21
|
+
config.accessToken
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
if (result && result.result) {
|
|
25
|
+
const data = result.data;
|
|
26
|
+
const rawList = Array.isArray(data)
|
|
27
|
+
? data
|
|
28
|
+
: (data && Array.isArray(data.list) ? data.list : []);
|
|
29
|
+
if (!isMcp) {
|
|
30
|
+
console.log(JSON.stringify(rawList));
|
|
31
|
+
}
|
|
32
|
+
return rawList;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const msg = result && (result.returnInfo || result.message) ? (result.returnInfo || result.message) : "Unknown error";
|
|
36
|
+
throw new Error("Get Application List Failed: " + msg);
|
|
11
37
|
}
|
|
12
38
|
|
|
13
39
|
module.exports = get;
|
package/src/application/index.js
CHANGED
package/src/brief/get.js
CHANGED
package/src/classes/create.js
CHANGED
|
@@ -4,7 +4,12 @@ const path = require("path")
|
|
|
4
4
|
const chalk = require("chalk")
|
|
5
5
|
const { getPackageJson } = require("../../utils/config.js")
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* cc create classes <name>
|
|
9
|
+
* @param {string[]} argvs [action, type, name, ...]
|
|
10
|
+
*/
|
|
11
|
+
async function create(argvs) {
|
|
12
|
+
const name = argvs[2]
|
|
8
13
|
let res = await checkUpdate();
|
|
9
14
|
if (!res) {
|
|
10
15
|
let config = await getPackageJson();
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
const fs = require("fs");
|
|
2
|
+
const path = require("path");
|
|
3
|
+
const chalk = require("chalk");
|
|
4
|
+
const { getPackageJson } = require("../../utils/config");
|
|
5
|
+
const { postClass } = require("../../utils/http");
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* cc delete classes <nameOrId> [projectPath]
|
|
9
|
+
* @param {string[]} argvs [action, type, nameOrId, projectPath?]
|
|
10
|
+
*/
|
|
11
|
+
async function remove(argvs) {
|
|
12
|
+
const nameOrId = argvs[2]
|
|
13
|
+
const projectPath = argvs[3] != null && argvs[3] !== '' ? argvs[3] : process.cwd()
|
|
14
|
+
let classId = nameOrId;
|
|
15
|
+
const classPath = path.join(projectPath, `classes/${nameOrId}/`);
|
|
16
|
+
const configPath = path.join(classPath, "config.json");
|
|
17
|
+
|
|
18
|
+
if (fs.existsSync(configPath)) {
|
|
19
|
+
const configContent = JSON.parse(fs.readFileSync(configPath, "utf8"));
|
|
20
|
+
if (configContent.id) {
|
|
21
|
+
classId = configContent.id;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (!classId) {
|
|
26
|
+
throw new Error("Delete Class Failed: class name or id is required");
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const config = await getPackageJson(projectPath);
|
|
30
|
+
console.error();
|
|
31
|
+
console.error(chalk.green(`Deleting class (${classId}), please wait...`));
|
|
32
|
+
console.error();
|
|
33
|
+
|
|
34
|
+
const res = await postClass(
|
|
35
|
+
config.setupSvc + "/api/ccfag/delete",
|
|
36
|
+
{ id: classId },
|
|
37
|
+
config.accessToken
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
if (res && res.result) {
|
|
41
|
+
console.error(chalk.green("Success! Class deleted."));
|
|
42
|
+
console.error();
|
|
43
|
+
return res;
|
|
44
|
+
}
|
|
45
|
+
const msg = res && (res.returnInfo || res.message) ? (res.returnInfo || res.message) : "Unknown error";
|
|
46
|
+
throw new Error("Delete Class Failed: " + msg);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
module.exports = remove;
|
package/src/classes/detail.js
CHANGED
|
@@ -4,7 +4,21 @@ const path = require("path")
|
|
|
4
4
|
const { getPackageJson } = require("../../utils/config")
|
|
5
5
|
const { postClass } = require("../../utils/http")
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
function outputResult(result, isMcp) {
|
|
8
|
+
if (!isMcp) {
|
|
9
|
+
console.log(JSON.stringify(result));
|
|
10
|
+
}
|
|
11
|
+
return result;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* cc detail classes <name> <id>
|
|
16
|
+
* @param {string[]} argvs [action, type, name?, id?, isMcp?]
|
|
17
|
+
*/
|
|
18
|
+
async function detail(argvs) {
|
|
19
|
+
const name = argvs[2]
|
|
20
|
+
const id = argvs[3]
|
|
21
|
+
const isMcp = Boolean(argvs[4])
|
|
8
22
|
// 如果有 name,优先查询本地
|
|
9
23
|
if (name && name !== '') {
|
|
10
24
|
const classPath = path.join(process.cwd(), `classes/${name}/`);
|
|
@@ -15,14 +29,14 @@ async function detail(name, id) {
|
|
|
15
29
|
if (fs.existsSync(configPath) && fs.existsSync(javaFilePath)) {
|
|
16
30
|
let configContent = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
17
31
|
let javaContent = fs.readFileSync(javaFilePath, 'utf8');
|
|
18
|
-
return {
|
|
32
|
+
return outputResult({
|
|
19
33
|
name: configContent.name,
|
|
20
34
|
version: configContent.version,
|
|
21
35
|
id: configContent.id || null,
|
|
22
36
|
source: javaContent,
|
|
23
37
|
published: !!configContent.id,
|
|
24
38
|
fromLocal: true
|
|
25
|
-
};
|
|
39
|
+
}, isMcp);
|
|
26
40
|
}
|
|
27
41
|
|
|
28
42
|
// 本地文件不完整,从服务器拉取
|
|
@@ -44,10 +58,10 @@ async function detail(name, id) {
|
|
|
44
58
|
let res = await postClass(config.setupSvc + "/api/ccfag/detail", body, config.accessToken)
|
|
45
59
|
|
|
46
60
|
if (res.result) {
|
|
47
|
-
return {
|
|
61
|
+
return outputResult({
|
|
48
62
|
...res.data.trigger,
|
|
49
63
|
fromLocal: false
|
|
50
|
-
};
|
|
64
|
+
}, isMcp);
|
|
51
65
|
} else {
|
|
52
66
|
throw new Error('Get Class Details Failed: ' + res.returnInfo);
|
|
53
67
|
}
|
|
@@ -62,10 +76,10 @@ async function detail(name, id) {
|
|
|
62
76
|
let res = await postClass(config.setupSvc + "/api/ccfag/detail", body, config.accessToken)
|
|
63
77
|
|
|
64
78
|
if (res.result) {
|
|
65
|
-
return {
|
|
79
|
+
return outputResult({
|
|
66
80
|
...res.data.trigger,
|
|
67
81
|
fromLocal: false
|
|
68
|
-
};
|
|
82
|
+
}, isMcp);
|
|
69
83
|
} else {
|
|
70
84
|
throw new Error('Get Class Details Failed: ' + res.returnInfo);
|
|
71
85
|
}
|