diff --git a/docs/dev-log.md b/docs/dev-log.md index c87c142..80c1488 100644 --- a/docs/dev-log.md +++ b/docs/dev-log.md @@ -1398,3 +1398,33 @@ cd ~/devops/aiops - TraceManager.tsx(620)/GrafanaDashboard.tsx(616) 属优雅降级组件(无后端),拆分价值低于真实业务组件 - sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分 - 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆) + + +## 2026-06-17 自动推进(cron)— ScriptManager 拆分 + +- **任务**: 拆分 ScriptManager.tsx(546行->411行),远离700行硬上限 +- **背景**: dev-log 上次建议优先拆真实业务组件 ScriptManager/AgentAlerts/AnsibleManager。ScriptManager 是自动化运维模块的脚本库主组件(已提取 script-helpers.tsx + ScriptFormDialog + ScriptDetailDialog + ScriptLogsDialog 4 个子文件),主组件剩余 JSX 块(统计卡片/脚本卡片列表/执行记录表格)仍占大量行数 +- **拆分方案**: + - `frontend/src/components/automation/ScriptStatsCards.tsx` — 新建(70行):提取 4 个统计卡片(脚本总数/执行中/今日成功/今日失败),Props: total/running/todaySuccess/todayFailed + - `frontend/src/components/automation/ScriptCard.tsx` — 新建(72行):提取单个脚本卡片(复选框+名称+类型徽章+内容预览+元信息+5个行操作按钮),Props: script/selected/executing/onToggleSelect/onView/onExecute/onEdit/onClone/onDelete + - `frontend/src/components/automation/ScriptExecutionsTable.tsx` — 新建(69行):提取执行记录表格(6列:#/脚本/状态/开始时间/耗时/操作+刷新按钮),Props: executions/onRefresh/onViewLogs + - `frontend/src/components/automation/ScriptManager.tsx` — 主组件从 546 行降至 411 行(-135);移除内联统计卡片 JSX(55行)、脚本卡片 JSX(62行)、执行记录表格 JSX(53行),替换为 3 个子组件;移除未使用的导入(FileCode/Clock/CheckCircle/XCircle/Eye/Terminal/Copy/Edit);保留所有状态管理+CRUD handler+筛选逻辑+批量操作栏 +- **结果**: + - npx tsc --noEmit 零错误 ✅ + - npm run build 通过(3.04s) ✅ + - ./run.sh restart 后 /health 正常 + 前端 200 ✅ + - API 验证:/api/v1/scripts 返回 total=6, /api/v1/task-executions 返回 total=3 ✅ + - 浏览器验证 /scripts(自动化运维-脚本库菜单): + - 4 个统计卡片正常渲染(脚本总数=6/执行中=0/今日成功=0/今日失败=0) + - 脚本库 Tab:6 个脚本卡片完整渲染,每卡片含复选框+类型徽章+内容预览+5个行操作按钮(查看内容/执行/编辑/复制/删除) + - 执行记录 Tab:3 条记录表格正常渲染(重启服务-失败/测试脚本-前端-成功/检查磁盘-成功),6列(#/脚本/状态/开始时间/耗时/操作) + - "新建脚本"按钮打开 ScriptFormDialog(名称+类型下拉默认Shell+描述+超时300+内容编辑器预填shell模板,取消/创建按钮) + - console 零 JS 错误 ✅ + - grep 确认 ScriptStatsCards/ScriptCard/ScriptExecutionsTable 仅被 ScriptManager.tsx 引用 + - git push 成功 (commit 2582f12) ✅ +- **下一步建议**: + - 前端仍有接近700行可拆分: TopologyView.tsx(576)、ExcelServerImport.tsx(549)、AgentAlerts.tsx(542)、AIAlertAnalyzer.tsx(541)、AnsibleManager.tsx(535) + - 优先拆 AgentAlerts/AnsibleManager(真实业务组件),TopologyView 拖拽逻辑复杂拆分需谨慎 + - TraceManager.tsx(620)/GrafanaDashboard.tsx(616) 属优雅降级组件(无后端),拆分价值低于真实业务组件 + - sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分 + - 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆)