cloudcc-cli 2.2.5 → 2.2.7
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/.cloudcc-cache.json +38 -0
- package/README.md +1435 -522
- package/bin/cc.js +7 -2
- package/bin/index.js +4 -0
- package/java/com/cloudcc/core/BaseException.java +100 -0
- package/java/com/cloudcc/core/BusiException.java +43 -0
- package/java/com/cloudcc/core/CCService.java +3 -1
- package/java/com/cloudcc/core/StringUtils.java +7 -0
- package/java/com/cloudcc/core/TimeUtil.java +33 -0
- package/java/com/cloudcc/core/UserInfo.java +9 -0
- package/package.json +7 -1
- package/pom.xml +1 -1
- package/skill/BACKEND_CODE.md +114 -0
- package/skill/CLI_CHEATSHEET.md +90 -0
- package/skill/INSTALL_AND_BOOTSTRAP.md +59 -0
- package/skill/OBJECTS_AND_FIELDS.md +120 -0
- package/skill/REQUIREMENTS_BREAKDOWN.md +98 -0
- package/skill/SKILL.md +33 -0
- package/skill/VUE_CUSTOM_COMPONENT.md +50 -0
- package/src/api/backend-sdk-java.md +427 -0
- package/src/api/ccdk-sdk.md +1039 -0
- package/src/application/create.js +114 -0
- package/src/application/get.js +13 -0
- package/src/application/index.js +8 -0
- package/src/classes/doc.js +486 -0
- package/src/classes/index.js +1 -0
- package/src/mcp/cliRunner.js +61 -0
- package/src/mcp/index.js +84 -12
- package/src/mcp/readme.md +6 -3
- package/src/mcp/tools/Application Creator/handler.js +78 -0
- package/src/mcp/tools/Approval/handler.js +34 -151
- package/src/mcp/tools/Class Creator/handler.js +18 -15
- package/src/mcp/tools/Class Detail Retriever/handler.js +8 -9
- package/src/mcp/tools/Class Editor Guide/handler.js +5 -19
- package/src/mcp/tools/Class List Retriever/handler.js +8 -3
- package/src/mcp/tools/Class Publisher/handler.js +7 -9
- package/src/mcp/tools/Class Puller/handler.js +6 -65
- package/src/mcp/tools/Client Script Detail Retriever/handler.js +12 -18
- package/src/mcp/tools/Client Script Editor Guide/handler.js +9 -605
- package/src/mcp/tools/Client Script List Retriever/handler.js +30 -33
- package/src/mcp/tools/Client Script Publisher/handler.js +12 -11
- package/src/mcp/tools/Client Script Puller/handler.js +23 -30
- package/src/mcp/tools/CloudCC Development Overview/handler.js +11 -5
- package/src/mcp/tools/Component Creator/handler.js +12 -11
- package/src/mcp/tools/Component Detail Retriever/handler.js +12 -9
- package/src/mcp/tools/Component Editor Guide/handler.js +5 -22
- package/src/mcp/tools/Component List Retriever/handler.js +21 -18
- package/src/mcp/tools/Component Publisher/handler.js +25 -3
- package/src/mcp/tools/Component Puller/handler.js +13 -16
- package/src/mcp/tools/Dev Environment Creator/handler.js +5 -72
- package/src/mcp/tools/Dev Environment Validator/handler.js +5 -66
- package/src/mcp/tools/Developer Key Setup Guide/handler.js +11 -20
- package/src/mcp/tools/JSP Migrator/handler.js +842 -0
- package/src/mcp/tools/Menu Creator/handler.js +86 -0
- package/src/mcp/tools/Object Creator/handler.js +14 -6
- package/src/mcp/tools/Object Fields Creator/handler.js +9 -10
- package/src/mcp/tools/Object Fields Retriever/handler.js +6 -3
- package/src/mcp/tools/Object List Retriever/handler.js +10 -7
- package/src/mcp/tools/Scheduled Class Creator/handler.js +12 -16
- package/src/mcp/tools/Scheduled Class Detail Retriever/handler.js +7 -9
- package/src/mcp/tools/Scheduled Class List Retriever/handler.js +21 -23
- package/src/mcp/tools/Scheduled Class Publisher/handler.js +7 -9
- package/src/mcp/tools/Scheduled Class Puller/handler.js +6 -70
- package/src/mcp/tools/Trigger Creator/handler.js +12 -20
- package/src/mcp/tools/Trigger Detail Retriever/handler.js +7 -9
- package/src/mcp/tools/Trigger Editor Guide/handler.js +10 -35
- package/src/mcp/tools/Trigger List Retriever/handler.js +12 -4
- package/src/mcp/tools/Trigger Publisher/handler.js +8 -11
- package/src/mcp/tools/Trigger Puller/handler.js +12 -17
- package/src/menu/common.js +16 -0
- package/src/menu/create-object.js +94 -0
- package/src/menu/create-page.js +108 -0
- package/src/menu/create-script.js +108 -0
- package/src/menu/create-site.js +108 -0
- package/src/menu/create.js +54 -0
- package/src/menu/index.js +7 -0
- package/src/plugin/doc.js +801 -0
- package/src/plugin/index.js +1 -0
- package/src/plugin/pull.js +3 -0
- package/src/project/doc.js +378 -0
- package/src/project/index.js +1 -0
- package/src/script/doc.js +259 -0
- package/src/script/index.js +1 -0
- package/src/timer/index.js +1 -0
- package/src/triggers/doc.js +342 -0
- package/src/triggers/index.js +5 -0
- package/target/classes/com/cloudcc/core/BaseException.class +0 -0
- package/target/classes/com/cloudcc/core/BusiException.class +0 -0
- package/target/classes/com/cloudcc/core/CCService.class +0 -0
- package/target/classes/com/cloudcc/core/StringUtils.class +0 -0
- package/target/classes/com/cloudcc/core/TimeUtil.class +0 -0
- package/target/classes/com/cloudcc/core/UserInfo.class +0 -0
- package/template/lib/ccopenapi-0.0.4.jar +0 -0
- package/test/application.cli.test.js +30 -0
- package/test/classes.cli.test.js +121 -0
- package/test/fields.cli.test.js +69 -0
- package/test/mcp.cli.test.js +21 -0
- package/test/menu.cli.test.js +41 -0
- package/test/object.cli.test.js +64 -0
- package/test/plugin.cli.test.js +109 -0
- package/test/script.cli.test.js +101 -0
- package/test/timer.cli.test.js +107 -0
- package/test/trigger.cli.test.js +146 -0
- package/.vscode/settings.json +0 -3
- package/bin/mcp-svc.js +0 -13
- package/src/mcp/MCP/345/234/272/346/231/257/346/250/241/346/213/237.md +0 -8
- package/src/mcp/index-sse-svc.js +0 -126
- package/src/mcp/index-streamable-svc.js +0 -180
- package/src/mcp/tools/Class Detail Retriever/prompt.js +0 -37
- package/src/mcp/tools/Class Editor Guide/prompt.js +0 -468
- package/src/mcp/tools/Class Publisher/prompt.js +0 -40
- package/src/mcp/tools/Class Puller/prompt.js +0 -49
- package/src/mcp/tools/Client Script Creator/handler.js +0 -179
- package/src/mcp/tools/CloudCC Development Overview/prompt.js +0 -870
- package/src/mcp/tools/Component Editor Guide/prompt.js +0 -519
- package/src/mcp/tools/Component Publisher/prompt.js +0 -659
- package/src/mcp/tools/Dev Environment Creator/prompt.js +0 -273
- package/src/mcp/tools/Dev Environment Validator/prompt.js +0 -193
- package/src/mcp/tools/Developer Key Setup Guide/prompt.js +0 -71
- package/src/mcp/tools/Object Fields Retriever/prompt.js +0 -10
- package/src/mcp/tools/Object List Retriever/prompt.js +0 -10
- package/src/mcp/tools/ccdk/fetcher.js +0 -18
- package/src/mcp/tools/ccdk/handler.js +0 -98
- package/src/mcp/tools/ccdk/prompt.js +0 -453
- package/target/ccopenapi-0.0.3-classes.jar +0 -0
- package/target/ccopenapi-0.0.3.jar +0 -0
- package/target/maven-archiver/pom.properties +0 -3
- package/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +0 -18
- package/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +0 -19
- package/template/lib/ccopenapi-0.0.3.jar +0 -0
|
@@ -0,0 +1,801 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* plugin 文档统一入口(全量一次性输出)
|
|
3
|
+
*/
|
|
4
|
+
const fs = require("fs");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
|
|
7
|
+
function generateFullMarkdownDoc() {
|
|
8
|
+
const lines = [
|
|
9
|
+
"# CloudCC 自定义组件开发指南",
|
|
10
|
+
"",
|
|
11
|
+
"> 本文档参考官方「自定义组件」说明与示例整理而成:[自定义组件](https://help.cloudcc.cn/product03/zi-ding-yi-zu-jian/)。 ",
|
|
12
|
+
"> 目标:指导开发者从 0 到 1 创建、调试、发布组件,并掌握常用能力(启动型组件、防止样式污染、ECharts、调用自定义类、引入第三方库/图片、日志上报、扩展属性与事件等)。",
|
|
13
|
+
"",
|
|
14
|
+
"---",
|
|
15
|
+
"",
|
|
16
|
+
"## 1. 快速上手:发布第一个组件",
|
|
17
|
+
"",
|
|
18
|
+
"### 1.1 启动项目",
|
|
19
|
+
"",
|
|
20
|
+
"在已完成环境搭建与模板项目创建后(见 `env-setup.md`),启动本地项目:",
|
|
21
|
+
"",
|
|
22
|
+
"```bash",
|
|
23
|
+
"npm run serve",
|
|
24
|
+
"```",
|
|
25
|
+
"",
|
|
26
|
+
"浏览器访问 `http://localhost:8080/`,确认模板项目能正常运行。",
|
|
27
|
+
"",
|
|
28
|
+
"### 1.2 创建组件",
|
|
29
|
+
"",
|
|
30
|
+
"- 新建一个组件文件,**组件名称必须满足 DOM 命名规则**,例如:`cc-com-demo.vue` ",
|
|
31
|
+
" - 推荐遵循:以 `cc-` 开头,后续使用小写单词和 `-` 连接。",
|
|
32
|
+
"",
|
|
33
|
+
"### 1.3 在 `App` 中引入组件",
|
|
34
|
+
"",
|
|
35
|
+
"在模板项目的入口(通常是 `App.vue` 或特定页面组件)中,引入你创建的组件并挂载到页面。",
|
|
36
|
+
"",
|
|
37
|
+
"### 1.4 本地预览",
|
|
38
|
+
"",
|
|
39
|
+
"保持 `npm run serve` 运行,在浏览器中访问 `http://localhost:8080/`,确认组件渲染正常。",
|
|
40
|
+
"",
|
|
41
|
+
"### 1.5 发布组件",
|
|
42
|
+
"",
|
|
43
|
+
"在 VS Code 中:",
|
|
44
|
+
"- 右键点击组件的入口文件(你的自定义组件文件) ",
|
|
45
|
+
"- 选择「发布组件」(CloudCC 插件菜单) ",
|
|
46
|
+
"- 控制台提示发布成功信息,表示组件已经上传至 CloudCC 平台,可在页面编辑器中使用。",
|
|
47
|
+
"",
|
|
48
|
+
"---",
|
|
49
|
+
"",
|
|
50
|
+
"## 2. 启动型组件(loadModel=start)",
|
|
51
|
+
"",
|
|
52
|
+
"> 通过设置 `loadModel: \"start\"`,可以让组件在应用启动时加载,而不是等页面渲染时再加载,适合做布局调整、全局样式/脚本注入、全局监听等。",
|
|
53
|
+
"",
|
|
54
|
+
"### 2.1 场景示例",
|
|
55
|
+
"",
|
|
56
|
+
"示例:使用启动型组件隐藏详情页右侧区域(如联系人详情页右侧活动动态 Card)。",
|
|
57
|
+
"",
|
|
58
|
+
"### 2.2 代码示例",
|
|
59
|
+
"",
|
|
60
|
+
"```vue",
|
|
61
|
+
"<template>",
|
|
62
|
+
" <div></div>",
|
|
63
|
+
"</template>",
|
|
64
|
+
"",
|
|
65
|
+
"<script>",
|
|
66
|
+
"console.log(\"JS 脚本可以写在这里,会在组件加载时自动执行\");",
|
|
67
|
+
"",
|
|
68
|
+
"export default {",
|
|
69
|
+
" data() {",
|
|
70
|
+
" return {",
|
|
71
|
+
" componentInfo: {",
|
|
72
|
+
" // 组件唯一标识,全局唯一",
|
|
73
|
+
" component: \"cloudcc-demo-a\",",
|
|
74
|
+
" // 组件名称,在页面编辑器显示的名字",
|
|
75
|
+
" compName: \"cloudcc-demo-a\",",
|
|
76
|
+
" // 组件描述信息",
|
|
77
|
+
" compDesc: \"组件描述信息\",",
|
|
78
|
+
" // 设置组件在应用启动的时候加载",
|
|
79
|
+
" loadModel: \"start\"",
|
|
80
|
+
" },",
|
|
81
|
+
" isLock: false",
|
|
82
|
+
" };",
|
|
83
|
+
" }",
|
|
84
|
+
"};",
|
|
85
|
+
"</script>",
|
|
86
|
+
"",
|
|
87
|
+
"<style lang=\"scss\">",
|
|
88
|
+
"// 下方样式选择器仅作示例,具体 DOM 结构请以实际页面为准",
|
|
89
|
+
".detail001 {",
|
|
90
|
+
" .main.left.scrollBoxUnique {",
|
|
91
|
+
" width: 100% !important;",
|
|
92
|
+
" }",
|
|
93
|
+
" .layoutSwitchBox {",
|
|
94
|
+
" display: none !important;",
|
|
95
|
+
" }",
|
|
96
|
+
" .right.scrollBoxUnique {",
|
|
97
|
+
" display: none !important;",
|
|
98
|
+
" }",
|
|
99
|
+
"}",
|
|
100
|
+
"</style>",
|
|
101
|
+
"```",
|
|
102
|
+
"",
|
|
103
|
+
"说明:",
|
|
104
|
+
"- 示例中通过类名(如 `.detail001`)与子选择器控制布局与显示/隐藏。 ",
|
|
105
|
+
"- DOM 结构可能随版本调整,**不要依赖不稳定选择器**,必要时配合「正确查找页面元素」最佳实践。",
|
|
106
|
+
"",
|
|
107
|
+
"---",
|
|
108
|
+
"",
|
|
109
|
+
"## 3. 避免样式污染(scoped)",
|
|
110
|
+
"",
|
|
111
|
+
"> Vue 组件中不加 `scoped` 的 `style` 会导致全局样式污染。平台推荐所有组件样式默认使用 `scoped`。",
|
|
112
|
+
"",
|
|
113
|
+
"### 3.1 最小示例",
|
|
114
|
+
"",
|
|
115
|
+
"```vue",
|
|
116
|
+
"<template>",
|
|
117
|
+
" <div></div>",
|
|
118
|
+
"</template>",
|
|
119
|
+
"",
|
|
120
|
+
"<script>",
|
|
121
|
+
"export default {",
|
|
122
|
+
" data() {",
|
|
123
|
+
" return {",
|
|
124
|
+
" componentInfo: {",
|
|
125
|
+
" component: \"cloudcc-demo-a\",",
|
|
126
|
+
" compName: \"cloudcc-demo-a\",",
|
|
127
|
+
" compDesc: \"组件描述信息\"",
|
|
128
|
+
" },",
|
|
129
|
+
" isLock: false",
|
|
130
|
+
" };",
|
|
131
|
+
" }",
|
|
132
|
+
"};",
|
|
133
|
+
"</script>",
|
|
134
|
+
"",
|
|
135
|
+
"<style lang=\"scss\" scoped>",
|
|
136
|
+
"// 因为设置了 scoped,此标签下的样式仅作用于当前组件",
|
|
137
|
+
"</style>",
|
|
138
|
+
"```",
|
|
139
|
+
"",
|
|
140
|
+
"要点:",
|
|
141
|
+
"- `lang=\"scss\"`:推荐统一使用 SCSS",
|
|
142
|
+
"- `scoped`:保证样式只作用在当前组件,避免影响宿主页面与其他组件",
|
|
143
|
+
"",
|
|
144
|
+
"---",
|
|
145
|
+
"",
|
|
146
|
+
"## 4. 使用 ECharts 绘制图表",
|
|
147
|
+
"",
|
|
148
|
+
"> 平台已集成 `echarts@5.3.2`,组件打包时会排除该库,发布到平台后会自动引用平台 ECharts 资源。",
|
|
149
|
+
"",
|
|
150
|
+
"### 4.1 代码示例(区域图)",
|
|
151
|
+
"",
|
|
152
|
+
"```vue",
|
|
153
|
+
"<template>",
|
|
154
|
+
" <div id=\"chartId\" :style=\"{ width: '100%', height: '400px' }\"></div>",
|
|
155
|
+
"</template>",
|
|
156
|
+
"",
|
|
157
|
+
"<script>",
|
|
158
|
+
"import * as echarts from \"echarts\";",
|
|
159
|
+
"",
|
|
160
|
+
"export default {",
|
|
161
|
+
" data() {",
|
|
162
|
+
" return {",
|
|
163
|
+
" componentInfo: {",
|
|
164
|
+
" component: \"cloudcc-demo-a\",",
|
|
165
|
+
" compName: \"cloudcc-demo-a\",",
|
|
166
|
+
" compDesc: \"组件描述信息\"",
|
|
167
|
+
" },",
|
|
168
|
+
" isLock: false,",
|
|
169
|
+
" myChart: null",
|
|
170
|
+
" };",
|
|
171
|
+
" },",
|
|
172
|
+
" mounted() {",
|
|
173
|
+
" this.myChart = echarts.init(document.getElementById(\"chartId\"));",
|
|
174
|
+
" this.myChart.setOption({",
|
|
175
|
+
" // 此处为官方示例配置,可按需裁剪和修改",
|
|
176
|
+
" color: [\"#80FFA5\", \"#00DDFF\", \"#37A2FF\", \"#FF0087\", \"#FFBF00\"],",
|
|
177
|
+
" title: { text: \"Gradient Stacked Area Chart\" },",
|
|
178
|
+
" tooltip: {",
|
|
179
|
+
" trigger: \"axis\",",
|
|
180
|
+
" axisPointer: {",
|
|
181
|
+
" type: \"cross\",",
|
|
182
|
+
" label: { backgroundColor: \"#6a7985\" }",
|
|
183
|
+
" }",
|
|
184
|
+
" },",
|
|
185
|
+
" legend: { data: [\"Line 1\", \"Line 2\", \"Line 3\", \"Line 4\", \"Line 5\"] },",
|
|
186
|
+
" toolbox: { feature: { saveAsImage: {} } },",
|
|
187
|
+
" grid: {",
|
|
188
|
+
" left: \"3%\",",
|
|
189
|
+
" right: \"4%\",",
|
|
190
|
+
" bottom: \"3%\",",
|
|
191
|
+
" containLabel: true",
|
|
192
|
+
" },",
|
|
193
|
+
" xAxis: [{ type: \"category\", boundaryGap: false, data: [\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sun\"] }],",
|
|
194
|
+
" yAxis: [{ type: \"value\" }],",
|
|
195
|
+
" series: [",
|
|
196
|
+
" // 省略部分 series 配置,可按官方示例使用",
|
|
197
|
+
" ]",
|
|
198
|
+
" });",
|
|
199
|
+
" }",
|
|
200
|
+
"};",
|
|
201
|
+
"</script>",
|
|
202
|
+
"",
|
|
203
|
+
"<style lang=\"scss\" scoped>",
|
|
204
|
+
".cc-container {",
|
|
205
|
+
" text-align: center;",
|
|
206
|
+
" padding: 8px;",
|
|
207
|
+
" background: goldenrod;",
|
|
208
|
+
"}",
|
|
209
|
+
"</style>",
|
|
210
|
+
"```",
|
|
211
|
+
"",
|
|
212
|
+
"建议:",
|
|
213
|
+
"- 在 `beforeDestroy`/`unmounted` 生命周期中调用 `this.myChart.dispose()` 释放资源,避免内存泄露。",
|
|
214
|
+
"",
|
|
215
|
+
"---",
|
|
216
|
+
"",
|
|
217
|
+
"## 5. 在组件中调用自定义类(后端接口)",
|
|
218
|
+
"",
|
|
219
|
+
"> 自定义组件调用后台自定义类已封装在 `CCDK` 中,**不要自己拼接 HTTP 地址**,统一使用 `$CCDK.CCCommon.post`。",
|
|
220
|
+
"",
|
|
221
|
+
"### 5.1 代码示例",
|
|
222
|
+
"",
|
|
223
|
+
"```vue",
|
|
224
|
+
"<template>",
|
|
225
|
+
" <div class=\"cc-container\" @click=\"getInfo\">Hello World</div>",
|
|
226
|
+
"</template>",
|
|
227
|
+
"",
|
|
228
|
+
"<script>",
|
|
229
|
+
"export default {",
|
|
230
|
+
" data() {",
|
|
231
|
+
" return {",
|
|
232
|
+
" componentInfo: {",
|
|
233
|
+
" component: \"cloudcc-demo-a\",",
|
|
234
|
+
" compName: \"cloudcc-demo-a\",",
|
|
235
|
+
" compDesc: \"组件描述信息\"",
|
|
236
|
+
" },",
|
|
237
|
+
" isLock: false",
|
|
238
|
+
" };",
|
|
239
|
+
" },",
|
|
240
|
+
" methods: {",
|
|
241
|
+
" getInfo() {",
|
|
242
|
+
" const className = \"AccountClass\";",
|
|
243
|
+
" const methodName = \"selectAccount\";",
|
|
244
|
+
" const params = [",
|
|
245
|
+
" { argType: \"java.lang.String\", argValue: \"hello\" },",
|
|
246
|
+
" { argType: \"java.lang.String\", argValue: \"world\" }",
|
|
247
|
+
" ];",
|
|
248
|
+
"",
|
|
249
|
+
" window.$CCDK.CCCommon.post(className, methodName, params)",
|
|
250
|
+
" .then(res => {",
|
|
251
|
+
" console.log(res);",
|
|
252
|
+
" })",
|
|
253
|
+
" .catch(error => {",
|
|
254
|
+
" console.error(error);",
|
|
255
|
+
" });",
|
|
256
|
+
" }",
|
|
257
|
+
" }",
|
|
258
|
+
"};",
|
|
259
|
+
"</script>",
|
|
260
|
+
"",
|
|
261
|
+
"<style lang=\"scss\" scoped>",
|
|
262
|
+
".cc-container {",
|
|
263
|
+
" text-align: center;",
|
|
264
|
+
" padding: 8px;",
|
|
265
|
+
" background: goldenrod;",
|
|
266
|
+
"}",
|
|
267
|
+
"</style>",
|
|
268
|
+
"```",
|
|
269
|
+
"",
|
|
270
|
+
"要点:",
|
|
271
|
+
"- `className`、`methodName` 必须与 CloudCC 后端自定义类和方法保持一致",
|
|
272
|
+
"- `params` 为按顺序传入的参数数组,每项包括 `argType`(Java 类型)与 `argValue`",
|
|
273
|
+
"",
|
|
274
|
+
"---",
|
|
275
|
+
"",
|
|
276
|
+
"## 6. 引入第三方库与静态资源",
|
|
277
|
+
"",
|
|
278
|
+
"### 6.1 通过 CCDK 注入第三方 JS(示例:jQuery)",
|
|
279
|
+
"",
|
|
280
|
+
"> 平台提供统一 JS 注入能力 `CCDK.CCLoad.loadJs`,无需将第三方库打包进组件。",
|
|
281
|
+
"",
|
|
282
|
+
"```vue",
|
|
283
|
+
"<template>",
|
|
284
|
+
" <div></div>",
|
|
285
|
+
"</template>",
|
|
286
|
+
"",
|
|
287
|
+
"<script>",
|
|
288
|
+
"// 在组件加载前引入 jQuery",
|
|
289
|
+
"window.$CCDK.CCLoad.loadJs(",
|
|
290
|
+
" \"https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.js\"",
|
|
291
|
+
");",
|
|
292
|
+
"",
|
|
293
|
+
"export default {",
|
|
294
|
+
" data() {",
|
|
295
|
+
" return {",
|
|
296
|
+
" componentInfo: {",
|
|
297
|
+
" component: \"cloudcc-demo-a\",",
|
|
298
|
+
" compName: \"cloudcc-demo-a\",",
|
|
299
|
+
" compDesc: \"组件描述信息\",",
|
|
300
|
+
" // 启动加载,确保第三方库在应用启动时就注入",
|
|
301
|
+
" loadModel: \"start\"",
|
|
302
|
+
" },",
|
|
303
|
+
" isLock: false",
|
|
304
|
+
" };",
|
|
305
|
+
" }",
|
|
306
|
+
"};",
|
|
307
|
+
"</script>",
|
|
308
|
+
"```",
|
|
309
|
+
"",
|
|
310
|
+
"注意:",
|
|
311
|
+
"- 建议优先使用平台已集成的库;如需外部 CDN,要考虑可用性与合规性。",
|
|
312
|
+
"",
|
|
313
|
+
"### 6.2 使用静态资源图片",
|
|
314
|
+
"",
|
|
315
|
+
"1. 在「开发者控制台 → 静态资源」中新建并上传图片 ",
|
|
316
|
+
"2. 在列表中复制该资源的访问地址 ",
|
|
317
|
+
"3. 在组件中直接使用该 URL:",
|
|
318
|
+
"",
|
|
319
|
+
"```vue",
|
|
320
|
+
"<template>",
|
|
321
|
+
" <div>",
|
|
322
|
+
" <img",
|
|
323
|
+
" style=\"width: 800px; height: 800px\"",
|
|
324
|
+
" src=\"https://res.lightning.cloudcc.cn/staticResource/org08f84e9c0566eaf0c/202309/16945042351857583.png\"",
|
|
325
|
+
" />",
|
|
326
|
+
" </div>",
|
|
327
|
+
"</template>",
|
|
328
|
+
"",
|
|
329
|
+
"<script>",
|
|
330
|
+
"export default {",
|
|
331
|
+
" data() {",
|
|
332
|
+
" return {",
|
|
333
|
+
" componentInfo: {",
|
|
334
|
+
" component: \"cloudcc-demo-a\",",
|
|
335
|
+
" compName: \"cloudcc-demo-a\",",
|
|
336
|
+
" compDesc: \"组件描述信息\",",
|
|
337
|
+
" loadModel: \"start\"",
|
|
338
|
+
" },",
|
|
339
|
+
" isLock: false",
|
|
340
|
+
" };",
|
|
341
|
+
" }",
|
|
342
|
+
"};",
|
|
343
|
+
"</script>",
|
|
344
|
+
"```",
|
|
345
|
+
"",
|
|
346
|
+
"---",
|
|
347
|
+
"",
|
|
348
|
+
"## 7. 日志上报:CCLog(Info / Error)",
|
|
349
|
+
"",
|
|
350
|
+
"> 为方便排查线上问题,平台提供 `CCDK.CCLog` 上报日志到监控平台,支持 Info 和 Error 等级。",
|
|
351
|
+
"",
|
|
352
|
+
"### 7.1 上报 Info 日志",
|
|
353
|
+
"",
|
|
354
|
+
"```vue",
|
|
355
|
+
"<template>",
|
|
356
|
+
" <div>",
|
|
357
|
+
" <el-button @click=\"reportInfo\">上报 Info 日志</el-button>",
|
|
358
|
+
" </div>",
|
|
359
|
+
"</template>",
|
|
360
|
+
"",
|
|
361
|
+
"<script>",
|
|
362
|
+
"export default {",
|
|
363
|
+
" data() {",
|
|
364
|
+
" return {",
|
|
365
|
+
" componentInfo: {",
|
|
366
|
+
" component: \"cloudcc-demo-a\",",
|
|
367
|
+
" compName: \"cloudcc-demo-a\",",
|
|
368
|
+
" compDesc: \"组件描述信息\",",
|
|
369
|
+
" loadModel: \"start\"",
|
|
370
|
+
" },",
|
|
371
|
+
" isLock: false",
|
|
372
|
+
" };",
|
|
373
|
+
" },",
|
|
374
|
+
" methods: {",
|
|
375
|
+
" reportInfo() {",
|
|
376
|
+
" const logInfo = {",
|
|
377
|
+
" infoType: \"debug\", // 日志级别,如 debug/info 等",
|
|
378
|
+
" serviceName: \"my app\", // 服务/组件名称",
|
|
379
|
+
" infoMessage: \"描述信息\" // 描述内容",
|
|
380
|
+
" };",
|
|
381
|
+
" window.$CCDK.CCLog.reportInfoLog(logInfo);",
|
|
382
|
+
" }",
|
|
383
|
+
" }",
|
|
384
|
+
"};",
|
|
385
|
+
"</script>",
|
|
386
|
+
"```",
|
|
387
|
+
"",
|
|
388
|
+
"### 7.2 上报 Error 日志",
|
|
389
|
+
"",
|
|
390
|
+
"```vue",
|
|
391
|
+
"<template>",
|
|
392
|
+
" <div>",
|
|
393
|
+
" <el-button @click=\"reportError\">上报 Error 日志</el-button>",
|
|
394
|
+
" </div>",
|
|
395
|
+
"</template>",
|
|
396
|
+
"",
|
|
397
|
+
"<script>",
|
|
398
|
+
"export default {",
|
|
399
|
+
" data() {",
|
|
400
|
+
" return {",
|
|
401
|
+
" componentInfo: {",
|
|
402
|
+
" component: \"cloudcc-demo-a\",",
|
|
403
|
+
" compName: \"cloudcc-demo-a\",",
|
|
404
|
+
" compDesc: \"组件描述信息\",",
|
|
405
|
+
" loadModel: \"start\"",
|
|
406
|
+
" },",
|
|
407
|
+
" isLock: false",
|
|
408
|
+
" };",
|
|
409
|
+
" },",
|
|
410
|
+
" methods: {",
|
|
411
|
+
" reportError() {",
|
|
412
|
+
" const logInfo = {",
|
|
413
|
+
" serviceName: \"my app\",",
|
|
414
|
+
" errorMessage: \"错误描述信息\",",
|
|
415
|
+
" printStackTraceInfo: \"堆栈信息或补充说明\"",
|
|
416
|
+
" };",
|
|
417
|
+
" window.$CCDK.CCLog.reportErrorLog(logInfo);",
|
|
418
|
+
" }",
|
|
419
|
+
" }",
|
|
420
|
+
"};",
|
|
421
|
+
"</script>",
|
|
422
|
+
"```",
|
|
423
|
+
"",
|
|
424
|
+
"### 7.3 查看上报日志",
|
|
425
|
+
"",
|
|
426
|
+
"1. 登录 CloudCC 系统 ",
|
|
427
|
+
"2. 点击右上角头像 → 进入「开发者平台」 ",
|
|
428
|
+
"3. 进入对应日志菜单查看上报记录",
|
|
429
|
+
"",
|
|
430
|
+
"---",
|
|
431
|
+
"",
|
|
432
|
+
"## 8. 组件销毁逻辑与性能",
|
|
433
|
+
"",
|
|
434
|
+
"> 由于自定义组件的特殊渲染逻辑,**必须控制组件销毁时机**,避免长时间使用导致内存不断上涨(OOM)。",
|
|
435
|
+
"",
|
|
436
|
+
"### 8.1 默认销毁策略",
|
|
437
|
+
"",
|
|
438
|
+
"- 组件进入后台(用户不可见)时开始倒计时 ",
|
|
439
|
+
"- 倒计时结束后组件被销毁,默认销毁时间约为 20 分钟(具体以平台当前版本为准)",
|
|
440
|
+
"",
|
|
441
|
+
"### 8.2 自定义销毁时间",
|
|
442
|
+
"",
|
|
443
|
+
"在安全信息的高级配置中设置 `destroyTimeout`,所有打包组件共享该配置(单位:毫秒):",
|
|
444
|
+
"",
|
|
445
|
+
"```json",
|
|
446
|
+
"\"devConsoleConfig\": {",
|
|
447
|
+
" \"destroyTimeout\": 1200000",
|
|
448
|
+
"}",
|
|
449
|
+
"```",
|
|
450
|
+
"",
|
|
451
|
+
"建议:",
|
|
452
|
+
"- 对于占用资源较高的组件(如大量 ECharts 实例、轮询等),适当缩短销毁时间,并在组件卸载前主动释放资源。",
|
|
453
|
+
"",
|
|
454
|
+
"---",
|
|
455
|
+
"",
|
|
456
|
+
"## 9. 扩展属性(propObj / propOption)与动态配置",
|
|
457
|
+
"",
|
|
458
|
+
"> 通过扩展属性,组件可以变成「可配置组件」,由页面编辑器在属性面板中采集配置数据,再由组件使用这些配置渲染不同效果。",
|
|
459
|
+
"",
|
|
460
|
+
"### 9.1 基本结构",
|
|
461
|
+
"",
|
|
462
|
+
"```js",
|
|
463
|
+
"data() {",
|
|
464
|
+
" return {",
|
|
465
|
+
" componentInfo: {",
|
|
466
|
+
" component: \"cloudcc-demo-a\",",
|
|
467
|
+
" compName: \"cloudcc-demo-a\",",
|
|
468
|
+
" compDesc: \"组件描述信息\",",
|
|
469
|
+
" loadModel: \"start\"",
|
|
470
|
+
" },",
|
|
471
|
+
" // 扩展属性对象:存放实际属性值",
|
|
472
|
+
" propObj: {",
|
|
473
|
+
" // 自定义属性时,必须写入 id",
|
|
474
|
+
" id: \"\",",
|
|
475
|
+
" src: \"\"",
|
|
476
|
+
" },",
|
|
477
|
+
" // 扩展属性配置:定义属性在页面编辑器中的展示形式",
|
|
478
|
+
" propOption: {",
|
|
479
|
+
" src: {",
|
|
480
|
+
" lable: \"请输入图片地址\",",
|
|
481
|
+
" type: \"input\"",
|
|
482
|
+
" }",
|
|
483
|
+
" },",
|
|
484
|
+
" isLock: false",
|
|
485
|
+
" };",
|
|
486
|
+
"}",
|
|
487
|
+
"```",
|
|
488
|
+
"",
|
|
489
|
+
"### 9.2 在组件中接收扩展属性(elePropObj)",
|
|
490
|
+
"",
|
|
491
|
+
"页面编辑器会将配置好的属性通过 `props.elePropObj` 传入组件:",
|
|
492
|
+
"",
|
|
493
|
+
"```vue",
|
|
494
|
+
"<template>",
|
|
495
|
+
" <div>",
|
|
496
|
+
" <img style=\"width: 800px; height: 800px\" :src=\"elePropObj.src\" />",
|
|
497
|
+
" </div>",
|
|
498
|
+
"</template>",
|
|
499
|
+
"",
|
|
500
|
+
"<script>",
|
|
501
|
+
"export default {",
|
|
502
|
+
" props: {",
|
|
503
|
+
" // 自定义属性对象",
|
|
504
|
+
" elePropObj: {",
|
|
505
|
+
" type: Object,",
|
|
506
|
+
" default: () => ({})",
|
|
507
|
+
" }",
|
|
508
|
+
" },",
|
|
509
|
+
" data() {",
|
|
510
|
+
" return {",
|
|
511
|
+
" componentInfo: {",
|
|
512
|
+
" component: \"cloudcc-demo-a\",",
|
|
513
|
+
" compName: \"cloudcc-demo-a\",",
|
|
514
|
+
" compDesc: \"组件描述信息\",",
|
|
515
|
+
" loadModel: \"start\"",
|
|
516
|
+
" },",
|
|
517
|
+
" propObj: {",
|
|
518
|
+
" id: \"\",",
|
|
519
|
+
" src: \"\"",
|
|
520
|
+
" },",
|
|
521
|
+
" propOption: {",
|
|
522
|
+
" src: {",
|
|
523
|
+
" lable: \"请输入图片地址\",",
|
|
524
|
+
" type: \"input\"",
|
|
525
|
+
" }",
|
|
526
|
+
" },",
|
|
527
|
+
" isLock: false",
|
|
528
|
+
" };",
|
|
529
|
+
" }",
|
|
530
|
+
"};",
|
|
531
|
+
"</script>",
|
|
532
|
+
"```",
|
|
533
|
+
"",
|
|
534
|
+
"### 9.3 `propOption` 常用类型一览",
|
|
535
|
+
"",
|
|
536
|
+
"> 所有配置写在 `data` 的 `propOption` 中,平台会根据 `type` 决定渲染何种采集控件。",
|
|
537
|
+
"",
|
|
538
|
+
"- **输入框**:",
|
|
539
|
+
"",
|
|
540
|
+
"```js",
|
|
541
|
+
"propOption: {",
|
|
542
|
+
" src: {",
|
|
543
|
+
" lable: \"请输入图片地址\",",
|
|
544
|
+
" type: \"input\"",
|
|
545
|
+
" }",
|
|
546
|
+
"}",
|
|
547
|
+
"```",
|
|
548
|
+
"",
|
|
549
|
+
"- **日期选择器**:",
|
|
550
|
+
"",
|
|
551
|
+
"```js",
|
|
552
|
+
"propOption: {",
|
|
553
|
+
" src: {",
|
|
554
|
+
" lable: \"日期选择器\",",
|
|
555
|
+
" type: \"date\"",
|
|
556
|
+
" }",
|
|
557
|
+
"}",
|
|
558
|
+
"```",
|
|
559
|
+
"",
|
|
560
|
+
"- **时间选择器**:",
|
|
561
|
+
"",
|
|
562
|
+
"```js",
|
|
563
|
+
"propOption: {",
|
|
564
|
+
" src: {",
|
|
565
|
+
" lable: \"时间选择器\",",
|
|
566
|
+
" type: \"time\"",
|
|
567
|
+
" }",
|
|
568
|
+
"}",
|
|
569
|
+
"```",
|
|
570
|
+
"",
|
|
571
|
+
"- **图标选择器**:",
|
|
572
|
+
"",
|
|
573
|
+
"```js",
|
|
574
|
+
"propOption: {",
|
|
575
|
+
" src: {",
|
|
576
|
+
" lable: \"图标\",",
|
|
577
|
+
" type: \"icon\"",
|
|
578
|
+
" }",
|
|
579
|
+
"}",
|
|
580
|
+
"```",
|
|
581
|
+
"",
|
|
582
|
+
"- **颜色选择器**:",
|
|
583
|
+
"",
|
|
584
|
+
"```js",
|
|
585
|
+
"propOption: {",
|
|
586
|
+
" src: {",
|
|
587
|
+
" lable: \"颜色\",",
|
|
588
|
+
" type: \"color\"",
|
|
589
|
+
" }",
|
|
590
|
+
"}",
|
|
591
|
+
"```",
|
|
592
|
+
"",
|
|
593
|
+
"- **下拉框**:",
|
|
594
|
+
"",
|
|
595
|
+
"```js",
|
|
596
|
+
"propOption: {",
|
|
597
|
+
" src: {",
|
|
598
|
+
" lable: \"下拉框\",",
|
|
599
|
+
" type: \"option\",",
|
|
600
|
+
" options: [",
|
|
601
|
+
" { value: \"fill\", label: \"fill\" },",
|
|
602
|
+
" { value: \"contain\", label: \"contain\" }",
|
|
603
|
+
" ]",
|
|
604
|
+
" }",
|
|
605
|
+
"}",
|
|
606
|
+
"```",
|
|
607
|
+
"",
|
|
608
|
+
"- **切换器(单选按钮组)**:",
|
|
609
|
+
"",
|
|
610
|
+
"```js",
|
|
611
|
+
"propOption: {",
|
|
612
|
+
" src: {",
|
|
613
|
+
" lable: \"切换器\",",
|
|
614
|
+
" type: \"radioButton\",",
|
|
615
|
+
" options: [",
|
|
616
|
+
" { label: \"default\", value: \"default\" },",
|
|
617
|
+
" { label: \"button\", value: \"button\" }",
|
|
618
|
+
" ]",
|
|
619
|
+
" }",
|
|
620
|
+
"}",
|
|
621
|
+
"```",
|
|
622
|
+
"",
|
|
623
|
+
"- **开关**:",
|
|
624
|
+
"",
|
|
625
|
+
"```js",
|
|
626
|
+
"propOption: {",
|
|
627
|
+
" src: {",
|
|
628
|
+
" lable: \"开关\",",
|
|
629
|
+
" type: \"switch\"",
|
|
630
|
+
" }",
|
|
631
|
+
"}",
|
|
632
|
+
"```",
|
|
633
|
+
"",
|
|
634
|
+
"- **代码编辑框**:",
|
|
635
|
+
"",
|
|
636
|
+
"```js",
|
|
637
|
+
"propOption: {",
|
|
638
|
+
" src: {",
|
|
639
|
+
" lable: \"代码编辑框\",",
|
|
640
|
+
" type: \"code\"",
|
|
641
|
+
" }",
|
|
642
|
+
"}",
|
|
643
|
+
"```",
|
|
644
|
+
"",
|
|
645
|
+
"- **提示信息(带链接)**:",
|
|
646
|
+
"",
|
|
647
|
+
"```js",
|
|
648
|
+
"propOption: {",
|
|
649
|
+
" src: {",
|
|
650
|
+
" lable: \"提示信息\",",
|
|
651
|
+
" type: \"word\",",
|
|
652
|
+
" link: \"https://www.baidu.com\"",
|
|
653
|
+
" }",
|
|
654
|
+
"}",
|
|
655
|
+
"```",
|
|
656
|
+
"",
|
|
657
|
+
"---",
|
|
658
|
+
"",
|
|
659
|
+
"## 10. 自定义事件(events / eventsOption)",
|
|
660
|
+
"",
|
|
661
|
+
"> 通过扩展事件属性,可以让页面配置层注入一段可执行代码,在组件生命周期中回调,适用于少量灵活逻辑(需非常注意安全性与维护成本)。",
|
|
662
|
+
"",
|
|
663
|
+
"### 10.1 数据结构示例",
|
|
664
|
+
"",
|
|
665
|
+
"```js",
|
|
666
|
+
"data() {",
|
|
667
|
+
" return {",
|
|
668
|
+
" componentInfo: {",
|
|
669
|
+
" component: \"test-plugin\",",
|
|
670
|
+
" compName: \"test-plugin\",",
|
|
671
|
+
" compDesc: \"Component description information\"",
|
|
672
|
+
" },",
|
|
673
|
+
" events: {",
|
|
674
|
+
" // 自定义事件:在 created 生命周期执行",
|
|
675
|
+
" myCreated: `function created(self) {",
|
|
676
|
+
" // self 即 this,为当前组件的 Vue 实例",
|
|
677
|
+
" }`",
|
|
678
|
+
" },",
|
|
679
|
+
" eventsOption: {",
|
|
680
|
+
" myCreated: {",
|
|
681
|
+
" lable: \"label.dev.created\",",
|
|
682
|
+
" type: \"code\"",
|
|
683
|
+
" }",
|
|
684
|
+
" },",
|
|
685
|
+
" isLock: false",
|
|
686
|
+
" };",
|
|
687
|
+
"}",
|
|
688
|
+
"```",
|
|
689
|
+
"",
|
|
690
|
+
"### 10.2 在生命周期中执行自定义事件",
|
|
691
|
+
"",
|
|
692
|
+
"```js",
|
|
693
|
+
"created() {",
|
|
694
|
+
" // 将字符串转为函数(eval 需谨慎使用,仅在可信环境启用)",
|
|
695
|
+
" const myCreated = eval(\"(false || \" + this.eleEventObj.myCreated + \")\");",
|
|
696
|
+
" myCreated(this);",
|
|
697
|
+
"}",
|
|
698
|
+
"```",
|
|
699
|
+
"",
|
|
700
|
+
"注意:",
|
|
701
|
+
"- 此模式依赖 `eval`,有潜在安全风险,仅适用于内部受控场景",
|
|
702
|
+
"- 强烈建议对传入的代码做严格访问控制与审计",
|
|
703
|
+
"",
|
|
704
|
+
"---",
|
|
705
|
+
"",
|
|
706
|
+
"## 11. componentInfo 配置说明",
|
|
707
|
+
"",
|
|
708
|
+
"### 11.1 标准配置",
|
|
709
|
+
"",
|
|
710
|
+
"```js",
|
|
711
|
+
"componentInfo: {",
|
|
712
|
+
" // 组件唯一标识,全局唯一:",
|
|
713
|
+
" // 1. 必须使用小写英文",
|
|
714
|
+
" // 2. 由两个及以上单词组成",
|
|
715
|
+
" // 3. 使用 \"-\" 分隔",
|
|
716
|
+
" component: \"cloudcc-demo-01\",",
|
|
717
|
+
"",
|
|
718
|
+
" // 组件名称,在页面编辑器中显示",
|
|
719
|
+
" compName: \"演示使用组件\",",
|
|
720
|
+
"",
|
|
721
|
+
" // 组件描述信息",
|
|
722
|
+
" compDesc: \"组件描述信息\"",
|
|
723
|
+
"}",
|
|
724
|
+
"```",
|
|
725
|
+
"",
|
|
726
|
+
"### 11.2 高级配置:loadModel",
|
|
727
|
+
"",
|
|
728
|
+
"```js",
|
|
729
|
+
"componentInfo: {",
|
|
730
|
+
" // 加载模式,不写时默认 \"lazy\"",
|
|
731
|
+
" // lazy:懒加载,仅在自定义页面实际加载组件时才加载",
|
|
732
|
+
" // start:启动加载,在应用启动时即加载组件",
|
|
733
|
+
" loadModel: \"lazy\"",
|
|
734
|
+
"}",
|
|
735
|
+
"```",
|
|
736
|
+
"",
|
|
737
|
+
"推荐:",
|
|
738
|
+
"- 布局、全局脚本、埋点类组件可使用 `start`",
|
|
739
|
+
"- 普通展示组件默认使用 `lazy`",
|
|
740
|
+
"",
|
|
741
|
+
"---",
|
|
742
|
+
"",
|
|
743
|
+
"## 12. 进阶说明与架构提示",
|
|
744
|
+
"",
|
|
745
|
+
"- 自定义组件的底层实现基于 Web Components,以支持跨框架组件开发与复用。",
|
|
746
|
+
"- 组件编译时,以组件入口文件作为构建入口,而非整个模板项目的 `main.js`:",
|
|
747
|
+
" - `main.js` 作为本地运行模板项目的入口,可按需调整",
|
|
748
|
+
" - 组件发布时,仅与组件入口及其依赖相关",
|
|
749
|
+
"- 引入第三方库时:",
|
|
750
|
+
" - 优先使用平台统一注入方式(如 `CCDK.CCLoad.loadJs`)",
|
|
751
|
+
" - 避免把大体积库直接打包进组件,减小发布包体积,提高加载性能",
|
|
752
|
+
"",
|
|
753
|
+
"---",
|
|
754
|
+
"",
|
|
755
|
+
"## 13. 自定义组件开发 Checklist",
|
|
756
|
+
"",
|
|
757
|
+
"- [ ] 组件文件名与 `componentInfo.component` 命名符合规范(小写 + `-` 分隔,全局唯一)",
|
|
758
|
+
"- [ ] 样式默认使用 `lang=\"scss\" scoped`,避免样式污染",
|
|
759
|
+
"- [ ] 使用平台提供的 `CCDK` 能力调用后端、自定义类、日志上报等,不手写接口 URL",
|
|
760
|
+
"- [ ] 如需第三方库,优先使用 `CCLoad.loadJs` 或平台已集成的库",
|
|
761
|
+
"- [ ] 合理设置 `loadModel`(`lazy`/`start`),避免不必要的启动时加载",
|
|
762
|
+
"- [ ] 如使用 ECharts/定时器/监听等,注意在组件销毁时释放资源",
|
|
763
|
+
"- [ ] 合理使用 `propObj` / `propOption` / `elePropObj` 提升组件可配置性",
|
|
764
|
+
"- [ ] 如启用 `events` 动态代码,确保仅在可信场景使用,并有审计与限制",
|
|
765
|
+
"- [ ] 发布前在本地 `npm run serve` 完整验证主要功能与交互",
|
|
766
|
+
"",
|
|
767
|
+
];
|
|
768
|
+
|
|
769
|
+
const base = lines.join("\n");
|
|
770
|
+
const ccdkPath = path.join(__dirname, "..", "api", "ccdk-sdk.md");
|
|
771
|
+
let ccdkContent = "";
|
|
772
|
+
try {
|
|
773
|
+
ccdkContent = fs.readFileSync(ccdkPath, "utf8");
|
|
774
|
+
} catch (e) {
|
|
775
|
+
ccdkContent = `# CloudCC 前端 SDK(cloudcc-ccdk)使用指南\n\n(未找到文件:${ccdkPath})\n`;
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
return [
|
|
779
|
+
base,
|
|
780
|
+
"",
|
|
781
|
+
"---",
|
|
782
|
+
"",
|
|
783
|
+
"## 附录:CCDK SDK 速查",
|
|
784
|
+
"",
|
|
785
|
+
"> 来源:`src/api/ccdk-sdk.md`",
|
|
786
|
+
"",
|
|
787
|
+
ccdkContent.trim(),
|
|
788
|
+
"",
|
|
789
|
+
].join("\n");
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
function doc() {
|
|
793
|
+
const content = generateFullMarkdownDoc();
|
|
794
|
+
console.log(content);
|
|
795
|
+
return content;
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
// 兼容旧调用方:仍提供同名入口(但都返回全量文档)
|
|
799
|
+
doc.getEditGuide = doc;
|
|
800
|
+
|
|
801
|
+
module.exports = doc;
|