From dcc13d7068eae6ff79d6b65e7d1d9f1f31a268d8 Mon Sep 17 00:00:00 2001 From: attacker Date: Wed, 17 Jun 2026 00:06:19 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20update=20dev-log=20-=20AppRelease=20?= =?UTF-8?q?=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 | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/docs/dev-log.md b/docs/dev-log.md index 67bbefc..04a8773 100644 --- a/docs/dev-log.md +++ b/docs/dev-log.md @@ -1280,3 +1280,32 @@ cd ~/devops/aiops - 前端仍有接近700行可拆分: AppRelease.tsx(650)、ServerManager.tsx(645)、TraceManager.tsx(620)、GrafanaDashboard.tsx(616) - sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分 - 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆) + + +## 2026-06-17 自动推进(cron) + +- **任务**: 拆分 AppRelease.tsx(650行→339行),远离700行硬上限 +- **背景**: dev-log 上次建议的预防性维护项(继 CronJobManager + CloudBilling + ApprovalFlow + AgentMonitor + AIPredictiveAnalytics 拆分后,AppRelease 是应用发布模块中最接近 700 行限制的业务组件) +- **拆分方案**: + - `frontend/src/components/deploy/releaseHelpers.tsx` — **新建**(92行):提取 `getStatusBadge()`(发布状态徽章,主列表+详情弹窗共用)、`getEnvBadge()`(环境徽章)、`PIPELINE_STEPS` 常量(模拟流水线步骤数组)为共享纯函数/常量 + - `frontend/src/components/deploy/ReleaseDetailDialog.tsx` — **新建**(138行):发布详情弹窗(流水线进度+构建日志+重新部署按钮),自包含状态(submitting),重新部署逻辑内移(releaseApi.deployRelease),Props: release/open/onOpenChange/onSuccess + - `frontend/src/components/deploy/ReleaseCreateDialog.tsx` — **新建**(162行):新建发布弹窗(应用名/版本/环境/Commit ID/提交信息/发布说明),自包含状态(form+submitting),提交逻辑内移(releaseApi.createRelease + 表单校验),Props: open/onOpenChange/onSuccess + - `frontend/src/components/deploy/AppRelease.tsx` — 主组件从 650 行降至 339 行(-311);移除 newRelease/submitting 状态 + handleCreateRelease 函数(迁移到 CreateDialog) + getStatusBadge/getEnvBadge/pipelineSteps 内联定义(迁移到 helpers) + selectedRelease 的重新部署逻辑(迁移到 DetailDialog);移除未使用的导入(Dialog/DialogContent/DialogDescription/DialogFooter/DialogHeader/DialogTitle/Textarea/Label/Rocket*部分/CardHeader/CardTitle/Progress/Tabs/Play/User/MoreHorizontal/Pause/ArrowLeft/ArrowRight);内联两个 Dialog JSX 替换为 `` + `` 组件 +- **结果**: + - npx tsc --noEmit 零错误 ✅ + - npm run build 通过(3.11s) ✅ + - ./run.sh restart 后 /health 正常 + 前端 200 ✅ + - API 验证:/api/v1/releases 返回 total=10, list_len=10 ✅ + - 浏览器验证 /deploy(应用发布菜单): + - 4 个统计卡片正常渲染(今日发布=10/发布成功=7/发布失败=1/成功率=70%) + - 10 行发布记录表格正常渲染(应用名称/版本/环境徽章/状态徽章/代码Commit/发布人/开始时间/操作),状态徽章正确显示(成功/失败/待发布/已回滚),操作列按状态显示对应按钮(详情/重试/回滚) + - 筛选器正常(搜索框+全部环境下拉+全部状态下拉) + - "详情"按钮打开 ReleaseDetailDialog(支付网关 v3.0.1,发布进度8步+构建日志+重新部署按钮,因状态=failed显示重新部署) + - "新建发布"按钮打开 ReleaseCreateDialog(空表单:应用名称+版本号+目标环境(开发环境默认)+Commit ID+提交信息+发布说明,取消/提交申请按钮) + - console 零 JS 错误 ✅ + - grep 确认 releaseHelpers/ReleaseDetailDialog/ReleaseCreateDialog 仅被 AppRelease.tsx 引用(ReleaseDetailDialog 引用 releaseHelpers 的 PIPELINE_STEPS) + - git push 成功 (commit 28655b4) ✅ +- **下一步建议**: + - 前端仍有接近700行可拆分: ServerManager.tsx(645)、TraceManager.tsx(620)、GrafanaDashboard.tsx(616)、SystemUserTab.tsx(588) + - sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分 + - 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆)