From 8a4ae0ac5ceb1ba724863ad9a95494efa0831b87 Mon Sep 17 00:00:00 2001 From: attacker Date: Tue, 16 Jun 2026 22:08:47 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20update=20dev-log=20-=20CronJobManager?= =?UTF-8?q?=20=E6=8B=86=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/dev-log.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/docs/dev-log.md b/docs/dev-log.md index b32c566..67bbefc 100644 --- a/docs/dev-log.md +++ b/docs/dev-log.md @@ -1250,3 +1250,33 @@ cd ~/devops/aiops - 前端仍有接近700行可拆分: CronJobManager.tsx(652)、AppRelease.tsx(650)、ServerManager.tsx(645)、TraceManager.tsx(620)、GrafanaDashboard.tsx(616) - sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分 - 后端 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 替换为 `` + `` 组件 +- **结果**: + - 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行) 属已移除菜单死代码(保留不拆)