From 1a6e6bbbe21be761c8142c078f4387d234656a96 Mon Sep 17 00:00:00 2001 From: aryecatcher <516371385@qq.com> Date: Wed, 6 May 2026 15:12:39 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E5=85=A8=E9=9D=A2=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FrontEnd/SPA/README.md | 134 ++- FrontEnd/SPA/openapi.json | 655 +------------- FrontEnd/SPA/package-lock.json | 18 + FrontEnd/SPA/package.json | 1 + FrontEnd/SPA/src/api/generated/ApiClient.ts | 20 +- .../SPA/src/api/generated/core/OpenAPI.ts | 2 +- FrontEnd/SPA/src/api/generated/index.ts | 36 +- .../src/api/generated/models/AgentConfig.ts | 24 + .../src/api/generated/models/Checkpoint.ts | 29 - .../api/generated/models/CheckpointApprove.ts | 18 + .../models/CheckpointListResponse.ts | 14 + .../api/generated/models/CheckpointReject.ts | 18 + .../generated/models/CheckpointResponse.ts | 21 + .../SPA/src/api/generated/models/Context.ts | 35 - .../models/DefaultPipelineResponse.ts | 13 + .../src/api/generated/models/Descriptions.ts | 18 + .../api/generated/models/ExecutionCreate.ts | 22 + .../api/generated/models/ExecutionResponse.ts | 20 + .../api/generated/models/ExecutionStatus.ts | 17 + .../models/ExecutionStatusResponse.ts | 25 + .../generated/models/HTTPValidationError.ts | 9 + .../api/generated/models/HealthResponse.ts | 14 + .../api/generated/models/PipelineConfig.ts | 23 - .../models/PipelineConfigResponse.ts | 25 + .../api/generated/models/PipelineCreate.ts | 14 + .../generated/models/PipelineListResponse.ts | 15 + .../api/generated/models/PipelineResponse.ts | 20 + .../src/api/generated/models/PipelineStage.ts | 44 + .../api/generated/models/PipelineStatus.ts | 16 + .../api/generated/models/PipelineUpdate.ts | 14 + .../src/api/generated/models/RunSummary.ts | 25 - .../models/SetDefaultPipelineRequest.ts | 14 + .../src/api/generated/models/StageConfig.ts | 28 - .../SPA/src/api/generated/models/StageType.ts | 14 + .../SPA/src/api/generated/models/Stages.ts | 14 + .../api/generated/models/TestRunRequest.ts | 22 + .../api/generated/models/ValidationError.ts | 12 + .../generated/services/CheckpointService.ts | 135 +++ .../api/generated/services/DefaultService.ts | 218 ----- .../generated/services/ExecutionService.ts | 185 ++++ .../api/generated/services/HealthService.ts | 22 + .../api/generated/services/PipelineService.ts | 159 ++++ .../src/api/generated/services/RootService.ts | 21 + FrontEnd/SPA/src/components/AuditModal.vue | 56 +- FrontEnd/SPA/src/main.ts | 2 +- FrontEnd/SPA/src/pages/WorkflowPage.vue | 818 ++++++++++++++++-- FrontEnd/SPA/src/utils/request.ts | 2 +- FrontEnd/SPA/tsconfig.json | 5 +- 48 files changed, 1989 insertions(+), 1097 deletions(-) create mode 100644 FrontEnd/SPA/src/api/generated/models/AgentConfig.ts delete mode 100644 FrontEnd/SPA/src/api/generated/models/Checkpoint.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/CheckpointApprove.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/CheckpointListResponse.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/CheckpointReject.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/CheckpointResponse.ts delete mode 100644 FrontEnd/SPA/src/api/generated/models/Context.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/DefaultPipelineResponse.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/Descriptions.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/ExecutionCreate.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/ExecutionResponse.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/ExecutionStatus.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/ExecutionStatusResponse.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/HTTPValidationError.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/HealthResponse.ts delete mode 100644 FrontEnd/SPA/src/api/generated/models/PipelineConfig.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/PipelineConfigResponse.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/PipelineCreate.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/PipelineListResponse.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/PipelineResponse.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/PipelineStage.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/PipelineStatus.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/PipelineUpdate.ts delete mode 100644 FrontEnd/SPA/src/api/generated/models/RunSummary.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/SetDefaultPipelineRequest.ts delete mode 100644 FrontEnd/SPA/src/api/generated/models/StageConfig.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/StageType.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/Stages.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/TestRunRequest.ts create mode 100644 FrontEnd/SPA/src/api/generated/models/ValidationError.ts create mode 100644 FrontEnd/SPA/src/api/generated/services/CheckpointService.ts delete mode 100644 FrontEnd/SPA/src/api/generated/services/DefaultService.ts create mode 100644 FrontEnd/SPA/src/api/generated/services/ExecutionService.ts create mode 100644 FrontEnd/SPA/src/api/generated/services/HealthService.ts create mode 100644 FrontEnd/SPA/src/api/generated/services/PipelineService.ts create mode 100644 FrontEnd/SPA/src/api/generated/services/RootService.ts diff --git a/FrontEnd/SPA/README.md b/FrontEnd/SPA/README.md index 1511959..004a4ac 100644 --- a/FrontEnd/SPA/README.md +++ b/FrontEnd/SPA/README.md @@ -1,5 +1,129 @@ -# Vue 3 + Vite - -This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 ` + + diff --git a/FrontEnd/SPA/src/utils/request.ts b/FrontEnd/SPA/src/utils/request.ts index e574e72..dfcfb8e 100644 --- a/FrontEnd/SPA/src/utils/request.ts +++ b/FrontEnd/SPA/src/utils/request.ts @@ -1,7 +1,7 @@ import axios from 'axios' const request = axios.create({ - baseURL: import.meta.env.VITE_API_BASE_URL || 'http://localhost:3000/api', // 后端API地址 + baseURL: import.meta.env.VITE_API_BASE_URL || 'http://127.0.0.1:4523/m1/8175900-7935055-default/api', // 后端API地址 timeout: 30000, }) diff --git a/FrontEnd/SPA/tsconfig.json b/FrontEnd/SPA/tsconfig.json index d326786..36bd316 100644 --- a/FrontEnd/SPA/tsconfig.json +++ b/FrontEnd/SPA/tsconfig.json @@ -1,4 +1,4 @@ -{ +{ "compilerOptions": { "target": "ES2020", "module": "ESNext", @@ -9,7 +9,8 @@ "isolatedModules": true, "esModuleInterop": true, "lib": ["ES2020", "DOM", "DOM.Iterable"], - "types": ["vite/client"] + "types": ["vite/client", "node"], + "skipLibCheck": true }, "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"] } From a2be329bf749ef8b25bbbed0f1691ba1d431eaaf Mon Sep 17 00:00:00 2001 From: aryecatcher <516371385@qq.com> Date: Wed, 6 May 2026 17:34:06 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E6=BA=90?= =?UTF-8?q?=E4=BB=A3=E7=A0=81dom?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FrontEnd/SPA/package-lock.json | 92 ++++++++++++++++++++++++++++------ FrontEnd/SPA/package.json | 1 + FrontEnd/SPA/vite.config.js | 38 +++++++++++++- 3 files changed, 115 insertions(+), 16 deletions(-) diff --git a/FrontEnd/SPA/package-lock.json b/FrontEnd/SPA/package-lock.json index 014ab2f..7853e96 100644 --- a/FrontEnd/SPA/package-lock.json +++ b/FrontEnd/SPA/package-lock.json @@ -19,6 +19,7 @@ "devDependencies": { "@types/node": "^25.6.0", "@vitejs/plugin-vue": "^6.0.6", + "@vue/compiler-sfc": "^3.5.34", "openapi-typescript-codegen": "^0.30.0", "typescript": "^5.9.3", "vite": "^8.0.10", @@ -63,9 +64,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "version": "7.29.3", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.3.tgz", + "integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==", "license": "MIT", "dependencies": { "@babel/types": "^7.29.0" @@ -578,22 +579,66 @@ } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.33", - "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.33.tgz", - "integrity": "sha512-UTUvRO9cY+rROrx/pvN9P5Z7FgA6QGfokUCfhQE4EnmUj3rVnK+CHI0LsEO1pg+I7//iRYMUfcNcCPe7tg0CoA==", + "version": "3.5.34", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.34.tgz", + "integrity": "sha512-D/ihr6uZeIt6r+pVZf46RWT1fAsLFMbUP7k8G1VkiiWexriED9GrX3echHd4Abbt17zjlfiFJ8z7a3BxZOPNjg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.2", - "@vue/compiler-core": "3.5.33", - "@vue/compiler-dom": "3.5.33", - "@vue/compiler-ssr": "3.5.33", - "@vue/shared": "3.5.33", + "@babel/parser": "^7.29.3", + "@vue/compiler-core": "3.5.34", + "@vue/compiler-dom": "3.5.34", + "@vue/compiler-ssr": "3.5.34", + "@vue/shared": "3.5.34", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", - "postcss": "^8.5.10", + "postcss": "^8.5.14", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/@vue/compiler-core": { + "version": "3.5.34", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.34.tgz", + "integrity": "sha512-s9cLyK5mLcvZ4Agva5QgRsQyLKvts9WbU9DB6NqiZkkGEdwmcEiylj5Jbwkp680drF/NNCV8OlAJSe+yMLxaJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.3", + "@vue/shared": "3.5.34", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, + "node_modules/@vue/compiler-sfc/node_modules/@vue/compiler-dom": { + "version": "3.5.34", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.34.tgz", + "integrity": "sha512-EbF/T++k0e2MMZlJsBhzK8Sgwt0HcIPOhzn1CTB/lv6sQcyk+OWf8YeiLxZp3ro7MbbLcAfAJ6sEvjFWuNgUCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.34", + "@vue/shared": "3.5.34" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/@vue/compiler-ssr": { + "version": "3.5.34", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.34.tgz", + "integrity": "sha512-cDtTHKibkThKGHH1SP+WdccquNRYQDFH6rRjQCqT9G2ltFAfoR5pUftpab/z+aM5mW9HLLVQW7hfKKQe/1GBeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.34", + "@vue/shared": "3.5.34" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/@vue/shared": { + "version": "3.5.34", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.34.tgz", + "integrity": "sha512-24uqU4OIiX29ryC3MeWid/Xf2fa2EFRUVLb77nRhk+UrTVrh/XiGtFAFmJBAtBRbjwNdsPRP+jj/OL27Eg1NDA==", + "dev": true, + "license": "MIT" + }, "node_modules/@vue/compiler-ssr": { "version": "3.5.33", "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.33.tgz", @@ -1672,9 +1717,9 @@ } }, "node_modules/postcss": { - "version": "8.5.10", - "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.10.tgz", - "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==", + "version": "8.5.14", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.14.tgz", + "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", "funding": [ { "type": "opencollective", @@ -1976,6 +2021,23 @@ "typescript": ">=5.0.0" } }, + "node_modules/vue/node_modules/@vue/compiler-sfc": { + "version": "3.5.33", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.33.tgz", + "integrity": "sha512-UTUvRO9cY+rROrx/pvN9P5Z7FgA6QGfokUCfhQE4EnmUj3rVnK+CHI0LsEO1pg+I7//iRYMUfcNcCPe7tg0CoA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.2", + "@vue/compiler-core": "3.5.33", + "@vue/compiler-dom": "3.5.33", + "@vue/compiler-ssr": "3.5.33", + "@vue/shared": "3.5.33", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.10", + "source-map-js": "^1.2.1" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/wordwrap/-/wordwrap-1.0.0.tgz", diff --git a/FrontEnd/SPA/package.json b/FrontEnd/SPA/package.json index e0bf572..664961b 100644 --- a/FrontEnd/SPA/package.json +++ b/FrontEnd/SPA/package.json @@ -22,6 +22,7 @@ "devDependencies": { "@types/node": "^25.6.0", "@vitejs/plugin-vue": "^6.0.6", + "@vue/compiler-sfc": "^3.5.34", "openapi-typescript-codegen": "^0.30.0", "typescript": "^5.9.3", "vite": "^8.0.10", diff --git a/FrontEnd/SPA/vite.config.js b/FrontEnd/SPA/vite.config.js index bbcf80c..1e60f98 100644 --- a/FrontEnd/SPA/vite.config.js +++ b/FrontEnd/SPA/vite.config.js @@ -3,5 +3,41 @@ import vue from '@vitejs/plugin-vue' // https://vite.dev/config/ export default defineConfig({ - plugins: [vue()], + plugins: [vue({ + template: { + compilerOptions: { + // 编译时节点转换,最可靠的注入方式 + nodeTransforms: [ + (node, context) => { + // 只处理元素节点 + if (node.type === 1 /* Element */) { + // 获取当前文件路径和节点位置 + const filePath = context.filename.replace(/\\/g, '/') + const line = node.loc.start.line + const column = node.loc.start.column + + // 构造属性值 + const sourceInfo = JSON.stringify({ + path: filePath, + line, + column + }) + + // 添加自定义属性 + node.props.push({ + type: 6 /* Attribute */, + name: 'data-source-loc', + value: { + type: 2 /* Text */, + content: sourceInfo, + loc: node.loc + }, + loc: node.loc + }) + } + } + ] + } + } + })], })