cloudcc-cli 2.2.3 → 2.2.4

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.
Files changed (174) hide show
  1. package/.vscode/settings.json +3 -0
  2. package/README.md +35 -0
  3. package/bin/cc.js +11 -36
  4. package/bin/index.js +33 -0
  5. package/bin/mcp-svc.js +13 -0
  6. package/java/com/cloudcc/core/TriggerInvoker.java +17 -1
  7. package/package.json +3 -2
  8. package/pom.xml +1 -0
  9. package/prompt/DevelopmentEnvironmentConstruction.ts +133 -0
  10. package/prompt/ccdk.ts +1190 -0
  11. package/prompt/ccprompt.ts +8 -0
  12. package/prompt/cloudccdev.ts +109 -0
  13. package/prompt/index.ts +52 -0
  14. package/prompt/objectInfo.ts +94 -0
  15. package/prompt/objectList.ts +25 -0
  16. package/prompt/openapi.ts +310 -0
  17. package/prompt/system.ts +14 -0
  18. package/prompt/vscodeExtension.ts +27 -0
  19. package/src/approval/approve.js +105 -0
  20. package/src/approval/get.js +245 -0
  21. package/src/approval/index.js +11 -0
  22. package/src/approval/reject.js +105 -0
  23. package/src/brief/get.js +51 -0
  24. package/src/brief/index.js +7 -0
  25. package/src/config/get.js +1 -1
  26. package/src/fields/create.js +204 -0
  27. package/src/fields/fields/A.js +23 -0
  28. package/src/fields/fields/AD.js +25 -0
  29. package/src/fields/fields/B.js +28 -0
  30. package/src/fields/fields/C.js +28 -0
  31. package/src/fields/fields/D.js +27 -0
  32. package/src/fields/fields/E.js +28 -0
  33. package/src/fields/fields/ENC.js +28 -0
  34. package/src/fields/fields/ENCD.js +28 -0
  35. package/src/fields/fields/F.js +27 -0
  36. package/src/fields/fields/FL.js +25 -0
  37. package/src/fields/fields/H.js +27 -0
  38. package/src/fields/fields/IMG.js +27 -0
  39. package/src/fields/fields/J.js +26 -0
  40. package/src/fields/fields/L.js +32 -0
  41. package/src/fields/fields/LT.js +28 -0
  42. package/src/fields/fields/M.js +29 -0
  43. package/src/fields/fields/MR.js +24 -0
  44. package/src/fields/fields/N.js +30 -0
  45. package/src/fields/fields/P.js +28 -0
  46. package/src/fields/fields/Q.js +35 -0
  47. package/src/fields/fields/S.js +30 -0
  48. package/src/fields/fields/SCORE.js +24 -0
  49. package/src/fields/fields/T.js +27 -0
  50. package/src/fields/fields/U.js +28 -0
  51. package/src/fields/fields/X.js +28 -0
  52. package/src/fields/fields/Y.js +33 -0
  53. package/src/fields/get.js +36 -0
  54. package/src/fields/index.js +9 -0
  55. package/src/mcp/MCP/345/234/272/346/231/257/346/250/241/346/213/237.md +8 -0
  56. package/src/mcp/index-sse-svc.js +126 -0
  57. package/src/mcp/index-streamable-svc.js +180 -0
  58. package/src/mcp/index.js +519 -115
  59. package/src/mcp/readme.md +75 -70
  60. package/src/mcp/tools/Approval/handler.js +349 -0
  61. package/src/mcp/tools/Class Creator/handler.js +37 -0
  62. package/src/mcp/tools/Class Detail Retriever/handler.js +33 -0
  63. package/src/mcp/tools/Class Detail Retriever/prompt.js +37 -0
  64. package/src/mcp/tools/Class Editor Guide/handler.js +72 -0
  65. package/src/mcp/tools/Class Editor Guide/prompt.js +468 -0
  66. package/src/mcp/tools/Class List Retriever/handler.js +36 -0
  67. package/src/mcp/tools/Class Publisher/handler.js +29 -0
  68. package/src/mcp/tools/Class Publisher/prompt.js +40 -0
  69. package/src/mcp/tools/Class Puller/handler.js +86 -0
  70. package/src/mcp/tools/Class Puller/prompt.js +49 -0
  71. package/src/mcp/tools/Client Script Creator/handler.js +179 -0
  72. package/src/mcp/tools/Client Script Detail Retriever/handler.js +53 -0
  73. package/src/mcp/tools/Client Script Editor Guide/handler.js +633 -0
  74. package/src/mcp/tools/Client Script List Retriever/handler.js +68 -0
  75. package/src/mcp/tools/Client Script Publisher/handler.js +54 -0
  76. package/src/mcp/tools/Client Script Puller/handler.js +73 -0
  77. package/src/mcp/tools/CloudCC Development Overview/handler.js +48 -0
  78. package/src/mcp/tools/CloudCC Development Overview/prompt.js +870 -0
  79. package/src/mcp/tools/Component Creator/handler.js +44 -0
  80. package/src/mcp/tools/Component Detail Retriever/handler.js +38 -0
  81. package/src/mcp/tools/Component Editor Guide/handler.js +76 -0
  82. package/src/mcp/tools/Component Editor Guide/prompt.js +519 -0
  83. package/src/mcp/tools/Component List Retriever/handler.js +43 -0
  84. package/src/mcp/tools/Component Publisher/handler.js +18 -0
  85. package/src/mcp/tools/Component Puller/handler.js +63 -0
  86. package/src/mcp/tools/{dev-env/fetcher.js → Dev Environment Creator/fetcher.js } +8 -8
  87. package/src/mcp/tools/{dev-env/prompt.js → Dev Environment Creator/prompt.js } +19 -2
  88. package/src/mcp/tools/Dev Environment Validator/handler.js +88 -0
  89. package/src/mcp/tools/Dev Environment Validator/prompt.js +193 -0
  90. package/src/mcp/tools/{key-guide/fetcher.js → Developer Key Setup Guide/fetcher.js } +7 -7
  91. package/src/mcp/tools/{key-guide/prompt.js → Developer Key Setup Guide/prompt.js } +3 -3
  92. package/src/mcp/tools/Object Creator/handler.js +34 -0
  93. package/src/mcp/tools/Object Fields Creator/handler.js +64 -0
  94. package/src/mcp/tools/Object Fields Retriever/handler.js +37 -0
  95. package/src/mcp/tools/Object Fields Retriever/prompt.js +10 -0
  96. package/src/mcp/tools/Object List Retriever/handler.js +43 -0
  97. package/src/mcp/tools/Object List Retriever/prompt.js +10 -0
  98. package/src/mcp/tools/Scheduled Class Creator/handler.js +37 -0
  99. package/src/mcp/tools/Scheduled Class Detail Retriever/handler.js +34 -0
  100. package/src/mcp/tools/Scheduled Class List Retriever/handler.js +52 -0
  101. package/src/mcp/tools/Scheduled Class Publisher/handler.js +30 -0
  102. package/src/mcp/tools/Scheduled Class Puller/handler.js +92 -0
  103. package/src/mcp/tools/Trigger Creator/handler.js +53 -0
  104. package/src/mcp/tools/Trigger Detail Retriever/handler.js +33 -0
  105. package/src/mcp/tools/Trigger Editor Guide/handler.js +58 -0
  106. package/src/mcp/tools/Trigger List Retriever/handler.js +49 -0
  107. package/src/mcp/tools/Trigger Publisher/handler.js +34 -0
  108. package/src/mcp/tools/Trigger Puller/handler.js +40 -0
  109. package/src/mcp/tools/ccdk/fetcher.js +3 -3
  110. package/src/mcp/tools/ccdk/prompt.js +2 -2
  111. package/src/mcp/tools/index.js +23 -0
  112. package/src/object/create.js +105 -0
  113. package/src/object/get.js +43 -4
  114. package/src/object/index.js +2 -1
  115. package/src/plugin/create1.js +8 -7
  116. package/src/plugin/detail.js +91 -0
  117. package/src/plugin/get.js +79 -0
  118. package/src/plugin/index.js +4 -1
  119. package/src/plugin/publish.js +13 -13
  120. package/src/plugin/publish1.js +30 -22
  121. package/src/plugin/pull.js +173 -0
  122. package/src/project/create.js +9 -9
  123. package/src/project/create1.js +31 -17
  124. package/src/recordType/get.js +4 -2
  125. package/src/script/create.js +7 -7
  126. package/src/script/detail.js +95 -0
  127. package/src/script/get.js +4 -2
  128. package/src/script/index.js +1 -0
  129. package/src/script/publish.js +14 -14
  130. package/src/script/pull.js +12 -12
  131. package/src/script/pullList.js +5 -3
  132. package/src/timer/create.js +7 -7
  133. package/src/timer/detail.js +84 -0
  134. package/src/timer/get.js +6 -3
  135. package/src/timer/publish.js +7 -7
  136. package/src/timer/pull.js +8 -8
  137. package/src/timer/pullList.js +5 -3
  138. package/src/token/get.js +1 -1
  139. package/src/triggers/create.js +7 -7
  140. package/src/triggers/detail.js +90 -0
  141. package/src/triggers/get.js +4 -2
  142. package/src/triggers/index.js +1 -0
  143. package/src/triggers/publish.js +7 -7
  144. package/src/triggers/pull.js +8 -8
  145. package/src/triggers/pullList.js +5 -3
  146. package/src/version/get.js +3 -3
  147. package/target/ccopenapi-0.0.3-classes.jar +0 -0
  148. package/target/ccopenapi-0.0.3.jar +0 -0
  149. package/target/maven-archiver/pom.properties +3 -0
  150. package/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +18 -0
  151. package/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +19 -0
  152. package/template/Appvue +2 -2
  153. package/template/index.js +30 -19
  154. package/tool/branch/index.js +1 -1
  155. package/tool/checkLange/checkLang.js +6 -6
  156. package/tool/checkLange/clearLang.js +1 -1
  157. package/utils/accessClass.js +23 -0
  158. package/utils/checkVersion.js +22 -20
  159. package/utils/config.js +18 -3
  160. package/utils/http.js +10 -10
  161. package/utils/utils.js +97 -32
  162. package/java/com/cloudcc/core/CCTriggerDemo.java +0 -25
  163. package/src/classes/create.js +0 -66
  164. package/src/classes/get.js +0 -22
  165. package/src/classes/index.js +0 -11
  166. package/src/classes/publish.js +0 -51
  167. package/src/classes/pull.js +0 -55
  168. package/src/classes/pullList.js +0 -44
  169. package/src/mcp/tools/classes/handler.js +0 -358
  170. package/src/mcp/tools/classes/prompt.js +0 -1261
  171. package/src/mcp/tools/plugin/handler.js +0 -92
  172. /package/src/mcp/tools/{plugin → Component Publisher}/prompt.js +0 -0
  173. /package/src/mcp/tools/{dev-env → Dev Environment Creator}/handler.js +0 -0
  174. /package/src/mcp/tools/{key-guide → Developer Key Setup Guide}/handler.js +0 -0
@@ -0,0 +1,105 @@
1
+ /**
2
+ * 审批通过记录
3
+ * @param {string} argvs - 参数数组
4
+ * @param {boolean} isMcp - 是否为 MCP 调用
5
+ */
6
+
7
+ /**
8
+ * {
9
+ "data": "[{\"id\":\"b702025C481E894hk70F\"}]",
10
+ "relatedId": "b702025C481E894hk70F",
11
+ "comments": "",
12
+ "workItemId": "20257F03BEC683DGLibO",
13
+ "actionType": "Approved",
14
+ "objectApiName": "productuplist",
15
+ "stepId": ""
16
+ }
17
+ */
18
+ const { postClass } = require("../../utils/http");
19
+ const { getPackageJson } = require("../../utils/config");
20
+
21
+ async function approve(argvs, isMcp = false) {
22
+ try {
23
+ const path = argvs[2] || process.cwd();
24
+ // 从参数中解析审批信息,如果传入的是JSON字符串则解析,否则使用旧格式
25
+ let approvalParams = {};
26
+ if (argvs[3]) {
27
+ try {
28
+ approvalParams = typeof argvs[3] === 'string' ? JSON.parse(decodeURI(argvs[3])) : argvs[3];
29
+ } catch (e) {
30
+ // 如果不是JSON,使用旧格式(向后兼容)
31
+ approvalParams = {
32
+ workItemId: argvs[3],
33
+ relatedId: argvs[4] || argvs[3],
34
+ comment: argvs[5] || '',
35
+ objectApiName: argvs[6] || ''
36
+ };
37
+ }
38
+ }
39
+
40
+ const {
41
+ relatedId, workItemId
42
+ } = approvalParams;
43
+
44
+ const config = await getPackageJson(path);
45
+
46
+ if (!config || !config.accessToken) {
47
+ throw new Error('配置未找到或 accessToken 缺失,请检查配置文件');
48
+ }
49
+ // 调用接口审批通过记录
50
+ const getPermissionById = await postClass(
51
+ `${config.apiSvc}/api/objectdetail/getPermissionById`,
52
+ { id: relatedId },
53
+ config.accessToken);
54
+ const { objectApi } = getPermissionById.data;
55
+
56
+ // 构建请求体
57
+ const requestBody = {
58
+ data: JSON.stringify([{ id: relatedId }]),
59
+ relatedId: relatedId,
60
+ comments: '',
61
+ workItemId: workItemId,
62
+ actionType: 'Approved',
63
+ objectApiName: objectApi,
64
+ };
65
+
66
+ // 调用接口审批通过记录
67
+ const url = `${config.apiSvc}/api/approval/updateApprovalProcessOperation`;
68
+
69
+ let response;
70
+ try {
71
+ response = await postClass(url, requestBody, config.accessToken);
72
+ } catch (error) {
73
+ // 处理 HTTP 错误(如 404)
74
+ if (error.response) {
75
+ const status = error.response.status;
76
+ const statusText = error.response.statusText;
77
+ const errorData = error.response.data || {};
78
+ throw new Error(`接口请求失败 (${status} ${statusText}): ${errorData.message || errorData.error || '未知错误'}`);
79
+ } else if (error.request) {
80
+ throw new Error('请求发送失败,请检查网络连接');
81
+ } else {
82
+ throw new Error('请求配置错误: ' + error.message);
83
+ }
84
+ }
85
+
86
+ if (response.result) {
87
+ if (!isMcp) {
88
+ console.log('审批通过成功:', JSON.stringify(response, null, 2));
89
+ }
90
+ return {
91
+ success: true,
92
+ message: response.returnInfo || '审批通过成功',
93
+ data: response.data
94
+ };
95
+ } else {
96
+ throw new Error('审批通过失败: ' + (response.returnInfo || response.message || '未知错误'));
97
+ }
98
+ } catch (error) {
99
+ console.error("调用接口出错:", error);
100
+ throw error;
101
+ }
102
+ }
103
+
104
+ module.exports = approve;
105
+
@@ -0,0 +1,245 @@
1
+ /**
2
+ * 拉取待审批记录
3
+ * @param {string} argvs - 参数数组
4
+ * @param {boolean} isMcp - 是否为 MCP 调用
5
+ */
6
+
7
+ /**
8
+ * {
9
+ "list": [
10
+ {
11
+ "actor": "龚俊杰",
12
+ "approveurl": "0",
13
+ "objname": "20251230-R022",
14
+ "prefix": "b70",
15
+ "hisid": "20257E6A11425C2Ht001",
16
+ "objid": "b702025C481E894hk70F",
17
+ "isInsertApproval": "false",
18
+ "insertApprovalWorkitemid": null,
19
+ "objtype": "产品需求研发报备记录",
20
+ "workItemid": "2025314443E7A7F6HZge",
21
+ "actdate": "2025-12-30 16:07",
22
+ "currentactor": null,
23
+ "zhaiyao": "<b>创建人</b>:龚俊杰&nbsp;&nbsp;<b>创建时间</b>:2025-12-30 15:27:50&nbsp;&nbsp;<b>原始需求资料文档</b>:&nbsp;&nbsp;<b>功能检索关键字</b>:系统logo支持定制化&nbsp;&nbsp;<b>需求产生原因</b>:中车项目工单-需要替换修改密码页面的logo&nbsp;&nbsp;<b>需求概述</b>:目前系统多个场景中(登录页面、登录loading页面、浏览器标签页图标、修改密码等页面),涉及客户提出修改logo的个性化需求。\n私有云场景已经支持配置的页面有:登录页面、浏览器标签图标。\n配置方式如下:https://help.cloudcc.cn/product04/si-you-yun-ti-huan-deng-lu-ye-logo/\n\n本次需求主要涉及以下两点\n1. 针对私有云,允许替换“修改密码页面“的logo\n2. 评估替换Logo的能力是否提供给公有云客户,允许管理员在后台进行配置(包括国内黑洞环境、海外环境等)\n&nbsp;&nbsp;"
24
+ },
25
+ {
26
+ "actor": "龚俊杰",
27
+ "approveurl": "0",
28
+ "objname": "20251230-R021",
29
+ "prefix": "b70",
30
+ "hisid": "2025F4A6F6CC206RC001",
31
+ "objid": "b702025BE1EDA63YWDIc",
32
+ "isInsertApproval": "false",
33
+ "insertApprovalWorkitemid": null,
34
+ "objtype": "产品需求研发报备记录",
35
+ "workItemid": "20255C69AFA56A0HE5zq",
36
+ "actdate": "2025-12-30 14:03",
37
+ "currentactor": null,
38
+ "zhaiyao": "<b>创建人</b>:龚俊杰&nbsp;&nbsp;<b>创建时间</b>:2025-12-30 14:02:56&nbsp;&nbsp;<b>原始需求资料文档</b>:&nbsp;&nbsp;<b>功能检索关键字</b>:H5端-针对文件字段的预览功能优化&nbsp;&nbsp;<b>需求产生原因</b>:厦门长塑项目反馈工单:202512A1050DF——“APP支持在线预览文件。H5希望可以实现在线预览文件”&nbsp;&nbsp;<b>需求概述</b>:完善H5端的多个页面,对于文件类型字段的预览支持&nbsp;&nbsp;"
39
+ },
40
+ {
41
+ "actor": "山长鲁",
42
+ "approveurl": "0",
43
+ "objname": "20251229-R019",
44
+ "prefix": "b70",
45
+ "hisid": "202579DBD580BC7RM001",
46
+ "objid": "b702025E640AD5CBlHm8",
47
+ "isInsertApproval": "false",
48
+ "insertApprovalWorkitemid": null,
49
+ "objtype": "产品需求研发报备记录",
50
+ "workItemid": "2025B7C27C8A70EOqUhm",
51
+ "actdate": "2025-12-29 18:40",
52
+ "currentactor": null,
53
+ "zhaiyao": "<b>创建人</b>:山长鲁&nbsp;&nbsp;<b>创建时间</b>:2025-12-29 18:40:23&nbsp;&nbsp;<b>原始需求资料文档</b>:&nbsp;&nbsp;<b>功能检索关键字</b>:移动端AI助手、移动端智能体、会话式移动端应用&nbsp;&nbsp;<b>需求产生原因</b>:公司 AI 专项会议中,提出需要探索并落地面向移动端的 AI 助手形态,以提升平台在移动场景下的智能化水平和用户使用效率。\n当前移动端功能以传统页面导航和菜单操作为主,随着 AI 技术在自然语言理解和意图识别方面的成熟,有条件通过会话式交互方式,对现有移动端使用架构模式进行重构,从而实现“以对话驱动操作”的新型交互体验,提升产品竞争力与用户体验。&nbsp;&nbsp;<b>需求概述</b>:本需求拟建设一个纯会话式的移动端 AI 助手应用,以会话作为唯一或核心交互入口,用户通过自然语言与 AI 交互,由 AI 理解用户意图并驱动移动端页面跳转和功能访问。\n阶段一重点目标包括:\n· 支持基于用户会话语义,自动识别业务意图,并跳转至对应的移动端功能页面,例如“查看最近的审批任务”可直接跳转至审批列表页面;\n· 支持对象列表页面的智能开启能力,通过查询系统中已有的对象名称与对象标签信息提供给 AI,由 AI 判断用户语义是否与对象相关;\n· 当识别为对象相关操作时,返回并使用对应的对象 API 名称(如 account),实现对象列表页的自动跳转;\n通过会话驱动页面跳转,减少用户手动查找与多级操作步骤,为后续扩展对象操作、数据创建等能力奠定基础。&nbsp;&nbsp;"
54
+ },
55
+ {
56
+ "actor": "龚俊杰",
57
+ "approveurl": "0",
58
+ "objname": "20251229-R018",
59
+ "prefix": "b70",
60
+ "hisid": "2025A1BF1605A9Aam001",
61
+ "objid": "b702025EC0F8DE7jbhW3",
62
+ "isInsertApproval": "false",
63
+ "insertApprovalWorkitemid": null,
64
+ "objtype": "产品需求研发报备记录",
65
+ "workItemid": "20250639DB427E1ZTsEf",
66
+ "actdate": "2025-12-29 17:01",
67
+ "currentactor": null,
68
+ "zhaiyao": "<b>创建人</b>:龚俊杰&nbsp;&nbsp;<b>创建时间</b>:2025-12-29 16:48:21&nbsp;&nbsp;<b>原始需求资料文档</b>:&nbsp;&nbsp;<b>功能检索关键字</b>:APP端针对选项列表字段的依赖关系优化&nbsp;&nbsp;<b>需求产生原因</b>:太重项目反馈工单:2025128424663\nAPP端无法像PC的新建编辑页一致。修改控制字段后,依赖字段产生相对应变化,比如清空、自动回填、禁用等&nbsp;&nbsp;<b>需求概述</b>:完善移动端新建编辑页中,选项列表字段的依赖字段及控制字段交互逻辑&nbsp;&nbsp;"
69
+ },
70
+ {
71
+ "actor": "毕于尚",
72
+ "approveurl": "0",
73
+ "objname": "2025-00388",
74
+ "prefix": "b78",
75
+ "hisid": "2025F9C540FB103l0001",
76
+ "objid": "b7820250560B4C5h03Xf",
77
+ "isInsertApproval": "false",
78
+ "insertApprovalWorkitemid": null,
79
+ "objtype": "升级计划",
80
+ "workItemid": "2025FC406581709wWOq6",
81
+ "actdate": "2025-12-26 16:52",
82
+ "currentactor": null,
83
+ "zhaiyao": "<b>创建时间</b>:2025-12-26 16:44:30&nbsp;&nbsp;<b>升级状态</b>:升级审核&nbsp;&nbsp;<b>升级须知</b>:海外正式更新\nmain-web:max-18.6.R18\nsetup-web:max-18.6.R16\ndevconsole-web:max-18.6.R6\nmain-svc:max-18.6.R21\nsetup-svc:max-18.6.R13\napi-svc:max-18.6.R7\n&nbsp;&nbsp;<b>升级说明</b>:https://chandao.cloudcc.cn/index.php?m=execution&f=bug&executionID=333&nbsp;&nbsp;"
84
+ },
85
+ {
86
+ "actor": "毕于尚",
87
+ "approveurl": "0",
88
+ "objname": "2025-00387",
89
+ "prefix": "b78",
90
+ "hisid": "2025210192A5EB3ye000",
91
+ "objid": "b7820250DE51A9EVTHeJ",
92
+ "isInsertApproval": "false",
93
+ "insertApprovalWorkitemid": null,
94
+ "objtype": "升级计划",
95
+ "workItemid": "202513208731A2Bp1Dud",
96
+ "actdate": "2025-12-16 19:57",
97
+ "currentactor": null,
98
+ "zhaiyao": "<b>创建人</b>:毕于尚&nbsp;&nbsp;<b>升级状态</b>:进入升级队列&nbsp;&nbsp;<b>升级须知</b>:海外正式更新\nsetup-svc:max-18.6.R11\nsetup-web:max-18.6.R15\n&nbsp;&nbsp;<b>升级说明</b>:https://chandao.cloudcc.cn/index.php?m=execution&f=bug&executionID=330&nbsp;&nbsp;<b>升级负责人</b>:毕于尚&nbsp;&nbsp;<b>预计升级开始时间</b>:2025-12-16 14:06:41&nbsp;&nbsp;<b>实际升级时间</b>:&nbsp;&nbsp;"
99
+ },
100
+ {
101
+ "actor": "龚俊杰",
102
+ "approveurl": "0",
103
+ "objname": "junjtest",
104
+ "prefix": "003",
105
+ "hisid": "2025984B4BB99BBFD000",
106
+ "objid": "00320224B780A24hm3uz",
107
+ "isInsertApproval": "false",
108
+ "insertApprovalWorkitemid": null,
109
+ "objtype": "联系人",
110
+ "workItemid": "2025325C60A1341F7evZ",
111
+ "actdate": "2025-12-12 11:26",
112
+ "currentactor": null,
113
+ "zhaiyao": "<b>联系人姓名</b>:junjtest&nbsp;&nbsp;<b>办公电话</b>:&nbsp;&nbsp;<b>备注</b>:&nbsp;&nbsp;<b>客户名称</b>:北京神州云动内部系统DEMO环境挂载专用&nbsp;&nbsp;"
114
+ },
115
+ {
116
+ "actor": "郑岩",
117
+ "approveurl": "0",
118
+ "objname": "龚俊杰-2025Q4",
119
+ "prefix": "a49",
120
+ "hisid": "2025369F601ADFANQ000",
121
+ "objid": "a49202502D6C2E0xFjUd",
122
+ "isInsertApproval": "false",
123
+ "insertApprovalWorkitemid": null,
124
+ "objtype": "月度KPI",
125
+ "workItemid": "20253D75CA83B97IxXTC",
126
+ "actdate": "2025-12-09 14:26",
127
+ "currentactor": null,
128
+ "zhaiyao": "<b>考核关键词</b>:龚俊杰-2025Q4&nbsp;&nbsp;<b>考核季度</b>:Q4&nbsp;&nbsp;<b>考核月</b>:11&nbsp;&nbsp;<b>被考核人</b>:龚俊杰&nbsp;&nbsp;<b>被考核人审批状态</b>:审批通过&nbsp;&nbsp;<b>得分最终审批状态</b>:审核中&nbsp;&nbsp;<b>月度核心任务</b>:1.CloudCC产品知识库完善推广\n2.黑洞项目任务\n3.产品研发任务推进\n4.客户支持响应\n&nbsp;&nbsp;<b>目标一</b>:1.CloudCC产品知识库完善推广&nbsp;&nbsp;<b>目标一【得分】</b>:15.00&nbsp;&nbsp;<b>目标一占比</b>:20.0%&nbsp;&nbsp;<b>目标一评分依据</b>:CloudCC产品知识库完善推广&nbsp;&nbsp;<b>目标二</b>:2.黑洞项目任务\n&nbsp;&nbsp;<b>目标二【得分】</b>:27.00&nbsp;&nbsp;<b>目标二占比</b>:30.0%&nbsp;&nbsp;<b>目标二评分依据</b>:按要求完成黑洞项目任务&nbsp;&nbsp;<b>目标三</b>:3.产品研发任务推进&nbsp;&nbsp;<b>目标三【得分】</b>:27.00&nbsp;&nbsp;<b>目标三占比</b>:30.0%&nbsp;&nbsp;<b>目标三评分依据</b>:推进研发任务按期按质量要求完成&nbsp;&nbsp;<b>目标四</b>:4.客户支持响应&nbsp;&nbsp;<b>目标四【得分】</b>:20.00&nbsp;&nbsp;<b>目标四占比</b>:20.0%&nbsp;&nbsp;<b>目标四评分依据</b>:响应率100%&nbsp;&nbsp;"
129
+ },
130
+ {
131
+ "actor": "毕于尚",
132
+ "approveurl": "0",
133
+ "objname": "2025-00384",
134
+ "prefix": "b78",
135
+ "hisid": "20257AC2948FC7DT0001",
136
+ "objid": "b782025658646CF7nmCt",
137
+ "isInsertApproval": "false",
138
+ "insertApprovalWorkitemid": null,
139
+ "objtype": "升级计划",
140
+ "workItemid": "20251AEC3999AFA9LZTk",
141
+ "actdate": "2025-11-13 13:43",
142
+ "currentactor": null,
143
+ "zhaiyao": "<b>创建时间</b>:2025-11-13 13:42:59&nbsp;&nbsp;<b>升级状态</b>:升级审核&nbsp;&nbsp;<b>升级须知</b>:更新公有云灰度域(lightning-web、main-api、apiservice、setup-web、setup-svc、H5、devconsole-web、devconsole-svc、main-app)&nbsp;&nbsp;<b>升级说明</b>:https://alidocs.dingtalk.com/i/nodes/7NkDwLng8ZlrXordTzBkRq3AVKMEvZBY?utm_scene=person_space&nbsp;&nbsp;"
144
+ },
145
+ {
146
+ "actor": "龚俊杰",
147
+ "approveurl": "0",
148
+ "objname": "2025-00382",
149
+ "prefix": "b78",
150
+ "hisid": "2025A01E6B8E8CBVD000",
151
+ "objid": "b782025EC6FD3E9QCcRf",
152
+ "isInsertApproval": "false",
153
+ "insertApprovalWorkitemid": null,
154
+ "objtype": "升级计划",
155
+ "workItemid": "20253354F387596Ezkc0",
156
+ "actdate": "2025-10-30 13:53",
157
+ "currentactor": null,
158
+ "zhaiyao": "<b>创建人</b>:龚俊杰&nbsp;&nbsp;<b>升级状态</b>:进入升级队列&nbsp;&nbsp;<b>升级须知</b>:更新海外环境版本至CloudCC Max-18.9\n问题清单可查看禅道:\n2025-10/17海外环境缺陷迭代 https://chandao.cloudcc.cn/index.php?m=execution&f=bug&executionID=315&nbsp;&nbsp;<b>升级说明</b>:https://alidocs.dingtalk.com/i/nodes/KGZLxjv9VGj0xn05S4A40yQmW6EDybno&nbsp;&nbsp;<b>升级负责人</b>:毕于尚&nbsp;&nbsp;<b>预计升级开始时间</b>:2025-10-22 22:00:00&nbsp;&nbsp;<b>实际升级时间</b>:&nbsp;&nbsp;"
159
+ }
160
+ ],
161
+ "allpage": 3,
162
+ "total": 10
163
+ }
164
+ */
165
+ const { postClass } = require("../../utils/http");
166
+ const { getPackageJson } = require("../../utils/config");
167
+
168
+ async function get(argvs, isMcp = false) {
169
+ try {
170
+ const path = argvs[2] || process.cwd();
171
+ // 从参数中解析查询条件,如果传入的是JSON字符串则解析,否则使用默认值
172
+ let queryParams = {};
173
+ if (argvs[3]) {
174
+ try {
175
+ queryParams = typeof argvs[3] === 'string' ? JSON.parse(decodeURI(argvs[3])) : argvs[3];
176
+ } catch (e) {
177
+ // 如果不是JSON,可能是单个对象ID参数(向后兼容)
178
+ queryParams = { related: argvs[3] };
179
+ }
180
+ }
181
+
182
+ const config = await getPackageJson(path);
183
+
184
+ if (!config || !config.accessToken) {
185
+ throw new Error('配置未找到或 accessToken 缺失,请检查配置文件');
186
+ }
187
+
188
+ // 构建请求体,使用默认值或传入的参数
189
+ const requestBody = {
190
+ approvalProjectType: queryParams.approvalProjectType || "0",
191
+ approvalProcessStatus: queryParams.approvalProcessStatus || "",
192
+ startTime: queryParams.startTime || "",
193
+ endTime: queryParams.endTime || "",
194
+ actor: queryParams.actor || "",
195
+ related: queryParams.related || "",
196
+ type: queryParams.type || "",
197
+ pageNum: queryParams.pageNum || 1,
198
+ pageSize: queryParams.pageSize || 10
199
+ };
200
+
201
+ // 调用接口获取待审批记录
202
+ const url = `${config.apiSvc}/api/approval/getAllApprovalHistoryPendingList`;
203
+ const response = await postClass(url, requestBody, config.accessToken);
204
+
205
+ if (response.result) {
206
+ const { list = [], zylist = [], allpage } = response.data;
207
+
208
+ // 创建摘要映射表,以 id 为 key
209
+ const zhaiyaoMap = {};
210
+ zylist.forEach(item => {
211
+ zhaiyaoMap[item.id] = item.zhaiyao;
212
+ });
213
+
214
+ // 将摘要信息匹配到对应的审批记录中
215
+ const enrichedList = list.map(record => {
216
+ const zhaiyao = zhaiyaoMap[record.workItemid] || null;
217
+ return {
218
+ ...record,
219
+ zhaiyao: zhaiyao
220
+ };
221
+ });
222
+
223
+ // 构建返回数据
224
+ const result = {
225
+ list: enrichedList,
226
+ allpage: allpage,
227
+ total: list.length
228
+ };
229
+
230
+ if (!isMcp) {
231
+ console.log(JSON.stringify(result, null, 2));
232
+ }
233
+
234
+ return result;
235
+ } else {
236
+ throw new Error('获取待审批记录失败: ' + (response.returnInfo || response.message || '未知错误'));
237
+ }
238
+ } catch (error) {
239
+ console.error("调用接口出错:", error);
240
+ throw error;
241
+ }
242
+ }
243
+
244
+ module.exports = get;
245
+
@@ -0,0 +1,11 @@
1
+ const cc = {}
2
+ cc.get = require("./get")
3
+ cc.approve = require("./approve")
4
+ cc.reject = require("./reject")
5
+
6
+ function main(action, argvs) {
7
+ cc[action](argvs)
8
+ }
9
+
10
+ module.exports = main;
11
+
@@ -0,0 +1,105 @@
1
+ /**
2
+ * 审批通过记录
3
+ * @param {string} argvs - 参数数组
4
+ * @param {boolean} isMcp - 是否为 MCP 调用
5
+ */
6
+
7
+ /**
8
+ * {
9
+ "data": "[{\"id\":\"b702025C481E894hk70F\"}]",
10
+ "relatedId": "b702025C481E894hk70F",
11
+ "comments": "",
12
+ "workItemId": "20257F03BEC683DGLibO",
13
+ "actionType": "Rejected",
14
+ "objectApiName": "productuplist",
15
+ "stepId": ""
16
+ }
17
+ */
18
+ const { postClass } = require("../../utils/http");
19
+ const { getPackageJson } = require("../../utils/config");
20
+
21
+ async function reject(argvs, isMcp = false) {
22
+ try {
23
+ const path = argvs[2] || process.cwd();
24
+ // 从参数中解析审批信息,如果传入的是JSON字符串则解析,否则使用旧格式
25
+ let approvalParams = {};
26
+ if (argvs[3]) {
27
+ try {
28
+ approvalParams = typeof argvs[3] === 'string' ? JSON.parse(decodeURI(argvs[3])) : argvs[3];
29
+ } catch (e) {
30
+ // 如果不是JSON,使用旧格式(向后兼容)
31
+ approvalParams = {
32
+ workItemId: argvs[3],
33
+ relatedId: argvs[4] || argvs[3],
34
+ comment: argvs[5] || '',
35
+ objectApiName: argvs[6] || ''
36
+ };
37
+ }
38
+ }
39
+
40
+ const {
41
+ relatedId, workItemId, comments
42
+ } = approvalParams;
43
+
44
+ const config = await getPackageJson(path);
45
+
46
+ if (!config || !config.accessToken) {
47
+ throw new Error('配置未找到或 accessToken 缺失,请检查配置文件');
48
+ }
49
+ // 调用接口审批通过记录
50
+ const getPermissionById = await postClass(
51
+ `${config.apiSvc}/api/objectdetail/getPermissionById`,
52
+ { id: relatedId },
53
+ config.accessToken);
54
+ const { objectApi } = getPermissionById.data;
55
+
56
+ // 构建请求体
57
+ const requestBody = {
58
+ data: JSON.stringify([{ id: relatedId }]),
59
+ relatedId: relatedId,
60
+ comments: comments,
61
+ workItemId: workItemId,
62
+ actionType: 'Rejected',
63
+ objectApiName: objectApi,
64
+ };
65
+
66
+ // 调用接口审批通过记录
67
+ const url = `${config.apiSvc}/api/approval/updateApprovalProcessOperation`;
68
+
69
+ let response;
70
+ try {
71
+ response = await postClass(url, requestBody, config.accessToken);
72
+ } catch (error) {
73
+ // 处理 HTTP 错误(如 404)
74
+ if (error.response) {
75
+ const status = error.response.status;
76
+ const statusText = error.response.statusText;
77
+ const errorData = error.response.data || {};
78
+ throw new Error(`接口请求失败 (${status} ${statusText}): ${errorData.message || errorData.error || '未知错误'}`);
79
+ } else if (error.request) {
80
+ throw new Error('请求发送失败,请检查网络连接');
81
+ } else {
82
+ throw new Error('请求配置错误: ' + error.message);
83
+ }
84
+ }
85
+
86
+ if (response.result) {
87
+ if (!isMcp) {
88
+ console.log('审批拒绝成功:', JSON.stringify(response, null, 2));
89
+ }
90
+ return {
91
+ success: true,
92
+ message: response.returnInfo || '审批拒绝成功',
93
+ data: response.data
94
+ };
95
+ } else {
96
+ throw new Error('审批拒绝失败: ' + (response.returnInfo || response.message || '未知错误'));
97
+ }
98
+ } catch (error) {
99
+ console.error("调用接口出错:", error);
100
+ throw error;
101
+ }
102
+ }
103
+
104
+ module.exports = reject;
105
+
@@ -0,0 +1,51 @@
1
+ const { postClass } = require("../../utils/http")
2
+ const { getPackageJson } = require("../../utils/config")
3
+
4
+ async function get(argvs) {
5
+ try {
6
+ let path = argvs[2]
7
+ let config = await getPackageJson(path);
8
+
9
+ // 调用接口获取自定义对象页面信息
10
+ let response = await postClass(
11
+ config.setupSvc + "/api/customObject/newPage",
12
+ {
13
+ "id": ""
14
+ },
15
+ config.accessToken
16
+ )
17
+
18
+ // 检查响应是否成功
19
+ if (response.result) {
20
+ // 提取角色列表数据
21
+ let profileList = response.data.objList.map((item) => {
22
+ return {
23
+ id: item.id,
24
+ name: item.profilename,
25
+ description: item.description,
26
+ isCustom: item.isCustom,
27
+ type: item.type,
28
+ createdate: item.createdate,
29
+ lastmodifydate: item.lastmodifydate
30
+ }
31
+ })
32
+ return {
33
+ success: true,
34
+ data: profileList,
35
+ iscreatperm: response.data.iscreatperm,
36
+ profileInfo: response.data.profileInfoSet
37
+ }
38
+ } else {
39
+ console.error("获取数据失败:", response.returnInfo);
40
+ return {
41
+ success: false,
42
+ message: response.returnInfo
43
+ }
44
+ }
45
+ } catch (error) {
46
+ console.error("调用接口出错:", error);
47
+ throw error;
48
+ }
49
+ }
50
+
51
+ module.exports = get;
@@ -0,0 +1,7 @@
1
+ const cc = {}
2
+ cc.get = require("./get")
3
+ function main(action, argvs) {
4
+ cc[action](argvs)
5
+ }
6
+
7
+ module.exports = main;
package/src/config/get.js CHANGED
@@ -3,7 +3,7 @@ const { getPackageJson } = require("../../utils/config.js")
3
3
 
4
4
  async function get(projectPath = process.cwd()) {
5
5
  const config = await getPackageJson(projectPath);
6
- console.log(config);
6
+ console.error(config);
7
7
  }
8
8
 
9
9
  module.exports = get;