refactor(quality): Q18 前端巨型组件拆分 — TraceManager 605L→331L (-45%), 提取 types + trace-helpers + SpanTreeNode + TraceDetailDialog + SpanDetailDialog 5 个独立文件, 修复 SpanTreeNode 内联定义反模式(每次 render 重建组件函数), 零逻辑变更, ESLint errors=0/warnings=64/any=0, tsc -b=0, npm build✓, 17/17 测试通过
This commit is contained in:
1 parent
6f1c79fd51
commit
69447e4d66
9 files changed
+656
-461
No files matched your search
+54
@@ -1380,3 +1380,57 @@ python3 tests/integration_test.py --host 127.0.0.1 --port 8080
|
||||
- [x] Docker 部署 healthy,前端页面正常加载(HTTP 200)
|
||||
- [x] 服务器管理页功能不变(列表/搜索/筛选/分页/选择/批量删除/CSV 导出/创建编辑/终端/RDP/文件浏览全部正常)
|
||||
|
||||
## Q18: 前端巨型组件拆分 — TraceManager
|
||||
|
||||
### 验证用例
|
||||
|
||||
```bash
|
||||
# U1: Go 编译
|
||||
cd /srv/aiops/backend && go build ./...
|
||||
# 期望: 零错误
|
||||
|
||||
# U2: TypeScript 编译
|
||||
cd /srv/aiops/frontend && npx tsc -b
|
||||
# 期望: 零错误
|
||||
|
||||
# U3: Vite 构建
|
||||
npm run build 2>&1 | tail -3
|
||||
# 期望: built in Ns
|
||||
|
||||
# U4: 拆分后文件行数
|
||||
wc -l src/components/monitor/trace/TraceManager.tsx src/components/monitor/trace/trace-manager/*.ts src/components/monitor/trace/trace-manager/*.tsx
|
||||
# 期望: TraceManager < 340L, 其余 < 95L
|
||||
|
||||
# U5: ESLint 全局指标
|
||||
npx eslint src/ --format json | python3 -c "
|
||||
import json, sys
|
||||
d = json.load(sys.stdin)
|
||||
print(f'errors={sum(1 for r in d for m in r[\"messages\"] if m[\"severity\"]==2)}')
|
||||
print(f'any={sum(1 for r in d for m in r[\"messages\"] if m.get(\"ruleId\")==\"@typescript-eslint/no-explicit-any\")}')
|
||||
"
|
||||
# 期望: errors=0, any=0
|
||||
|
||||
# U6: 集成测试
|
||||
python3 tests/integration_test.py --host 127.0.0.1 --port 8080
|
||||
# 期望: 17/17 passed
|
||||
|
||||
# U7: traces API 可用(链路追踪页面后端代理)
|
||||
TOKEN=$(curl -s http://127.0.0.1:8080/api/v1/auth/login -X POST -H 'Content-Type: application/json' -d '{"username":"admin","password":"123456"}' | python3 -c 'import sys,json;print(json.load(sys.stdin)["data"]["token"])')
|
||||
curl -s -o /dev/null -w "%{http_code}" -H "Authorization: Bearer ${TOKEN}" "http://127.0.0.1:8080/api/v1/traces?timeRange=1h"
|
||||
# 期望: 200
|
||||
```
|
||||
|
||||
### 通过标准
|
||||
- [x] TraceManager.tsx 从 605 行降至 **331 行**(< 340 ✅,-45%)
|
||||
- [x] 5 个提取文件全部 < 95 行(types 90L + trace-helpers 44L + SpanTreeNode 71L + TraceDetailDialog 80L + SpanDetailDialog 91L)
|
||||
- [x] `tsc -b` 零错误
|
||||
- [x] `npm run build` 零错误(✓ built in 18.23s)
|
||||
- [x] ESLint errors 保持 **0**(trace-manager/ 目录零 warnings)
|
||||
- [x] ESLint warnings 保持 **64**(无新增)
|
||||
- [x] 全局 ESLint any 保持 **0**
|
||||
- [x] `go build` 零错误
|
||||
- [x] 17/17 集成回归测试通过(零回归)
|
||||
- [x] Docker 部署 healthy,前端页面正常加载(HTTP 200),traces API 返回 200
|
||||
- [x] 链路追踪管理页功能不变(Traces/Services/Metrics 三 Tab + Trace 详情 Span 树 + Span 详情标签/日志全部正常)
|
||||
- [x] SpanTreeNode 内联定义反模式已修复(提取为模块级稳定组件引用)
|
||||
|
||||
Reference in new issue
Block a user