diff --git a/docs/dev-log.md b/docs/dev-log.md index 8ad5bf5..a8bb19c 100644 --- a/docs/dev-log.md +++ b/docs/dev-log.md @@ -794,6 +794,53 @@ cd ~/devops/aiops - git push 成功 (commit 18dffa8) **下一步建议**: -- ScriptManager.tsx 同类问题排查(toast/confirm/主题色/空状态) -- AnsibleManager.tsx 同类问题排查 -- 服务器管理(ServerManager) CRUD 前后端联调验证 +- ScriptManager.tsx 同类问题排查(toast/confirm/主题色/空状态)— ✅ 已确认无需修改(已有confirm+toast+主题色) +- AnsibleManager.tsx 同类问题排查 — ✅ 已确认无需修改(已有confirm+toast+主题色) +- 服务器管理(ServerManager) CRUD 前后端联调验证 — ✅ 已完成(CRUD全链路+导入弹窗主题化) + + +## 2026-06-15 19:00 自动推进 + +### 任务: 服务器导入弹窗主题化 + ServerManager CRUD 联调验证 + +**背景**: 服务器管理的两个批量导入弹窗(CloudServerImport / ExcelServerImport)仍全量使用硬编码 `bg-slate-900/800`、`border-slate-700`、`text-slate-100/300/400/500` 等 Tailwind 暗色类,导致切换到亮色主题或其他主题时弹窗仍显示为固定暗色(与主界面不一致)。同时 CloudServerImport 缺少 ``,Radix 会输出 `Missing Description for {DialogContent}` 警告。此外需验证 ServerManager CRUD 全链路前后端联调。 + +**修改文件**: +- `frontend/src/components/server/CloudServerImport.tsx` — 全量主题化(358行): + - `bg-slate-900 border-slate-700 text-slate-100`(DialogContent) → `bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]` + - `bg-slate-800 text-slate-500`(未激活步骤) → `bg-[var(--dg-bg-secondary)] text-[var(--dg-text-muted)]` + - `border-slate-700 hover:border-slate-600 bg-slate-800/50`(未选中卡片) → `border-[var(--dg-border)] hover:border-blue-500 bg-[var(--dg-bg-secondary)]` + - `border-slate-700 text-slate-300`(按钮) → `border-[var(--dg-border)] text-[var(--dg-text-secondary)]` + - `bg-slate-800`(表头) → `bg-[var(--dg-bg-secondary)]`、`divide-slate-800` → `divide-[var(--dg-border)]`、`hover:bg-slate-800/50` → `hover:bg-[var(--dg-bg-hover)]` + - `text-slate-200/300/400/500/600`(各文本) → 对应 `--dg-text-primary/secondary/muted` + - **新增 ``** 消除 Radix Missing Description 警告 + - 保留语义状态色(emerald/running badge)不变 + +- `frontend/src/components/server/ExcelServerImport.tsx` — 全量主题化(549行): + - 同样的 token → CSS 变量映射(DialogContent/Card/Input/select/table/badge 全覆盖) + - `bg-slate-800 text-slate-500`(未激活步骤圆) → `bg-[var(--dg-bg-secondary)] text-[var(--dg-text-muted)]` + - `border-slate-700`(模板卡/区域下拉/上传区虚线框) → `border-[var(--dg-border)]` + - `bg-slate-800/50`(连接方式未选中卡/预览表行 hover) → `bg-[var(--dg-bg-hover)]` + - `text-slate-300`(表头字体) → `text-[var(--dg-text-secondary)]` + - 已有 DialogDescription,无需新增 + +**ServerManager CRUD 联调验证**(curl 端到端): +- `GET /servers?page_size=3` → 47 台服务器,字段完整(hostname/ip/cpu/memory/status...)✅ +- `POST /servers` → code 200 "创建成功", new_id=57 ✅ +- `GET /servers/57` → hostname=test-cron-vm, ip=10.99.99.99, status=running ✅ +- `DELETE /servers/57` → code 200 "删除成功" ✅ + +**验证结果**: +- 前端 `tsc --noEmit` 零错误 ✅ +- 前端 `npm run build` 通过(2,115 KB)✅ +- 浏览器验证:Excel导入弹窗 → 三步引导(配置/上传/确认)正常渲染、区域下拉有真实数据(华北-北京)、模板卡/连接方式卡可交互 ✅ +- 浏览器验证:云主机导入弹窗 → 5个云平台卡片(AWS/阿里云/腾讯云/华为云/Azure)正常渲染 ✅ +- console 零错误零警告(DialogDescription 修复生效)✅ +- git push 成功 (commit c111be7) ✅ + +**关键修复点**: CloudServerImport 缺少 `` 是 Radix Dialog 的常见遗漏(FE Pitfall #8)。每次新增或修改 Dialog 时必须确认包含 ``(即使 `className="sr-only"`)。 + +**下一步建议**: +- 清理服务器模块死代码:CabinetView.tsx(422行) 和 ResourceModelManager.tsx(394行) 已无任何 import 引用(菜单已移除),可安全删除(共 816 行死代码) +- 监控告警模块(AgentAlerts/GrafanaDashboard/TraceView)主题色排查 +- 资源申请模块(ApprovalManager)前后端联调验证