From 76bcf3e1355dc9ee93058b3d31f66ab2c0673dbc Mon Sep 17 00:00:00 2001 From: attacker Date: Wed, 17 Jun 2026 01:07:08 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20update=20dev-log=20-=20ServerManager=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 04a8773..278eaa9 100644 --- a/docs/dev-log.md +++ b/docs/dev-log.md @@ -1309,3 +1309,32 @@ cd ~/devops/aiops - 前端仍有接近700行可拆分: ServerManager.tsx(645)、TraceManager.tsx(620)、GrafanaDashboard.tsx(616)、SystemUserTab.tsx(588) - sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分 - 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆) + + +## 2026-06-17 自动推进(cron)— ServerManager 拆分 + +- **任务**: 拆分 ServerManager.tsx(645行→462行),远离700行硬上限 +- **背景**: dev-log 上次建议的预防性维护项(继 AppRelease + CronJobManager + CloudBilling + ApprovalFlow + AgentMonitor + AIPredictiveAnalytics 拆分后,ServerManager 是资产管理模块中最接近 700 行限制的业务组件) +- **拆分方案**: + - `frontend/src/components/server/serverHelpers.tsx` — **新建**(63行):提取 `getTags()`(标签解析,主列表+导出共用)、`getStatusBadge()`(服务器状态徽章,4种状态)、`getUsageColor()`(使用率进度条颜色,CPU/内存通用)为共享纯函数 + - `frontend/src/components/server/ServerTableRow.tsx` — **新建**(166行):纯展示子组件,提取整行表格 JSX(9列:选择框+主机名+IP+公网IP+状态徽章+配置+使用率进度条+标签+操作菜单),Props: server/selected/onToggleSelect/onOpenTerminal/onOpenEdit/onDelete(接收回调,不直接调 API) + - `frontend/src/components/server/ServerManager.tsx` — 主组件从 645 行降至 462 行(-183);移除 getTags 内联定义(迁移到 helpers,handleExport 仍用)、getStatusBadge 内联定义(迁移到 helpers)、整行 JSX(迁移到 ServerTableRow);移除未使用的导入(Badge/type Server as ServerType/MoreHorizontal/Terminal/Edit/Server as ServerIcon);内联行 JSX 替换为 `` 组件(13行替代143行) +- **结果**: + - npx tsc --noEmit 零错误 ✅ + - npm run build 通过(3.11s) ✅ + - ./run.sh restart 后 /health 正常 + 前端 200 ✅ + - API 验证:/api/v1/servers 返回 total=47 ✅ + - 浏览器验证 /servers(服务器管理菜单): + - 4 个统计卡片正常渲染(服务器总数=20/运行中=8/维护中=9/已停止=3) + - 表格完整渲染 9 列(选择框/主机名+OS/IP/公网IP/状态徽章/配置/使用率进度条/标签/操作),47 台服务器行正常 + - 状态徽章正确显示(运行中-绿/维护中-黄/已停止-灰),使用率进度条颜色正确(绿/黄/红) + - 标签正确解析展示(project:N team:N 格式,JSON对象→key:value) + - console 零 JS 错误 ✅ + - 行操作菜单按钮存在(Radix DropdownMenu 在 headless 自动化下不展开是已知限制 FE3,非回归) + - grep 确认 serverHelpers 被 ServerManager+ServerTableRow 引用,ServerTableRow 仅被 ServerManager 引用 + - git push 成功 (commit 7dc5cdb) ✅ +- **下一步建议**: + - 前端仍有接近700行可拆分: TraceManager.tsx(620)、GrafanaDashboard.tsx(616)、SystemUserTab.tsx(588)、ReleaseManager.tsx(581)、TopologyView.tsx(576) + - sidebar.tsx(689行) 为 shadcn 标准 UI 组件,context 已提取,剩余无需拆分 + - services/api.ts(670行) 为 API 服务聚合文件(非组件),不在 700 行组件硬上限内 + - 后端 sql_audit.go(435行) 属已移除菜单死代码(保留不拆)