diff --git a/docs/dev-log.md b/docs/dev-log.md index 969ffe2..dee434e 100644 --- a/docs/dev-log.md +++ b/docs/dev-log.md @@ -1518,3 +1518,28 @@ cd ~/devops/aiops - LogManager.tsx(514) 属已移除菜单(日志能力)的死代码,可考虑直接删除 - sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分 - 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆) + + +## 2026-06-17 自动推进(cron)— 清理死代码 LogManager + logsApi + LogEntry + +- **任务**: 清理已移除「日志能力」菜单遗留的孤立死代码(LogManager.tsx + logsApi + LogEntry 类型) +- **背景**: 日志能力菜单+路由已于此前移除(用户要求"太复杂暂不做"),但前端组件文件 `LogManager.tsx`(514行)、`api.ts` 中的 `logsApi` 对象(32行)、`types/index.ts` 中的 `LogEntry` 接口(9行)残留在磁盘上成为死代码。dev-log 上次建议"LogManager.tsx(514) 属已移除菜单(日志能力)的死代码,可考虑直接删除"。本次执行系统性死代码审计并清理 +- **审计方法**: 用 Python 构建前端 import 图(从 App.tsx/main.tsx BFS 遍历所有 import),对比全量组件文件找出不可达的孤立文件;再用 grep 精确验证每个候选的引用计数(排除 `@/` alias 解析误报)。最终确认 LogManager.tsx 为唯一零引用的死组件,logsApi 仅被 LogManager 引用,LogEntry 仅被 LogManager 引用 +- **清理内容**: + - `frontend/src/components/monitor/logs/LogManager.tsx` — 删除(514行) + 移除整个 `logs/` 目录(该目录仅含此文件)。注意:此文件从未被 git 跟踪(untracked),`rm` 直接从磁盘移除 + - `frontend/src/services/api.ts` — 移除 `logsApi` 对象(行577-608,含 query/getSources/createSource/deleteSource/export 5个方法,对应后端 /logs/* 路由),共 -32 行 + - `frontend/src/types/index.ts` — 移除 `LogEntry` 接口(行358-367,含 id/timestamp/level/source/message/host/metadata 字段),共 -9 行 +- **结果**: + - npx tsc --noEmit 零错误 ✅(确认无任何文件引用已删除的组件/API/类型) + - npm run build 通过(3.17s) ✅ + - ./run.sh restart 后 /health 正常 + 前端 200 ✅ + - grep 确认 frontend/src 下零残留引用(logsApi/LogEntry/LogManager/monitor/logs 全部 0 命中) ✅ + - git push 成功 (commit 73505d6) ✅ + - 后端 log.go handler + /logs 路由保留(遵循"后端代码保留不删除"原则,仅清理前端死代码) +- **下一步建议**: + - 前端剩余接近上限的真实业务组件: TopologyView.tsx(576)、AIAlertAnalyzer.tsx(541) + - TopologyView.tsx(576) 含 SVG 拖拽状态机,拆分需谨慎保留拖拽三件套逻辑(onMouseDown/onMouseMove/onMouseUp + getScreenCTM) + - AIAlertAnalyzer.tsx(541) 可提取规则分析卡片/历史案例匹配区块为子组件 + - TraceManager.tsx(620)/GrafanaDashboard.tsx(616) 属优雅降级组件(无后端),拆分价值低于真实业务组件 + - 可考虑后端同步清理 log.go handler(已移除菜单,4个API变死代码),但需确认无其他前端/Agent 调用 +