Files
aiops/ROADMAP.md
T
attacker e29dfb5868 docs: 全量重新评估 — PROJECT_EVALUATION/ROADMAP/TDD_PLAN 清空重写
基于全项目深度审计(96,102 行 / 374 文件),从 K8s 专项开发全面转向:

PROJECT_EVALUATION.md:
- 全量评估 8 大功能模块(资产/K8s/发布/监控/自动化/AIOps/审批/系统)
- 技术债清单:前端 1026 处 any + 后端 4204 行 kubernetes.go + 1324 行 api.ts
- Mock API 缺口:dashboardApi(6) / traceApi(3) / alertCenterApi.silence(1)
- 综合评分 83/100

ROADMAP.md:
- P0 工程质量:Q1 类型安全治理 / Q2 kubernetes.go 拆分 / Q3 api.ts 拆分
- P1 功能补全:F1 告警静默 / F2 审计导出 / F3 前端 RBAC
- P2 架构优化:A1 K8s 路由统一 / A2 告警分布式 / A3 WebSocket 管理
- P3 用户体验:U1 虚拟滚动 / U2 DataTable / U3 i18n / U4 镜像优化

TDD_PLAN.md:
- P0-P1 每个模块完整验证用例
- 回归测试基线(10 个核心 API 端点)
- 全部改用 Python urllib(避免 shell 引号问题)
2026-06-25 01:09:32 +08:00

210 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AIOps 智能运维平台 — 优化路线图
> 基于全量审计(96,102 行代码 / 374 文件),从「K8s 功能开发」全面转向「工程质量 + 功能补全 + 架构治理」。
> 最后更新: 2026-06-25
---
## 当前状态:功能开发阶段已完成
| 大模块 | 完成度 | 说明 |
|--------|:------:|------|
| 资产管理 | 100% | 服务器/云账号/域名/账单/Agent 全功能 |
| Kubernetes 管理 | 100% | M1-M14 全部完成(14 个子模块) |
| 应用发布 | 100% | CI/CD 流水线 + SSH/K8s 双路径 |
| 监控告警 | 80% | Agent 监控 + 告警引擎完善;缺:大屏/链路追踪/告警静默 |
| 自动化运维 | 100% | CronJob/脚本/Ansible |
| AIOps 智能 | 100% | 6 种 LLM + 告警分析 + 容量预测 |
| 系统管理 | 95% | 审计导出 TODO |
---
## P0 — 工程质量治理(最高优先级)
> 目标:从「能跑」升级到「能维护」。解决前端类型安全和后端巨型文件问题。
### Q1: 前端类型安全治理 [pending]
**问题**: 1026 处 `any` 类型 + 218 处未使用变量
**方案**:
1. 建立 `frontend/src/types/` 后端响应类型定义库(当前仅 375 行,覆盖率极低)
2. 按模块定义接口:`types/kubernetes.ts` / `types/server.ts` / `types/pipeline.ts` 等
3. 逐步将 `any` 替换为具体接口类型
4. 清理 218 处 `no-unused-vars`
5. 移除 93 处 `console.*`(特别是 `api.ts:280` 泄露 token 的调试日志)
6. 配置 CI `tsc --noEmit` 零错误门禁
**验收标准**:
- [ ] `types/` 目录覆盖所有后端响应结构
- [ ] `any` 类型从 1026 处降至 < 50 处
- [ ] `npx tsc --noEmit` 零错误
- [ ] ESLint `no-unused-vars` 降至 < 20 处
- [ ] `console.*` 降至 < 10 处(仅保留 error 级别)
### Q2: 后端 kubernetes.go 模块化拆分 [pending]
**问题**: 单文件 4204 行 / 134 函数,全仓最大文件
**方案**:
```
handlers/kubernetes.go (4204L)
→ handlers/k8s_cluster.go (集群 CRUD + 同步 + metrics)
→ handlers/k8s_workload.go (Deployment/STS/DS 读写操作)
→ handlers/k8s_pod.go (Pod 日志/终端/文件/exec)
→ handlers/k8s_yaml.go (通用 YAML get/update)
→ handlers/k8s_namespace.go (Namespace CRUD + 配额)
→ handlers/k8s_events.go (事件列表 + 聚合)
→ handlers/k8s_node.go (Node 详情 + 资源分配)
→ handlers/k8s_compare.go (多集群对比)
```
**验收标准**:
- [ ] 拆分后单文件不超过 800 行
- [ ] 所有路由不变,API 响应不变
- [ ] `go build` 零错误
- [ ] 411 条路由全部可访问(回归测试)
### Q3: 前端 api.ts 模块化拆分 [pending]
**问题**: 单文件 1324 行 / 352 方法
**方案**:
```
services/api.ts (1324L)
→ services/api/kubernetes.ts (78 方法)
→ services/api/deploy.ts (34 方法)
→ services/api/agent.ts (23 方法)
→ services/api/alert.ts (21 方法)
→ services/api/server.ts (11 方法)
→ services/api/cloud.ts (12 方法)
→ services/api/index.ts (统一 re-export)
```
**验收标准**:
- [ ] 拆分后单文件不超过 300 行
- [ ] 所有 import 路径正确
- [ ] `npm run build` 零错误
- [ ] 352 个 API 方法全部保留
---
## P1 — 功能补全
> 目标:消除前端 mock 桩,补全监控模块缺失的后端。
### F1: 告警静默规则 [pending]
**问题**: `alertCenterApi.silence` 硬编码返回 `{success:true}`
**方案**:
- 后端新增 `alert_silences` 表 + CRUD API
- 告警引擎评估时检查静默规则(匹配 namespace/label/时间窗)
- 前端 AlertCenter 新增「静默规则」Tab
**验收标准**:
- [ ] 可创建/查看/删除静默规则
- [ ] 静默期间告警引擎不触发通知
- [ ] 静默到期自动恢复
### F2: 审计日志导出 [pending]
**问题**: 后端 `audit.go` 导出功能仅返回 JSON(TODO)
**方案**:
- 实现 CSV/Excel 导出(用 `excelize` 库)
- 前端添加「导出」按钮
**验收标准**:
- [ ] 可导出为 Excel 格式
- [ ] 支持按时间/用户/操作类型筛选导出
### F3: 前端 RBAC 按钮级控制 [pending]
**问题**: 后端 RBAC 完善,但前端无按钮级权限控制
**方案**:
- 封装 `<HasPermission permission="xxx">` 组件
- Sidebar 菜单按角色过滤
- 操作按钮根据权限显示/隐藏
**验收标准**:
- [ ] 不同角色看到不同菜单
- [ ] 无权限按钮自动隐藏
- [ ] 权限变更后实时生效
---
## P2 — 架构优化
### A1: K8s 双路由体系统一 [pending]
**问题**: 104 条 K8s 路由存在集群域 `/kubernetes-clusters/:id/...` 和 Kuboard 域 `/kubernetes/:code/...` 两套
**方案**: 以 Kuboard code 路由为主,ID 路由保留向后兼容(标记 deprecated)
### A2: 告警引擎分布式安全 [pending]
**问题**: 告警引擎用 goroutine + 30s ticker 常驻,多副本会重复告警
**方案**: Redis 分布式锁(每轮 ticker 先抢锁),或选主机制
### A3: WebSocket 连接统一管理 [pending]
**问题**: WebShell/kubectl/PodExec/日志流各有 WebSocket 实现
**方案**: 封装统一的 WebSocket 管理器(断线重连 + 心跳 + 消息分发)
---
## P3 — 用户体验提升
### U1: 虚拟滚动 [pending]
- Pod 列表(1000+ Pod 场景)使用 `@tanstack/react-virtual`
- 事件列表、审计日志列表
### U2: 统一 DataTable 组件 [pending]
- 封装排序/筛选/分页/导出/列自定义的通用表格
- 替换散布在各页面的手写表格
### U3: 国际化 (i18n) [pending]
- 提取所有中文文案到 `i18n/zh-CN.json`
- 预留 `en-US.json` 扩展
### U4: 后端镜像优化 [pending]
- Backend 277MB → 目标 < 150MB(多阶段构建优化,移除 Agent 编译工具链)
- 或使用 distroless 基础镜像
---
## 模块状态追踪
| ID | 模块 | 优先级 | 状态 |
|----|------|:------:|:----:|
| Q1 | 前端类型安全治理 | P0 | pending |
| Q2 | kubernetes.go 拆分 | P0 | pending |
| Q3 | api.ts 拆分 | P0 | pending |
| F1 | 告警静默规则 | P1 | pending |
| F2 | 审计日志导出 | P1 | pending |
| F3 | 前端 RBAC 控制 | P1 | pending |
| A1 | K8s 路由统一 | P2 | pending |
| A2 | 告警引擎分布式 | P2 | pending |
| A3 | WebSocket 管理 | P2 | pending |
| U1 | 虚拟滚动 | P3 | pending |
| U2 | 统一 DataTable | P3 | pending |
| U3 | 国际化 | P3 | pending |
| U4 | 镜像优化 | P3 | pending |
---
## 状态标记规则
```
pending → in_progress → done / blocked
```
每个模块完成后:
1. 更新本文件状态
2. 更新 PROJECT_EVALUATION.md 对应行
3. git commit message 格式: `refactor: Q2 kubernetes.go 模块化拆分`