diff --git a/docs/dev-log.md b/docs/dev-log.md index 278eaa9..f13468a 100644 --- a/docs/dev-log.md +++ b/docs/dev-log.md @@ -1338,3 +1338,33 @@ cd ~/devops/aiops - sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分 - services/api.ts(670行) 为 API 服务聚合文件(非组件),不在 700 行组件硬上限内 - 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆) + + +## 2026-06-17 自动推进(cron)— ReleaseManager 拆分 + +- **任务**: 拆分 ReleaseManager.tsx(581行->368行),远离700行硬上限 +- **背景**: dev-log 上次建议的预防性维护项(继 ServerManager + AppRelease + CronJobManager + CloudBilling + ApprovalFlow + AgentMonitor + AIPredictiveAnalytics 拆分后,ReleaseManager 是应用发布模块中尚未拆分且最接近 700 行限制的业务组件)。注意:ReleaseManager(发布管理-含审批流) 与 AppRelease(应用发布) 是两个不同页面,状态标签语义不同(待审批 vs 待发布),故新建独立 helper 文件避免与已有 releaseHelpers.tsx 命名冲突 +- **拆分方案**: + - `frontend/src/components/deploy/releaseManagerHelpers.tsx` — 新建(51行):提取 ENVIRONMENTS(环境配置常量)、getStatusBadge()(审批流状态徽章: 待审批/已审批/已驳回/发布中/发布成功/发布失败/已回滚)、getEnvironmentBadge()(环境徽章) 为共享纯函数。命名独立于 AppRelease 的 releaseHelpers.tsx(二者状态标签语义不同) + - `frontend/src/components/deploy/ReleaseApplyDialog.tsx` — 新建(162行):新建发布申请弹窗,自包含状态(form+submitting),useEffect 在 open 时重置表单,提交逻辑内移(releaseApi.createRelease + 字段校验),Props: open/onOpenChange/onSuccess + - `frontend/src/components/deploy/ReleaseApproveDialog.tsx` — 新建(94行):审批/驳回弹窗,自包含状态(submitting),提交逻辑内移(approveRelease/rejectRelease),useEffect 在关闭时重置 loading,Props: release/open/onOpenChange/onSuccess + - `frontend/src/components/deploy/ReleaseManager.tsx` — 主组件从 581 行降至 368 行(-213);移除 newRelease/submitting 状态(迁移到 ApplyDialog) + handleCreateRelease 函数(迁移到 ApplyDialog) + handleApprove 函数(迁移到 ApproveDialog) + getStatusBadge/getEnvironmentBadge/ENVIRONMENTS 内联定义(迁移到 helpers);保留只读 Detail Dialog 内联(无业务逻辑);移除未使用的导入(Badge/Textarea/Label/CheckCircle/XCircle/Clock/AlertCircle/X);内联两个 Dialog JSX 替换为 ReleaseApplyDialog + ReleaseApproveDialog 组件 +- **结果**: + - npx tsc --noEmit 零错误 + - npm run build 通过(3.13s) + - ./run.sh restart 后 /health 正常 + 前端 200 + - API 验证:/api/v1/releases 返回 total=10, list_len=10 + - 浏览器验证 /releases(应用发布-发布管理菜单): + - 5 个统计卡片正常渲染(待审批/发布中/发布成功/发布失败/已回滚) + - 10 个发布卡片完整渲染,状态徽章正确(待审批-琥珀/发布成功-绿/发布失败-红/已回滚-灰),环境徽章正确(生产/预发/开发/测试) + - 操作按钮按状态上下文正确显示:pending=审批、approved=部署、success/failed=回滚、rolled_back=无回滚按钮 + - "新建发布"按钮打开 ReleaseApplyDialog(空表单:应用名称+版本号+目标环境默认开发环境+Commit ID+提交信息+发布说明,取消/提交申请按钮) + - "审批"按钮打开 ReleaseApproveDialog(标题审批发布 + 驳回/通过按钮) + - console 零 JS 错误 + - grep 确认 releaseManagerHelpers/ReleaseApplyDialog/ReleaseApproveDialog 仅被 ReleaseManager.tsx 引用 + - git push 成功 (commit 796cc35) +- **下一步建议**: + - 前端仍有接近700行可拆分: TraceManager.tsx(620)、GrafanaDashboard.tsx(616)、SystemUserTab.tsx(588)、TopologyView.tsx(576)、ScriptManager.tsx(546) + - 注意:TraceManager/GrafanaDashboard 属优雅降级组件(无后端),拆分价值低于真实业务组件,优先拆 SystemUserTab/ScriptManager + - sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分 + - 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆)