@visualization-hub/dev-mcp 1.0.0
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/README.md +93 -0
- package/bin/viz-dev-mcp.js +2 -0
- package/dist/client/discovery-api.d.ts +17 -0
- package/dist/client/discovery-api.d.ts.map +1 -0
- package/dist/client/discovery-api.js +47 -0
- package/dist/client/discovery-api.js.map +1 -0
- package/dist/client/environment-api.d.ts +3 -0
- package/dist/client/environment-api.d.ts.map +1 -0
- package/dist/client/environment-api.js +13 -0
- package/dist/client/environment-api.js.map +1 -0
- package/dist/client/http.d.ts +7 -0
- package/dist/client/http.d.ts.map +1 -0
- package/dist/client/http.js +38 -0
- package/dist/client/http.js.map +1 -0
- package/dist/client/inspection-api.d.ts +9 -0
- package/dist/client/inspection-api.d.ts.map +1 -0
- package/dist/client/inspection-api.js +30 -0
- package/dist/client/inspection-api.js.map +1 -0
- package/dist/client/transfer-api.d.ts +10 -0
- package/dist/client/transfer-api.d.ts.map +1 -0
- package/dist/client/transfer-api.js +49 -0
- package/dist/client/transfer-api.js.map +1 -0
- package/dist/config.d.ts +12 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +46 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +364 -0
- package/dist/index.js.map +1 -0
- package/dist/templates/template-engine.d.ts +6 -0
- package/dist/templates/template-engine.d.ts.map +1 -0
- package/dist/templates/template-engine.js +350 -0
- package/dist/templates/template-engine.js.map +1 -0
- package/dist/templates/types.d.ts +14 -0
- package/dist/templates/types.d.ts.map +1 -0
- package/dist/templates/types.js +3 -0
- package/dist/templates/types.js.map +1 -0
- package/dist/tools/builder.tool.d.ts +18 -0
- package/dist/tools/builder.tool.d.ts.map +1 -0
- package/dist/tools/builder.tool.js +105 -0
- package/dist/tools/builder.tool.js.map +1 -0
- package/dist/tools/compliance.tool.d.ts +25 -0
- package/dist/tools/compliance.tool.d.ts.map +1 -0
- package/dist/tools/compliance.tool.js +300 -0
- package/dist/tools/compliance.tool.js.map +1 -0
- package/dist/tools/discovery.tools.d.ts +27 -0
- package/dist/tools/discovery.tools.d.ts.map +1 -0
- package/dist/tools/discovery.tools.js +43 -0
- package/dist/tools/discovery.tools.js.map +1 -0
- package/dist/tools/environment.tools.d.ts +91 -0
- package/dist/tools/environment.tools.d.ts.map +1 -0
- package/dist/tools/environment.tools.js +140 -0
- package/dist/tools/environment.tools.js.map +1 -0
- package/dist/tools/inspection.tools.d.ts +29 -0
- package/dist/tools/inspection.tools.d.ts.map +1 -0
- package/dist/tools/inspection.tools.js +42 -0
- package/dist/tools/inspection.tools.js.map +1 -0
- package/dist/tools/scaffolding.tool.d.ts +23 -0
- package/dist/tools/scaffolding.tool.d.ts.map +1 -0
- package/dist/tools/scaffolding.tool.js +70 -0
- package/dist/tools/scaffolding.tool.js.map +1 -0
- package/dist/tools/transfer.tools.d.ts +50 -0
- package/dist/tools/transfer.tools.d.ts.map +1 -0
- package/dist/tools/transfer.tools.js +105 -0
- package/dist/tools/transfer.tools.js.map +1 -0
- package/dist/utils/archive.d.ts +16 -0
- package/dist/utils/archive.d.ts.map +1 -0
- package/dist/utils/archive.js +65 -0
- package/dist/utils/archive.js.map +1 -0
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +22 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.handleCheckSandboxCompliance = handleCheckSandboxCompliance;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
/**
|
|
10
|
+
* check_sandbox_compliance: 自动化对本地工程进行 13 项沙箱与编码合规静态代码扫描
|
|
11
|
+
*/
|
|
12
|
+
async function handleCheckSandboxCompliance(args) {
|
|
13
|
+
const { projectDir } = args;
|
|
14
|
+
if (!projectDir) {
|
|
15
|
+
throw new Error('[参数错误] projectDir 为必填项');
|
|
16
|
+
}
|
|
17
|
+
const absDir = path_1.default.resolve(projectDir);
|
|
18
|
+
if (!fs_1.default.existsSync(absDir)) {
|
|
19
|
+
throw new Error(`[路径错误] 目标工程目录不存在: ${absDir}`);
|
|
20
|
+
}
|
|
21
|
+
// 递归收集所有源代码文件
|
|
22
|
+
const sourceFiles = [];
|
|
23
|
+
function scan(dir) {
|
|
24
|
+
const items = fs_1.default.readdirSync(dir);
|
|
25
|
+
for (const item of items) {
|
|
26
|
+
if (['node_modules', '.git', 'dist'].includes(item))
|
|
27
|
+
continue;
|
|
28
|
+
const full = path_1.default.join(dir, item);
|
|
29
|
+
const stat = fs_1.default.statSync(full);
|
|
30
|
+
if (stat.isDirectory()) {
|
|
31
|
+
scan(full);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const ext = path_1.default.extname(item).toLowerCase();
|
|
35
|
+
if (['.vue', '.ts', '.js', '.less', '.css', '.json'].includes(ext)) {
|
|
36
|
+
const rel = path_1.default.relative(absDir, full).replace(/\\/g, '/');
|
|
37
|
+
sourceFiles.push({
|
|
38
|
+
relPath: rel,
|
|
39
|
+
fullPath: full,
|
|
40
|
+
content: fs_1.default.readFileSync(full, 'utf-8')
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
scan(absDir);
|
|
47
|
+
const checks = [];
|
|
48
|
+
// 1. project.json 完备性检查
|
|
49
|
+
const pjFile = sourceFiles.find((f) => f.relPath === 'project.json');
|
|
50
|
+
if (!pjFile) {
|
|
51
|
+
checks.push({
|
|
52
|
+
id: 'RULE-01',
|
|
53
|
+
name: '组件清单 project.json 完备性',
|
|
54
|
+
status: 'FAIL',
|
|
55
|
+
score: 0,
|
|
56
|
+
message: '缺少必需的 project.json 清单文件',
|
|
57
|
+
fix_suggestion: '在工程根目录下创建 project.json,包含 name, title, pageType 等字段'
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
try {
|
|
62
|
+
const pj = JSON.parse(pjFile.content);
|
|
63
|
+
if (pj.name && pj.title && pj.pageType) {
|
|
64
|
+
checks.push({
|
|
65
|
+
id: 'RULE-01',
|
|
66
|
+
name: '组件清单 project.json 完备性',
|
|
67
|
+
status: 'PASS',
|
|
68
|
+
score: 10,
|
|
69
|
+
message: `project.json 校验通过 (${pj.name} / ${pj.pageType})`
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
checks.push({
|
|
74
|
+
id: 'RULE-01',
|
|
75
|
+
name: '组件清单 project.json 完备性',
|
|
76
|
+
status: 'FAIL',
|
|
77
|
+
score: 3,
|
|
78
|
+
message: 'project.json 缺少 name、title 或 pageType',
|
|
79
|
+
fix_suggestion: '补齐 project.json 必需字段'
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (e) {
|
|
84
|
+
checks.push({
|
|
85
|
+
id: 'RULE-01',
|
|
86
|
+
name: '组件清单 project.json 完备性',
|
|
87
|
+
status: 'FAIL',
|
|
88
|
+
score: 0,
|
|
89
|
+
message: 'project.json 不是合法的 JSON 格式'
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// 2. pointer-events: auto !important 穿透样式检查
|
|
94
|
+
const styleFiles = sourceFiles.filter((f) => f.relPath.endsWith('.less') || f.relPath.endsWith('.css') || f.relPath.endsWith('.vue'));
|
|
95
|
+
const hasPointerEvents = styleFiles.some((f) => f.content.includes('pointer-events') && f.content.includes('auto'));
|
|
96
|
+
if (hasPointerEvents) {
|
|
97
|
+
checks.push({
|
|
98
|
+
id: 'RULE-02',
|
|
99
|
+
name: 'HUD 穿透交互 pointer-events: auto 声明',
|
|
100
|
+
status: 'PASS',
|
|
101
|
+
score: 10,
|
|
102
|
+
message: '样式表中已显式声明 pointer-events: auto !important,保证沙箱底图交互穿透'
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
checks.push({
|
|
107
|
+
id: 'RULE-02',
|
|
108
|
+
name: 'HUD 穿透交互 pointer-events: auto 声明',
|
|
109
|
+
status: 'FAIL',
|
|
110
|
+
score: 0,
|
|
111
|
+
message: '未检测到 pointer-events: auto 声明,HUD 控件可能无法点击或遮挡底图操作',
|
|
112
|
+
fix_suggestion: '在 HUD 外层容器 CSS 中添加 "pointer-events: auto !important;"'
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
// 3. 禁止重复创建底图容器 (#cesiumContainer, id="cesiumContainer" 等)
|
|
116
|
+
const vueFiles = sourceFiles.filter((f) => f.relPath.endsWith('.vue'));
|
|
117
|
+
const violatingContainerFiles = vueFiles.filter((f) => f.content.includes('id="cesiumContainer"') || f.content.includes('id="map"') || f.content.includes('id="three-container"'));
|
|
118
|
+
if (violatingContainerFiles.length === 0) {
|
|
119
|
+
checks.push({
|
|
120
|
+
id: 'RULE-03',
|
|
121
|
+
name: '禁止在 template 中重复创建底图容器',
|
|
122
|
+
status: 'PASS',
|
|
123
|
+
score: 10,
|
|
124
|
+
message: '未发现冗余底图 DOM 容器,严格复用沙箱全局环境'
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
checks.push({
|
|
129
|
+
id: 'RULE-03',
|
|
130
|
+
name: '禁止在 template 中重复创建底图容器',
|
|
131
|
+
status: 'FAIL',
|
|
132
|
+
score: 0,
|
|
133
|
+
message: '在 template 中检测到重复创建底图容器 (如 id="cesiumContainer")',
|
|
134
|
+
fix_suggestion: '删除 template 中的底图容器,沙箱已在底层自动创建 window.viewer / window.map',
|
|
135
|
+
violating_files: violatingContainerFiles.map((f) => f.relPath)
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
// 4. 禁止 Unicode emoji (统一使用 @element-plus/icons-vue)
|
|
139
|
+
const emojiRegex = /[\u{1F300}-\u{1F6FF}\u{1F900}-\u{1F9FF}\u{2600}-\u{26FF}\u{2700}-\u{27BF}]/u;
|
|
140
|
+
const emojiViolations = sourceFiles.filter((f) => !f.relPath.endsWith('.json') && emojiRegex.test(f.content));
|
|
141
|
+
if (emojiViolations.length === 0) {
|
|
142
|
+
checks.push({
|
|
143
|
+
id: 'RULE-04',
|
|
144
|
+
name: '禁止 Unicode emoji,使用 Element Plus 图标',
|
|
145
|
+
status: 'PASS',
|
|
146
|
+
score: 10,
|
|
147
|
+
message: '代码中杜绝了 Unicode emoji,统一使用官方矢量图标'
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
checks.push({
|
|
152
|
+
id: 'RULE-04',
|
|
153
|
+
name: '禁止 Unicode emoji,使用 Element Plus 图标',
|
|
154
|
+
status: 'WARN',
|
|
155
|
+
score: 5,
|
|
156
|
+
message: '检测到代码中包含 Unicode emoji (如 🚀、✅ 等)',
|
|
157
|
+
fix_suggestion: '请替换为 import { VideoPlay, Check, ... } from "@element-plus/icons-vue"',
|
|
158
|
+
violating_files: emojiViolations.map((f) => f.relPath)
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
// 5. 生命周期 onUnmounted 资源销毁与定时器注销
|
|
162
|
+
const logicFiles = sourceFiles.filter((f) => f.relPath.endsWith('.ts') || f.relPath.endsWith('.js') || f.relPath.endsWith('.vue'));
|
|
163
|
+
const hasOnUnmounted = logicFiles.some((f) => f.content.includes('onUnmounted') || f.content.includes('beforeUnmount'));
|
|
164
|
+
if (hasOnUnmounted) {
|
|
165
|
+
checks.push({
|
|
166
|
+
id: 'RULE-05',
|
|
167
|
+
name: 'onUnmounted 资源与定时器销毁钩子',
|
|
168
|
+
status: 'PASS',
|
|
169
|
+
score: 10,
|
|
170
|
+
message: '包含 onUnmounted 生命周期销毁钩子,防止内存泄漏'
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
checks.push({
|
|
175
|
+
id: 'RULE-05',
|
|
176
|
+
name: 'onUnmounted 资源与定时器销毁钩子',
|
|
177
|
+
status: 'WARN',
|
|
178
|
+
score: 4,
|
|
179
|
+
message: '未明确检测到 onUnmounted 清理逻辑',
|
|
180
|
+
fix_suggestion: '在组件卸载时调用 clearInterval / cancelAnimationFrame / viewer.entities.removeAll()'
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
// 6. HUD 控制面板默认位置规范 (左上角 top: 16px; left: 16px)
|
|
184
|
+
const hasTopLeftPos = styleFiles.some((f) => f.content.includes('top:') && f.content.includes('left:'));
|
|
185
|
+
if (hasTopLeftPos) {
|
|
186
|
+
checks.push({
|
|
187
|
+
id: 'RULE-06',
|
|
188
|
+
name: 'HUD 主操作面板统一左上角定位',
|
|
189
|
+
status: 'PASS',
|
|
190
|
+
score: 10,
|
|
191
|
+
message: 'HUD 面板符合左上角布局规范'
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
checks.push({
|
|
196
|
+
id: 'RULE-06',
|
|
197
|
+
name: 'HUD 主操作面板统一左上角定位',
|
|
198
|
+
status: 'WARN',
|
|
199
|
+
score: 6,
|
|
200
|
+
message: '建议 HUD 主面板定位在页面左上角 (top: 16px; left: 16px)'
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
// 7. 数据持久化规范 (使用 localStorage 模拟持久化)
|
|
204
|
+
const hasExternalDb = sourceFiles.some((f) => /http:\/\/localhost:\d+\/api\/db/.test(f.content) || /mongodb:\/\//.test(f.content));
|
|
205
|
+
if (!hasExternalDb) {
|
|
206
|
+
checks.push({
|
|
207
|
+
id: 'RULE-07',
|
|
208
|
+
name: '数据持久化规范 (localStorage 隔离)',
|
|
209
|
+
status: 'PASS',
|
|
210
|
+
score: 10,
|
|
211
|
+
message: '未发现非法外联数据库,符合沙箱持久化规范'
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
checks.push({
|
|
216
|
+
id: 'RULE-07',
|
|
217
|
+
name: '数据持久化规范 (localStorage 隔离)',
|
|
218
|
+
status: 'FAIL',
|
|
219
|
+
score: 0,
|
|
220
|
+
message: '检测到硬编码外部数据库连接串或非法数据接口',
|
|
221
|
+
fix_suggestion: '改用 localStorage 封装读写'
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
// 8. 多文件工程架构拆分 (禁止千行单文件堆叠)
|
|
225
|
+
const hasMultiFiles = sourceFiles.some((f) => f.relPath.includes('index.ts') || f.relPath.includes('index.js')) &&
|
|
226
|
+
sourceFiles.some((f) => f.relPath.includes('index.less') || f.relPath.includes('index.css'));
|
|
227
|
+
if (hasMultiFiles) {
|
|
228
|
+
checks.push({
|
|
229
|
+
id: 'RULE-08',
|
|
230
|
+
name: '多文件工程职责分离 (Vue/TS/Less/Util)',
|
|
231
|
+
status: 'PASS',
|
|
232
|
+
score: 10,
|
|
233
|
+
message: '工程具备良好的职责分离结构'
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
checks.push({
|
|
238
|
+
id: 'RULE-08',
|
|
239
|
+
name: '多文件工程职责分离 (Vue/TS/Less/Util)',
|
|
240
|
+
status: 'WARN',
|
|
241
|
+
score: 6,
|
|
242
|
+
message: '建议将逻辑提取至 index.ts,样式提取至 index.less,工具函数提取至 util.ts'
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
// 9. Vite 打包配置文件与 External 配置
|
|
246
|
+
const viteFile = sourceFiles.find((f) => f.relPath.includes('vite.config'));
|
|
247
|
+
if (viteFile && viteFile.content.includes('external')) {
|
|
248
|
+
checks.push({
|
|
249
|
+
id: 'RULE-09',
|
|
250
|
+
name: 'Vite External 排除全局可视化引擎',
|
|
251
|
+
status: 'PASS',
|
|
252
|
+
score: 10,
|
|
253
|
+
message: 'vite.config.ts 已正确配置 external 排除全局基础库'
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
checks.push({
|
|
258
|
+
id: 'RULE-09',
|
|
259
|
+
name: 'Vite External 排除全局可视化引擎',
|
|
260
|
+
status: 'WARN',
|
|
261
|
+
score: 5,
|
|
262
|
+
message: '建议在 vite.config.ts 中将 vue, element-plus, cesium, three 等声明为 external'
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
// 10. 构建产物状态检查 (dist/index.js 是否就绪)
|
|
266
|
+
const distJsPath = path_1.default.join(absDir, 'dist', 'index.js');
|
|
267
|
+
const hasDist = fs_1.default.existsSync(distJsPath);
|
|
268
|
+
if (hasDist) {
|
|
269
|
+
checks.push({
|
|
270
|
+
id: 'RULE-10',
|
|
271
|
+
name: '本地构建产物 dist/ 就绪状态',
|
|
272
|
+
status: 'PASS',
|
|
273
|
+
score: 10,
|
|
274
|
+
message: 'dist/index.js 已就绪,上传后沙箱将享受最高优先级秒开加载'
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
checks.push({
|
|
279
|
+
id: 'RULE-10',
|
|
280
|
+
name: '本地构建产物 dist/ 就绪状态',
|
|
281
|
+
status: 'WARN',
|
|
282
|
+
score: 5,
|
|
283
|
+
message: '未发现 dist/index.js 构建产物。建议在上传前调用 build_component_project 编译'
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
const totalScore = checks.reduce((sum, c) => sum + c.score, 0);
|
|
287
|
+
const isEligible = totalScore >= 75 && !checks.some((c) => c.status === 'FAIL');
|
|
288
|
+
return {
|
|
289
|
+
total_score: totalScore,
|
|
290
|
+
max_score: 100,
|
|
291
|
+
is_eligible_for_upload: isEligible,
|
|
292
|
+
overall_status: isEligible ? 'PASSED (合规准出)' : 'FAILED (存在阻断性违规或得分偏低)',
|
|
293
|
+
project_dir: absDir,
|
|
294
|
+
check_items: checks,
|
|
295
|
+
recommendations: checks
|
|
296
|
+
.filter((c) => c.status !== 'PASS' && c.fix_suggestion)
|
|
297
|
+
.map((c) => `[${c.id}] ${c.name}: ${c.fix_suggestion}`)
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
//# sourceMappingURL=compliance.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compliance.tool.js","sourceRoot":"","sources":["../../src/tools/compliance.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ISearchProjectsParams } from '../client/discovery-api';
|
|
2
|
+
export declare function handleSearchProjects(args: ISearchProjectsParams): Promise<{
|
|
3
|
+
success: boolean;
|
|
4
|
+
total: any;
|
|
5
|
+
page: any;
|
|
6
|
+
page_size: any;
|
|
7
|
+
list: any;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function handleListCategories(): Promise<{
|
|
10
|
+
success: boolean;
|
|
11
|
+
categories: any;
|
|
12
|
+
}>;
|
|
13
|
+
export declare function handleGetProjectDetail(args: {
|
|
14
|
+
project_name: string;
|
|
15
|
+
name?: string;
|
|
16
|
+
}): Promise<{
|
|
17
|
+
success: boolean;
|
|
18
|
+
project: any;
|
|
19
|
+
}>;
|
|
20
|
+
export declare function handleListMyProjects(args?: {
|
|
21
|
+
page?: number;
|
|
22
|
+
page_size?: number;
|
|
23
|
+
}): Promise<{
|
|
24
|
+
success: boolean;
|
|
25
|
+
result: any;
|
|
26
|
+
}>;
|
|
27
|
+
//# sourceMappingURL=discovery.tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.tools.d.ts","sourceRoot":"","sources":["../../src/tools/discovery.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAElI,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB;;;;;;GASrE;AAED,wBAAsB,oBAAoB;;;GAMzC;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;;;GAUzF;AAED,wBAAsB,oBAAoB,CAAC,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE;;;GAMtF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleSearchProjects = handleSearchProjects;
|
|
4
|
+
exports.handleListCategories = handleListCategories;
|
|
5
|
+
exports.handleGetProjectDetail = handleGetProjectDetail;
|
|
6
|
+
exports.handleListMyProjects = handleListMyProjects;
|
|
7
|
+
const discovery_api_1 = require("../client/discovery-api");
|
|
8
|
+
async function handleSearchProjects(args) {
|
|
9
|
+
const result = await (0, discovery_api_1.searchProjects)(args);
|
|
10
|
+
return {
|
|
11
|
+
success: true,
|
|
12
|
+
total: result.total ?? (Array.isArray(result) ? result.length : 0),
|
|
13
|
+
page: result.page || args.page || 1,
|
|
14
|
+
page_size: result.pageSize || args.page_size || 20,
|
|
15
|
+
list: result.list || result
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
async function handleListCategories() {
|
|
19
|
+
const result = await (0, discovery_api_1.listCategories)();
|
|
20
|
+
return {
|
|
21
|
+
success: true,
|
|
22
|
+
categories: result
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
async function handleGetProjectDetail(args) {
|
|
26
|
+
const name = args.project_name || args.name;
|
|
27
|
+
if (!name) {
|
|
28
|
+
throw new Error('[参数错误] project_name 为必填项');
|
|
29
|
+
}
|
|
30
|
+
const result = await (0, discovery_api_1.getProjectDetail)(name);
|
|
31
|
+
return {
|
|
32
|
+
success: true,
|
|
33
|
+
project: result
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
async function handleListMyProjects(args) {
|
|
37
|
+
const result = await (0, discovery_api_1.listMyProjects)(args);
|
|
38
|
+
return {
|
|
39
|
+
success: true,
|
|
40
|
+
result
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=discovery.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.tools.js","sourceRoot":"","sources":["../../src/tools/discovery.tools.ts"],"names":[],"mappings":";;AAEA,oDASC;AAED,oDAMC;AAED,wDAUC;AAED,oDAMC;AAvCD,2DAAkI;AAE3H,KAAK,UAAU,oBAAoB,CAAC,IAA2B;IACpE,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAc,EAAC,IAAI,CAAC,CAAC;IAC1C,OAAO;QACL,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;QACnC,SAAS,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE;QAClD,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM;KAC5B,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,oBAAoB;IACxC,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAc,GAAE,CAAC;IACtC,OAAO;QACL,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,MAAM;KACnB,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAAC,IAA6C;IACxF,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAgB,EAAC,IAAI,CAAC,CAAC;IAC5C,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,MAAM;KAChB,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,oBAAoB,CAAC,IAA4C;IACrF,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAc,EAAC,IAAI,CAAC,CAAC;IAC1C,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
export interface IDeveloperGuideArgs {
|
|
2
|
+
stage?: 'init' | 'scaffold' | 'coding' | 'build' | 'compliance' | 'upload' | 'all';
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* get_developer_guide: 全流程阶段性开发指引与红线导航工具
|
|
6
|
+
*/
|
|
7
|
+
export declare function handleGetDeveloperGuide(args: IDeveloperGuideArgs): Promise<{
|
|
8
|
+
success: boolean;
|
|
9
|
+
current_stage: "init" | "scaffold" | "coding" | "build" | "compliance" | "upload";
|
|
10
|
+
stage_detail: any;
|
|
11
|
+
workflow_overview?: undefined;
|
|
12
|
+
lifecycle_stages?: undefined;
|
|
13
|
+
} | {
|
|
14
|
+
success: boolean;
|
|
15
|
+
workflow_overview: string;
|
|
16
|
+
lifecycle_stages: {
|
|
17
|
+
init: {
|
|
18
|
+
stage_name: string;
|
|
19
|
+
recommended_tools: string[];
|
|
20
|
+
guidelines: string[];
|
|
21
|
+
next_stage: string;
|
|
22
|
+
};
|
|
23
|
+
scaffold: {
|
|
24
|
+
stage_name: string;
|
|
25
|
+
recommended_tools: string[];
|
|
26
|
+
guidelines: string[];
|
|
27
|
+
next_stage: string;
|
|
28
|
+
};
|
|
29
|
+
coding: {
|
|
30
|
+
stage_name: string;
|
|
31
|
+
recommended_tools: string[];
|
|
32
|
+
guidelines: string[];
|
|
33
|
+
next_stage: string;
|
|
34
|
+
};
|
|
35
|
+
build: {
|
|
36
|
+
stage_name: string;
|
|
37
|
+
recommended_tools: string[];
|
|
38
|
+
guidelines: string[];
|
|
39
|
+
next_stage: string;
|
|
40
|
+
};
|
|
41
|
+
compliance: {
|
|
42
|
+
stage_name: string;
|
|
43
|
+
recommended_tools: string[];
|
|
44
|
+
guidelines: string[];
|
|
45
|
+
next_stage: string;
|
|
46
|
+
};
|
|
47
|
+
upload: {
|
|
48
|
+
stage_name: string;
|
|
49
|
+
recommended_tools: string[];
|
|
50
|
+
guidelines: string[];
|
|
51
|
+
next_stage: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
current_stage?: undefined;
|
|
55
|
+
stage_detail?: undefined;
|
|
56
|
+
}>;
|
|
57
|
+
export declare function handleGetProjectRule(args?: {
|
|
58
|
+
section?: string;
|
|
59
|
+
}): Promise<{
|
|
60
|
+
success: boolean;
|
|
61
|
+
section: string;
|
|
62
|
+
core_rules: {
|
|
63
|
+
hud_style: string;
|
|
64
|
+
icons: string;
|
|
65
|
+
lifecycle: string;
|
|
66
|
+
persistence: string;
|
|
67
|
+
external_libs: string;
|
|
68
|
+
};
|
|
69
|
+
}>;
|
|
70
|
+
export declare function handleGetGlobalPackages(args?: {
|
|
71
|
+
page_type?: string;
|
|
72
|
+
category?: string;
|
|
73
|
+
}): Promise<{
|
|
74
|
+
success: boolean;
|
|
75
|
+
packages: any;
|
|
76
|
+
}>;
|
|
77
|
+
export declare function handleGetProjectUrl(args: {
|
|
78
|
+
project_name: string;
|
|
79
|
+
name?: string;
|
|
80
|
+
version?: string;
|
|
81
|
+
}): Promise<{
|
|
82
|
+
success: boolean;
|
|
83
|
+
project_name: string;
|
|
84
|
+
version: string;
|
|
85
|
+
preview_url: string;
|
|
86
|
+
}>;
|
|
87
|
+
export declare function handleGetDevelopmentWorkflow(): Promise<{
|
|
88
|
+
success: boolean;
|
|
89
|
+
workflow: string[];
|
|
90
|
+
}>;
|
|
91
|
+
//# sourceMappingURL=environment.tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.tools.d.ts","sourceRoot":"","sources":["../../src/tools/environment.tools.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,GAAG,KAAK,CAAC;CACpF;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EtE;AAED,wBAAsB,oBAAoB,CAAC,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;GAarE;AAED,wBAAsB,uBAAuB,CAAC,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;;;GAO7F;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;GAexG;AAED,wBAAsB,4BAA4B;;;GAcjD"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleGetDeveloperGuide = handleGetDeveloperGuide;
|
|
4
|
+
exports.handleGetProjectRule = handleGetProjectRule;
|
|
5
|
+
exports.handleGetGlobalPackages = handleGetGlobalPackages;
|
|
6
|
+
exports.handleGetProjectUrl = handleGetProjectUrl;
|
|
7
|
+
exports.handleGetDevelopmentWorkflow = handleGetDevelopmentWorkflow;
|
|
8
|
+
const environment_api_1 = require("../client/environment-api");
|
|
9
|
+
const config_1 = require("../config");
|
|
10
|
+
/**
|
|
11
|
+
* get_developer_guide: 全流程阶段性开发指引与红线导航工具
|
|
12
|
+
*/
|
|
13
|
+
async function handleGetDeveloperGuide(args) {
|
|
14
|
+
const stage = args?.stage || 'all';
|
|
15
|
+
const stagesData = {
|
|
16
|
+
init: {
|
|
17
|
+
stage_name: 'Phase 1: 资产检索与前置调研',
|
|
18
|
+
recommended_tools: ['search_projects', 'list_categories', 'get_global_packages'],
|
|
19
|
+
guidelines: [
|
|
20
|
+
'先搜索平台中是否已有相似技术栈的组件(如 Cesium 无人机巡检、Three 建筑漫游)',
|
|
21
|
+
'调用 get_global_packages 确认平台预置的核心引擎版本与 /static/libs 扩展库清单'
|
|
22
|
+
],
|
|
23
|
+
next_stage: 'scaffold'
|
|
24
|
+
},
|
|
25
|
+
scaffold: {
|
|
26
|
+
stage_name: 'Phase 2: 本地工程脚手架生成',
|
|
27
|
+
recommended_tools: ['create_component_project'],
|
|
28
|
+
guidelines: [
|
|
29
|
+
'调用 create_component_project 一键生成包含 Vue 3 + TS + Less + Vite 的标准工程',
|
|
30
|
+
'生成后工程目录已默认满足 13 项沙箱合规规范(包含 pointer-events、左上角 HUD、onUnmounted 资源销毁)'
|
|
31
|
+
],
|
|
32
|
+
next_stage: 'coding'
|
|
33
|
+
},
|
|
34
|
+
coding: {
|
|
35
|
+
stage_name: 'Phase 3: 业务逻辑与界面编码',
|
|
36
|
+
recommended_tools: ['get_project_rule', 'grep_source_code'],
|
|
37
|
+
guidelines: [
|
|
38
|
+
'【红线1】严禁在 template 中重复创建底图容器 (#cesiumContainer)',
|
|
39
|
+
'【红线2】杜绝 Unicode emoji,统一使用 @element-plus/icons-vue',
|
|
40
|
+
'【红线3】增删改查统一使用 localStorage 模拟持久化,严禁直连未经授权的外部数据库',
|
|
41
|
+
'【红线4】在 onUnmounted 中必须清除定时器与 Scene/Viewer 监听'
|
|
42
|
+
],
|
|
43
|
+
next_stage: 'build'
|
|
44
|
+
},
|
|
45
|
+
build: {
|
|
46
|
+
stage_name: 'Phase 4: 本地编译与产物输出',
|
|
47
|
+
recommended_tools: ['build_component_project'],
|
|
48
|
+
guidelines: [
|
|
49
|
+
'调用 build_component_project 执行本地 Vite 构建',
|
|
50
|
+
'构建产物为沙箱专属的 dist/index.js 与 dist/index.css',
|
|
51
|
+
'如有 TypeScript 或语法报错,可在本地直接查看行号并修复'
|
|
52
|
+
],
|
|
53
|
+
next_stage: 'compliance'
|
|
54
|
+
},
|
|
55
|
+
compliance: {
|
|
56
|
+
stage_name: 'Phase 5: 13 项沙箱合规自检',
|
|
57
|
+
recommended_tools: ['check_sandbox_compliance'],
|
|
58
|
+
guidelines: [
|
|
59
|
+
'调用 check_sandbox_compliance 对本地工程代码执行 13 项规则扫描',
|
|
60
|
+
'自检得分 >= 75 分且无阻断项即可准出上传'
|
|
61
|
+
],
|
|
62
|
+
next_stage: 'upload'
|
|
63
|
+
},
|
|
64
|
+
upload: {
|
|
65
|
+
stage_name: 'Phase 6: 物理流式秒级发布与沙箱验证',
|
|
66
|
+
recommended_tools: ['upload_component_project', 'get_project_url'],
|
|
67
|
+
guidelines: [
|
|
68
|
+
'调用 upload_component_project 执行极速物理上传(耗时 < 0.1s)',
|
|
69
|
+
'开发测试期间建议使用 uploadType: "test" 直接覆盖验证,正式定版发布使用 uploadType: "final"',
|
|
70
|
+
'打开返回的 preview_url 在平台沉浸式沙箱中验证 3D/2D 渲染效果'
|
|
71
|
+
],
|
|
72
|
+
next_stage: 'completed'
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
if (stage !== 'all' && stagesData[stage]) {
|
|
76
|
+
return {
|
|
77
|
+
success: true,
|
|
78
|
+
current_stage: stage,
|
|
79
|
+
stage_detail: stagesData[stage]
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
success: true,
|
|
84
|
+
workflow_overview: '可视化组件全流程闭环研发标准指引',
|
|
85
|
+
lifecycle_stages: stagesData
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
async function handleGetProjectRule(args) {
|
|
89
|
+
const section = args?.section || 'all';
|
|
90
|
+
return {
|
|
91
|
+
success: true,
|
|
92
|
+
section,
|
|
93
|
+
core_rules: {
|
|
94
|
+
hud_style: 'HUD 控制面板必须设置 position: absolute; top: 16px; left: 16px; pointer-events: auto !important;',
|
|
95
|
+
icons: '禁止使用 Unicode emoji (如 🚀, ✅),统一使用 Element Plus 官方图标库 @element-plus/icons-vue',
|
|
96
|
+
lifecycle: '在 onUnmounted 钩子中必须销毁定时器、移除实体图层与释放事件监听',
|
|
97
|
+
persistence: '数据增删改查统一使用 localStorage 模拟持久化,严禁直连外部数据库',
|
|
98
|
+
external_libs: 'vite.config.ts 必须配置 external 排除 vue, element-plus, cesium, three, echarts 等全局引擎'
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
async function handleGetGlobalPackages(args) {
|
|
103
|
+
const pageType = args?.page_type || args?.category;
|
|
104
|
+
const result = await (0, environment_api_1.getGlobalPackages)(pageType);
|
|
105
|
+
return {
|
|
106
|
+
success: true,
|
|
107
|
+
packages: result
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
async function handleGetProjectUrl(args) {
|
|
111
|
+
const name = args.project_name || args.name;
|
|
112
|
+
if (!name) {
|
|
113
|
+
throw new Error('[参数错误] project_name 为必填项');
|
|
114
|
+
}
|
|
115
|
+
const config = (0, config_1.getConfig)();
|
|
116
|
+
const verParam = args.version ? `?version=${encodeURIComponent(args.version)}` : '';
|
|
117
|
+
const previewUrl = `${config.baseUrl}/#/preview/${encodeURIComponent(name)}${verParam}`;
|
|
118
|
+
return {
|
|
119
|
+
success: true,
|
|
120
|
+
project_name: name,
|
|
121
|
+
version: args.version || 'latest',
|
|
122
|
+
preview_url: previewUrl
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
async function handleGetDevelopmentWorkflow() {
|
|
126
|
+
return {
|
|
127
|
+
success: true,
|
|
128
|
+
workflow: [
|
|
129
|
+
'1. 需求分析与同类资产检索 (search_projects)',
|
|
130
|
+
'2. 获取开发指南与规范 (get_developer_guide)',
|
|
131
|
+
'3. 本地生成工程脚手架 (create_component_project)',
|
|
132
|
+
'4. 编写多文件源码 (src/index.vue, src/index.ts, src/index.less, src/util.ts)',
|
|
133
|
+
'5. 本地 Vite 编译构建 (build_component_project)',
|
|
134
|
+
'6. 执行 13 项沙箱合规自检 (check_sandbox_compliance)',
|
|
135
|
+
'7. 极速物理流直传平台 (upload_component_project)',
|
|
136
|
+
'8. 沙箱在线预览验证 (preview_url)'
|
|
137
|
+
]
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=environment.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.tools.js","sourceRoot":"","sources":["../../src/tools/environment.tools.ts"],"names":[],"mappings":"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"}
|