diff --git a/docs/dev-log.md b/docs/dev-log.md index 80c1488..6f7b811 100644 --- a/docs/dev-log.md +++ b/docs/dev-log.md @@ -1428,3 +1428,32 @@ cd ~/devops/aiops - TraceManager.tsx(620)/GrafanaDashboard.tsx(616) 属优雅降级组件(无后端),拆分价值低于真实业务组件 - sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分 - 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆) + + +## 2026-06-17 自动推进(cron)— AgentAlerts 拆分 + +- **任务**: 拆分 AgentAlerts.tsx(542行->311行),远离700行硬上限 +- **背景**: dev-log 上次建议优先拆真实业务组件 AgentAlerts/AnsibleManager(继 ScriptManager + SystemUserTab + ReleaseManager + ServerManager 拆分后,AgentAlerts 是监控告警模块中 Agent 告警页面主组件,包含告警事件列表 + 告警规则 CRUD + 规则编辑弹窗) +- **拆分方案**: + - `frontend/src/components/agent/agentAlertHelper.tsx` — **新建**(54行):提取 METRIC_OPTIONS(监控指标5选项含图标)、OPERATOR_OPTIONS(比较运算符5选项)、SEVERITY_OPTIONS(严重程度3选项含徽章配色)、getMetricLabel()(指标中文标签)、asList()(兼容多种列表响应格式)、severityBadge()(严重程度徽章组件) 为共享纯函数/常量 + - `frontend/src/components/agent/AgentRuleDialog.tsx` — **新建**(219行):规则编辑/新建弹窗,自包含状态(ruleForm + saving),useEffect 在 open 时填充表单(编辑回填/新建重置),提交逻辑内移(createRule/updateRule + 字段校验),Props: open/onOpenChange/editingRule/onSuccess + - `frontend/src/components/agent/AgentAlerts.tsx` — 主组件从 542 行降至 311 行(-231);移除 METRIC_OPTIONS/OPERATOR_OPTIONS/SEVERITY_OPTIONS 常量定义(迁移到 helper)、getMetricLabel/asList/severityBadge 函数定义(迁移到 helper)、规则编辑弹窗 JSX(115行,迁移到 AgentRuleDialog)、ruleForm/ruleSaving 状态 + handleSaveRule/resetRuleForm 函数(迁移到 AgentRuleDialog);保留状态管理(alerts/rules/loading/resolvedView/ruleOpen/editingRule) + loadData/handleResolve/handleDeleteRule/handleToggleRule CRUD handler + 两个 Tab(告警事件/告警规则)的内联渲染;规则弹窗替换为 `` 组件 +- **结果**: + - npx tsc --noEmit 零错误 ✅ + - npm run build 通过(3.15s) ✅ + - ./run.sh restart 后 /health 正常 + 前端 200 ✅ + - API 验证:/agent/alerts 返回 4 条告警, /agent/rules 返回 0 条规则 ✅ + - 浏览器验证 /agent-alerts(监控告警-Agent告警菜单): + - 告警事件 Tab:4 条告警卡片完整渲染,含严重程度徽章(警告/严重/提示) + 规则名称 + 描述 + 主机名 + 指标 + 当前值 + 时间 + 恢复按钮 + - 未恢复/已恢复切换按钮正常 + - 告警规则 Tab:空状态正确渲染(暂无告警规则 + 新建规则/创建第一条规则按钮) + - "新建规则"按钮打开 AgentRuleDialog(空表单:规则名称+监控指标默认CPU+严重程度默认警告+比较运算符默认>大于+阈值默认90+持续时间默认60+启用开关开启+取消/创建按钮) + - console 零 JS 错误 ✅ + - grep 确认 agentAlertHelper 被 AgentAlerts+AgentRuleDialog 引用,AgentRuleDialog 仅被 AgentAlerts 引用 + - git push 成功 (commit 9276718) ✅ +- **下一步建议**: + - 前端仍有接近700行可拆分: TopologyView.tsx(576)、ExcelServerImport.tsx(549)、AIAlertAnalyzer.tsx(541)、AnsibleManager.tsx(535) + - 优先拆 AnsibleManager(真实业务组件,自动化运维模块),TopologyView 拖拽逻辑复杂拆分需谨慎 + - TraceManager.tsx(620)/GrafanaDashboard.tsx(616) 属优雅降级组件(无后端),拆分价值低于真实业务组件 + - sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分 + - 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆)