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
+ })
+ }
+ }
+ ]
+ }
+ }
+ })],
})