docs: update dev-log - ReleaseManager 拆分

This commit is contained in:
attacker committed 2026-06-17 02:06:27 +08:00
1 parent 796cc35fb3
commit 367232f2b3
1 file changed
+30
+30
View File
@@ -1338,3 +1338,33 @@ cd ~/devops/aiops
- sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分 - sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分
- services/api.ts(670行) 为 API 服务聚合文件(非组件),不在 700 行组件硬上限内 - services/api.ts(670行) 为 API 服务聚合文件(非组件),不在 700 行组件硬上限内
- 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆) - 后端 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行) 属已移除菜单死代码(保留不拆)