docs: update dev-log - CronJobManager 拆分

This commit is contained in:
attacker committed 2026-06-16 22:08:47 +08:00
1 parent f60809d9b0
commit 8a4ae0ac5c
1 file changed
+30
+30
View File
@@ -1250,3 +1250,33 @@ cd ~/devops/aiops
- 前端仍有接近700行可拆分: CronJobManager.tsx(652)、AppRelease.tsx(650)、ServerManager.tsx(645)、TraceManager.tsx(620)、GrafanaDashboard.tsx(616) - 前端仍有接近700行可拆分: CronJobManager.tsx(652)、AppRelease.tsx(650)、ServerManager.tsx(645)、TraceManager.tsx(620)、GrafanaDashboard.tsx(616)
- sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分 - sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分
- 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆) - 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆)
## 2026-06-16 自动推进(cron)
- **任务**: 拆分 CronJobManager.tsx(652行→398行),远离700行硬上限
- **背景**: dev-log 上次建议的预防性维护项(继 CloudBilling + ApprovalFlow + AgentMonitor + AIPredictiveAnalytics 拆分后,CronJobManager 是自动化运维模块中最接近 700 行限制的业务组件)
- **拆分方案**:
- `frontend/src/components/automation/cronJobHelpers.tsx` — **新建**(47行):提取 `getStatusBadge()`(执行状态徽章,主列表+执行历史共用)+ `parseCron()`(Cron 表达式转中文)为共享纯函数
- `frontend/src/components/automation/CronJobFormDialog.tsx` — **新建**(159行):新建/编辑定时任务弹窗,自包含状态(form),useEffect 在 open 时初始化表单(新建预填空值/编辑回填已有数据),保存逻辑内移(createJob vs updateJob),Props: open/onOpenChange/editJob/onSuccess
- `frontend/src/components/automation/ExecutionHistoryDialog.tsx` — **新建**(117行):执行历史弹窗,自包含状态(executions/loading/expandedExec),useEffect 在 open 时自动加载执行记录,点击行展开输出日志,Props: open/onOpenChange
- `frontend/src/components/automation/CronJobManager.tsx` — 主组件从 652 行降至 398 行(-254);移除 formJob/editingId 状态(改为 editJob) + executions/executionsLoading/expandedExec 状态 + loadExecutions/openLogDialog 函数 + handleSaveJob 函数(迁移到 FormDialog) + getStatusBadge/parseCron 内联定义(迁移到 helpers);移除未使用的导入(Dialog/DialogContent/DialogDescription/DialogFooter/DialogHeader/DialogTitle/Select系列/Textarea/Label/Table系列/Fragment/CheckCircle/XCircle);内联两个 Dialog JSX 替换为 `<CronJobFormDialog>` + `<ExecutionHistoryDialog>` 组件
- **结果**:
- npx tsc --noEmit 零错误 ✅
- npm run build 通过(3.12s) ✅
- ./run.sh restart 后 /health 正常 + 前端 200 ✅
- API 验证:cron-jobs 返回 total=5, list_len=5 ✅
- 浏览器验证 /automation/cron(定时任务菜单):
- 4 个统计卡片正常渲染(任务总数=5/已启用/累计成功/累计失败)
- 5 个任务卡片完整渲染(数据库备份/清理日志/数据同步/健康检查/生成报表),每个含名称+启用状态+类型徽章+Cron描述+命令+上次执行+成功失败统计+立即执行/禁用/编辑/删除按钮
- 搜索框+全选复选框+批量删除栏正常
- "新建任务"按钮打开 CronJobFormDialog(空表单:任务名称+描述+Cron表达式+快速选择下拉+执行命令),按钮显示"创建任务"
- "编辑"按钮打开 CronJobFormDialog(预填数据:数据库备份+描述+Cron+命令),标题"编辑定时任务",按钮显示"保存修改"
- "执行历史"按钮打开 ExecutionHistoryDialog(2条执行记录表格:任务名/状态徽章/耗时/执行时间/输出查看),点击行展开输出日志(Permission denied等),标签切换"查看"→"收起"
- console 零 JS 错误 ✅
- grep 确认 cronJobHelpers/CronJobFormDialog/ExecutionHistoryDialog 仅被 CronJobManager.tsx 和 ExecutionHistoryDialog.tsx 引用
- git push 成功 (commit f60809d) ✅
- **下一步建议**:
- 前端仍有接近700行可拆分: AppRelease.tsx(650)、ServerManager.tsx(645)、TraceManager.tsx(620)、GrafanaDashboard.tsx(616)
- sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分
- 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆)