docs: update dev-log - ServerManager 拆分

This commit is contained in:
attacker committed 2026-06-17 01:07:08 +08:00
1 parent 7dc5cdb7f2
commit 76bcf3e135
1 file changed
+29
+29
View File
@@ -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 替换为 `<ServerTableRow>` 组件(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行) 属已移除菜单死代码(保留不拆)