docs: 添加项目评估、开发路线图、TDD开发计划三份核心文档

- PROJECT_EVALUATION.md: 综合评分72/100,15模块全量审计,工程质量(零测试)为最大风险
- ROADMAP.md: v0.3.0质量加固(当前)→v0.4.0企业级→v1.0.0智能化,含技术债务清单
- TDD_PLAN.md: 后端3阶段测试计划(覆盖率0%→50%),含K8s/Auth/Pipeline具体测试函数
This commit is contained in:
attacker committed 2026-06-21 21:20:04 +08:00
1 parent 9dbb7e9fc4
commit 3b112ee813
3 files changed
+757

No files matched your search

+200
View File
@@ -0,0 +1,200 @@
# AIOps 智能运维平台 — 项目评估报告
> 审计日期: 2026-06-21
> 审计方式: 全量代码扫描 + 模块逐项评估
> 当前版本: v0.2.0 (Phase 2 — AI 能力增强)
> 综合评分: **72 / 100**
---
## 一、项目概况
| 项目 | 说明 |
|------|------|
| **名称** | AIOps 智能运维平台 |
| **定位** | 企业级云原生智能运维解决方案 |
| **仓库** | gitee.com/attacker/aiops (master 分支) |
| **开发机** | 10.10.10.75 (Ubuntu 24.04, Go 1.22.2) |
| **生产机** | 10.10.10.150 (docker-compose 部署) |
| **部署方式** | 3 种: embed 单容器 / 二进制 / K8s |
| **近 7 天提交** | 171 次 (极度活跃) |
### 三大核心能力
1. **资产管理** — 服务器/云资源(云账号·域名·账单)/K8s 集群
2. **监控告警** — Agent 指标采集 / 告警引擎 / 告警中心 / 日志 / 链路追踪 / 监控大屏
3. **自动化运维 + AIOps** — CronJob/Script/Ansible / 资源审批 / AI 告警分析·故障诊断·脚本生成
---
## 二、技术架构评估
### 技术栈
| 层 | 技术 | 版本 | 端口 |
|----|------|------|------|
| 后端 | Go + Gin + GORM + SQLite(CGO) + JWT + Zap | Go 1.24 | 8080 |
| 前端 | React + TypeScript + Vite + Tailwind + shadcn/ui + Zustand + TanStack Query | React 19 | 5173 |
| Agent | Go (CGO_ENABLED=0 静态二进制, amd64+arm64) | Go 1.24 | — |
| 数据库 | SQLite (CGO) | — | — |
| 缓存 | Redis | — | 6379 |
### 代码规模
| 模块 | 行数 | 文件数 | 说明 |
|------|------|--------|------|
| 后端 Go | 28,633 | 60+ handler, 25 model | 含 K8s 2583 行 + client 1486 行 |
| 前端 TS/TSX | 50,287 | 15 组件目录 + 6 页面 | K8s 组件 22 个 |
| Agent Go | 1,701 | 13 文件 | 双通道: 指标采集 + 远程任务 |
| **合计** | **~80,621** | — | 中大型项目 |
### 架构亮点
- ✅ **Agent 双通道设计** — 指标采集 (10s 上报 `/proc`) + 远程任务 (5s 轮询),解耦清晰
- ✅ **5 套主题** — CSS 变量驱动,暗色/亮色/紫色/绿色/玫红一键切换
- ✅ **WebShell / PTY 终端** — WebSocket 实现,K8s exec + kubectl 双终端
- ✅ **3 种部署方式** — embed 单容器 / 二进制 / K8s,灵活适配
- ✅ **RBAC + Item-Role** — 细粒度数据级权限控制
- ✅ **WebSocket 实时能力** — 终端 / 指标流 / Pipeline 日志 / K8s exec
### 架构风险
- ⚠️ **SQLite + CGO** — 单文件数据库,并发写入受限,不适合多实例横向扩展
- ⚠️ **kubernetes.go 巨型文件** — 96KB / 2583 行 / 99 函数,严重违反单一职责
- ⚠️ **Go module 名仍为 `ezops`** — 与项目名 `aiops` 不一致 (历史遗留)
- ⚠️ **无消息队列** — 告警/任务全同步处理,高并发下可能阻塞
---
## 三、功能完成度评估
### 后端逐模块 (15 个功能模块)
| # | 模块 | Handler 文件 | 路由数 | 完成度 | 状态 |
|---|------|-------------|--------|--------|------|
| 1 | 认证/用户/角色 (JWT+RBAC) | user.go, user_admin.go, role.go, item_role.go | ~25 | 100% | ✅ 生产可用 |
| 2 | LDAP 集成 | ldap.go, ldap_ou.go, ldap_users.go | ~12 | 100% | ✅ 生产可用 |
| 3 | 仪表盘 | dashboard.go | ~4 | 100% | ✅ |
| 4 | 服务器管理 | server.go, server_batch.go, webshell.go | ~10 | 100% | ✅ 生产可用 |
| 5 | 云资源管理 | cloud_accounts/domain/platform/region/billing/sync | ~25 | 100% | ✅ 生产可用 |
| 6 | 监控告警 | prometheus/zabbix/snmp/site/alert* | ~40 | 95% | ✅ 告警渠道待完善 |
| 7 | **Kubernetes** | kubernetes.go (99 函数!) | 74 | 95% | ✅ 核心功能完备 |
| 8 | CI/CD 部署 | pipeline*.go, credential*.go, deploy*.go | ~30 | 90% | ✅ 执行器完备 |
| 9 | 自动化运维 | automation_cron/script, ansible.go | ~20 | 100% | ✅ 15 个 Ansible 模板 |
| 10 | 资源审批 | approval.go, approval_process.go | ~8 | 100% | ✅ 动态表单 |
| 11 | AI/LLM | llm*.go (chat/config/history) | ~10 | 90% | ✅ 多模型支持 |
| 12 | 操作审计 | audit.go | ~5 | 90% | ⚠️ CSV 导出 TODO |
| 13 | 导航/菜单 | navigation*.go | ~6 | 100% | ✅ |
| 14 | Agent 管理 | agent.go, agent_install.go, agent_task.go | ~15 | 100% | ✅ 含一键安装 |
| 15 | 监控数据源 | prometheus/zabbix_datasource + proxy | ~15 | 100% | ✅ |
### 前端逐模块
| 模块 | 组件数 | 代表组件 | 完成度 |
|------|--------|---------|--------|
| K8s 管理 | 22 | DeploymentDetail (719行), TopologyView (586行), PodFileBrowser (552行) | 95% |
| CI/CD 部署 | 8 | PipelineManager, PipelineEditor, CredentialManager | 90% |
| 监控告警 | 12 | AlertCenter, GrafanaDashboard, TraceManager | 90% |
| 服务器管理 | 6 | ServerManager, CloudServerImport, WebShell | 100% |
| 云资源 | 4 | CloudAccountManager, CloudBilling, DomainManager | 100% |
| 自动化 | 3 | AnsibleWorkflow (886行) | 100% |
| AI 助手 | 2 | AIOpsAssistant (686行) | 90% |
| 系统管理 | 4 | LdapManagementSection | 100% |
| 审批流程 | 3 | ApprovalFlow, ApprovalCreateDialog | 100% |
| 布局/UI | — | sidebar (689行) + shadcn/ui 全家桶 | 100% |
### Mock / TODO 清单
| 位置 | 类型 | 严重度 | 说明 |
|------|------|--------|------|
| `audit.go:223` | TODO | 低 | CSV/Excel 导出未实现 |
| `scripts/mock.go` | 种子数据 | 无 | 开发用 mock 数据生成器,非生产代码 |
| `scripts/seed*.go` | 种子数据 | 无 | K8s 资源种子数据 |
> **结论:** 生产代码中 Mock 极少,仅 1 个 TODO。功能真实度高。
---
## 四、多维度评分
| 维度 | 权重 | 得分 | 加权 | 说明 |
|------|------|------|------|------|
| 功能完整度 | 25% | **90** | 22.5 | 15 模块全部可用,K8s 99 函数覆盖极广 |
| 前后端对接 | 20% | **85** | 17.0 | 367 路由全连通,WebSocket 实时通道完备 |
| 工程质量 | 20% | **30** | 6.0 | ⚠️ **零测试!** 无 CI/CD,技术债集中在测试 |
| UI/UX | 15% | **85** | 12.75 | 5 主题,shadcn/ui,响应式,交互流畅 |
| 后端架构 | 20% | **70** | 14.0 | 模块清晰但 kubernetes.go 巨型,SQLite 限扩展 |
| **综合** | **100%** | — | **72.25** | **72 / 100** |
### 评分雷达图 (ASCII)
```
功能完整度 90
★★★★★
/ \
/ \
架构 70 ★ ★ 85 对接
\ /
\ /
工程质量 ★★★☆☆ ★★★★★ UI/UX
30 85
```
---
## 五、关键风险 (按严重度排序)
### 🔴 P0 — 必须立即处理
| # | 风险 | 影响 | 建议 |
|---|------|------|------|
| 1 | **零测试覆盖** | 任何改动无回归保护,171 次/周提交量下极其危险 | 立即建立后端单元测试,优先覆盖 K8s/CI-CD/认证模块 |
| 2 | **无 CI/CD 流水线** | 代码质量无门禁,构建/部署全手动 | 搭建 GitHub Actions/Gitea CI,PR 必须过测试+lint |
### 🟡 P1 — 本版本内处理
| # | 风险 | 影响 | 建议 |
|---|------|------|------|
| 3 | **SQLite 并发瓶颈** | 高并发写入锁竞争,无法多实例部署 | 评估迁移 MySQL/PostgreSQL (已有多数据库抽象层) |
| 4 | **kubernetes.go 巨型文件** | 96KB 维护困难,合并冲突高发 | 拆分为 cluster/deployment/pod/hpa/cronjob 等子文件 |
| 5 | **Go module 名 `ezops`** | 与项目名不一致,导入路径混乱 | 全局重命名 `ezops` → `aiops` |
| 6 | **无 API 文档自动生成** | 367 路由无 Swagger/OpenAPI | 引入 swaggo 自动生成 API 文档 |
### 🟢 P2 — 下个版本规划
| # | 风险 | 影响 | 建议 |
|---|------|------|------|
| 7 | **无消息队列** | 告警/任务同步处理 | 引入 Redis Stream / NATS 异步化 |
| 8 | **前端无 E2E 测试** | UI 回归靠人工 | 引入 Playwright 覆盖核心流程 |
| 9 | **审计日志 CSV 导出缺失** | 用户无法导出审计报表 | 实现 audit.go:223 TODO |
---
## 六、下一步行动 (优先级排序)
### 立即行动 (本周)
1. **搭建测试框架** — 后端 `testing` + `testify` + `httptest`,前端 `Vitest` + `React Testing Library`
2. **建立 CI 流水线** — `.gitea/workflows/ci.yml`:lint → test → build → docker push
3. **拆分 kubernetes.go** — 按资源类型拆为 6-8 个文件
### 短期 (2-4 周)
4. **编写核心模块测试** — K8s handler / Pipeline executor / Auth / Alert engine (覆盖率 > 50%)
5. **引入 Swagger** — `swag init` 生成 API 文档,367 路由全覆盖
6. **module 重命名** — `ezops` → `aiops` 全局替换
7. **前端测试基建** — Vitest + Playwright E2E 冒烟测试
### 中期 (1-2 月)
8. **数据库迁移评估** — SQLite → MySQL (利用现有 GORM 抽象层)
9. **告警异步化** — 引入 Redis Stream 解耦告警引擎
10. **可观测性** — 后端引入 Prometheus metrics + 结构化日志增强
---
## 七、总结
AIOps 平台在 **功能广度** 上已达到企业级水准 — 15 个功能模块、367 条路由、80K+ 行代码,K8s 管理能力尤其突出(99 个函数覆盖集群全生命周期)。前后端对接完整,UI/UX 打磨到位,部署方式灵活。
**最大短板是工程质量(30/100)**: 零测试、无 CI、巨型文件。在 171 次/周的高频提交节奏下,缺乏测试保护是最高风险。**当前阶段的战略重心应从"功能开发"转向"质量加固"** — 建立 TDD 流程、搭建 CI/CD、拆分巨型文件,为后续的多云管理和智能化升级打下坚实工程基础。