Files
aiops/PROJECT_EVALUATION.md
T
attacker be2a377f01 feat(rbac): F3 前端 RBAC 按钮级控制
后端:
- 新增 GET /user/permissions 端点返回当前用户权限码
- Login 响应附带 permissions 数组
- collectUserPermissionCodes 用 raw SQL JOIN 避免 GORM many2many 表名问题
- admin 用户返回 ['*'] 通配符

前端:
- usePermission hook (hasPermission/hasAnyPermission/hasAllPermissions)
- <HasPermission> 组件 (permission/anyOf/allOf + fallback)
- zustand store 新增 permissions 字段
- Sidebar 菜单递归过滤 (42 菜单项全部标注 permission)
- ServerManager: 添加/导入/批量删除按钮按权限显隐
- ServerTableRow: 终端/编辑/文件/删除按权限显隐
- SystemUserTab: 新建/导入/编辑/删除按钮按权限显隐
- MainLayout: 页面刷新自动拉取权限
- Login: 登录时存储 permissions

验证:
- admin: permissions=['*'] 通配符
- viewer: 7 个只读权限 (dashboard:view/server:view/...)
- viewer 无 server:create/delete
- 10/10 回归测试通过
- npm run build 零错误
2026-06-25 22:51:25 +08:00

208 lines
9.3 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 智能运维平台 — 全量项目评估
> 最后审计: 2026-06-25 | 审计范围: 全项目(后端/前端/Agent/部署) | 审计人: AI + Logan
---
## 一、项目规模总览
| 层 | 文件数 | 代码行数 | 语言/框架 |
|----|--------|----------|-----------|
| **后端** | 116 个 .go | **34,485** | Go 1.24 / Gin / GORM / MySQL 8 / Redis 7 |
| **前端** | 237 个 .tsx/.ts | **58,648** | React 19 / TypeScript / Vite / Tailwind / shadcn/ui |
| **Agent** | 21 个 .go | **2,969** | Go 1.24 静态编译 (CGO_ENABLED=0) |
| **合计** | **374** | **96,102** | — |
### 关键指标
| 指标 | 数量 |
|------|------|
| 后端 API 路由 | **411 条**(GET 171 / POST 144 / DELETE 54 / PUT 41 / PATCH 1) |
| 后端业务模块 | **48 个**(handlers 目录) |
| 数据库表 | **86 张** GORM 映射表 |
| 前端 API 方法 | **352 个**(31 个模块) |
| 前端路由 | **~50 条**(45 个 lazy 组件,零空壳) |
| 前端组件 | **215 个** |
| Agent 采集器 | **11 个**(CPU/Memory/Swap/Disk/DiskIO/Network/Port/ProcessTop/FD/ContextSwitch/HealthProbe) |
| 侧边栏菜单 | **9 个一级 / 42 个二级** |
---
## 二、功能模块评估
### 2.1 资产管理 ✅ 完善
| 功能 | 后端 | 前端 | 状态 |
|------|:----:|:----:|:----:|
| 服务器 CRUD + CSV 批量导入 | ✅ | ✅ ServerManager (609L) | ✅ |
| WebShell SSH 终端 | ✅ webshell.go (325L) | ✅ xterm.js WebSocket | ✅ |
| 云账号管理(AWS/阿里/华为) | ✅ cloud_sync.go (277L) | ✅ CloudAccountManager | ✅ |
| 域名/区域/平台管理 | ✅ | ✅ | ✅ |
| 云账单 | ✅ billing.go (307L) | ✅ | ✅ |
| Agent 管理(安装/卸载/升级) | ✅ agent.go(624L) + agent_install.go(514L) | ✅ AgentWizard + HostMonitor | ✅ |
### 2.2 Kubernetes 管理 ✅ 功能完备
| 功能 | 后端 | 前端 | 状态 |
|------|:----:|:----:|:----:|
| 多集群 CRUD + 同步 + metrics | ✅ kubernetes.go (4204L, 134 函数) | ✅ ClusterOverviewPage | ✅ |
| Deployment 三模式编辑器 | ✅ GetYAML/UpdateYAML | ✅ DeploymentWorkload (773L) + 5 Tab 编辑器 (~2700L) | ✅ |
| StatefulSet/DaemonSet 详情 | ✅ | ✅ WorkloadViewPage (480L) | ✅ |
| Pod 日志/终端/文件浏览 | ✅ WebSocket channel.k8s.io | ✅ PodLogsViewer/PodExecTerminal/PodFileBrowser | ✅ |
| Node 详情(资源分配率) | ✅ GetNodeDetail | ✅ NodeDetailPage (330L) | ✅ |
| 事件聚合看板 | ✅ GetEventsSummary | ✅ EventsPage (480L, recharts) | ✅ |
| 多集群对比 | ✅ GetMultiClusterComparison | ✅ ClusterComparePage (360L) | ✅ |
| Namespace 管理 CRUD | ✅ GetNamespacesDetail | ✅ NamespaceManagementPage (280L) | ✅ |
| kubectl 终端 | ✅ PTY | ✅ KubectlTerminal | ✅ |
| ConfigMap/Secret 编辑 | ✅ UpdateResourceYAMLNS | ✅ YamlViewer(CodeMirror 6) | ✅ |
| YAML 语法高亮编辑器 | ✅ | ✅ CodeMirror 6 | ✅ |
### 2.3 应用发布 ✅ 完善
| 功能 | 后端 | 前端 | 状态 |
|------|:----:|:----:|:----:|
| CI/CD 流水线(GitLab CI 风格) | ✅ pipeline.go(580L) + pipeline_executor.go(665L) | ✅ PipelineManager(961L) + PipelineEditor(602L) | ✅ |
| SSH 主机 + Kubernetes 双路径 | ✅ | ✅ 流水线横幅 | ✅ |
| 发布配置/凭证/工具 | ✅ credential.go(400L) | ✅ CredentialManager(822L) | ✅ |
| 发布权限 RBAC | ✅ | ✅ | ✅ |
### 2.4 监控告警 ⚠️ 部分缺口
| 功能 | 后端 | 前端 | 状态 |
|------|:----:|:----:|:----:|
| 主机监控(Agent 上报) | ✅ agent.go + health_probe.go | ✅ HostMonitor (1094L, 7 Tab) | ✅ |
| 告警规则引擎 | ✅ alert_engine.go (424L) | ✅ AlertCenter (662L) | ✅ |
| 告警通知(飞书/钉钉/企微/Webhook) | ✅ alert_channels.go (483L) | ✅ AlertContact 管理 | ✅ |
| Prometheus 数据源 + 代理 | ✅ prometheus_datasource.go + proxy | ✅ PrometheusDatasourceManager(829L) | ✅ |
| Zabbix 数据源 + 代理 | ✅ zabbix_proxy.go (284L) | ✅ | ✅ |
| 告警静默规则 | ✅ alert_silence.go + engine 集成 | ✅ SilenceRuleTab | ✅ |
| 监控大屏(Grafana 嵌入) | ❌ 无后端 | ⚠️ dashboardApi **6 个方法 mock 桩** | ❌ 需后端 |
| 链路追踪 | ❌ 无后端 | ⚠️ traceApi **3 个方法 mock 桩** | ❌ 需后端 |
### 2.5 自动化运维 ✅ 完善
| 功能 | 后端 | 前端 | 状态 |
|------|:----:|:----:|:----:|
| 定时任务(CronJob) | ✅ automation_cron.go (411L) | ✅ CronJobManager | ✅ |
| 脚本库(Shell/Python) | ✅ automation_script.go (356L) | ✅ ScriptManager | ✅ |
| 远程执行(Go-native SSH) | ✅ remote_exec.go (309L) | ✅ | ✅ |
| Ansible Playbook | ✅ ansible.go (462L) | ✅ AnsibleWorkflow(886L) | ✅ |
### 2.6 AIOps 智能 ✅ 基础完善
| 功能 | 后端 | 前端 | 状态 |
|------|:----:|:----:|:----:|
| AI 智能助手(6 种 LLM) | ✅ llm_chat.go (349L, SSE 流式) | ✅ AIOpsAssistant(694L) | ✅ |
| 告警分析 | ✅ | ✅ | ✅ |
| 容量预测 | ✅ | ✅ | ✅ |
### 2.7 资源申请 ✅ 完善
| 功能 | 后端 | 前端 | 状态 |
|------|:----:|:----:|:----:|
| 云服务器申请审批 | ✅ | ✅ | ✅ |
| 应用部署申请 | ✅ | ✅ | ✅ |
### 2.8 系统管理 ✅ 完善
| 功能 | 后端 | 前端 | 状态 |
|------|:----:|:----:|:----:|
| 用户/角色权限 (RBAC) | ✅ user.go + user_admin.go + ldap.go(319L) | ✅ SystemManager | ✅ |
| LDAP 集成 | ✅ ldap.go + ldap_users.go(397L) | ✅ | ✅ |
| 操作审计 | ✅ audit.go (360L) + CSV 导出 | ✅ | ✅ |
| 终端审计(WebSSH 录制) | ✅ | ✅ | ✅ |
| 凭证管理 | ✅ credential.go(400L) | ✅ | ✅ |
| 系统设置 | ✅ | ✅ | ✅ |
---
## 三、技术债评估
### 3.1 🔴 高优先级
| 问题 | 影响 | 范围 | 建议优先级 |
|------|------|------|:----------:|
| ~~`kubernetes.go` 4204 行/134 函数~~ → 已拆分为 12 个域文件(最大 696 行) | ✅ 已解决 | 后端 | ~~P0~~ done |
| ~~`api.ts` 1324 行/352 方法~~ → 已拆分为 12 个域文件 (api/kubernetes.ts, deploy.ts, monitor.ts 等) | ✅ 已解决 | 前端 | ~~P0~~ done |
| 前端 **1026 处** `any` 类型 | 类型安全缺失,重构风险高 | 前端全局 | P0 |
| K8s 双路由体系(集群域+Kuboard 域) | 路由冗余 104 条 | 后端 | P1 |
| 25 个 ≥500 行巨型组件 | 拆分困难 | 前端 | P1 |
### 3.2 🟡 中优先级
| 问题 | 数量 | 建议优先级 |
|------|------|:----------:|
| 前端未使用变量/导入(ESLint no-unused-vars) | 218 处 | P1 |
| 前端 console.log/console.error | 93 处(含 token 泄露风险) | P1 |
| 前端 React Hooks exhaustive-deps 缺失 | 38 处 | P1 |
| 后端 `_ =` 忽略错误 | 13 处(3 处中风险) | P2 |
| 前端硬编码内网 IP(10.10.10.75 等) | 6+ 处 | P2 |
| 后端告警引擎单实例 + 无优雅退出 | 多副本会重复告警 | P2 |
### 3.3 🟢 低优先级
| 问题 | 数量 |
|------|------|
| 前端 `set-state-in-effect`(潜在无限循环) | 7 处 |
| 前端 `react-hooks/purity`(render 调 Date.now) | 6 处 |
| 前端死代码(HostMonitorDashboard lazy 未挂载) | 1 处 |
| 后端 `exec.Command` + `bash -c`(命令注入面) | 18 处(需审计用户输入路径) |
### 3.4 Mock API / 未对接后端
| 前端 API 模块 | 方法数 | 状态 | 需要 |
|---------------|--------|------|------|
| `dashboardApi`(Grafana 大屏) | 6 | mock 返回空 | 后端 Grafana iframe/embed |
| `traceApi`(链路追踪) | 3 | mock 返回空 | 后端 Jaeger/Tempo 集成 |
---
## 四、架构评估
### 4.1 部署架构
| 方式 | 架构 | 容器数 | 状态 |
|------|------|--------|:----:|
| Docker Compose | MySQL+Redis+Backend+Nginx | 4 | ✅ |
| Kubernetes | Embed 单容器 + MySQL/Redis StatefulSet | 3+ | ✅ |
| 独立二进制 | Go embed 前端 | 1 | ✅ |
### 4.2 镜像体积
| 镜像 | 大小 | 评估 |
|------|------|------|
| aiops-backend | 277 MB | ⚠️ 偏大(含 Agent 编译工具链) |
| aiops-frontend | 69.8 MB | ✅ Nginx Alpine |
| aiops-embed | 54.9 MB | ✅ 单文件 |
### 4.3 数据库架构
- **86 张表**,前缀规范统一:`iam_` / `asset_` / `monitor_` / `ops_` / `deploy_` / `ai_` / `sys_` / `kubernetes_`
- GORM AutoMigrate,UTF-8MB4
- 已做索引审计(20 个重复索引已清理)
### 4.4 安全
| 项 | 状态 |
|----|:----:|
| JWT 认证 | ✅ |
| RBAC 角色权限(后端) | ✅ |
| RBAC 前端按钮级控制 | ✅ `usePermission` hook + `<HasPermission>` + Sidebar 过滤 |
| SQL 注入防护 | ✅ 全参数化 |
| XSS 防护 | ✅ React 默认 |
| HTTPS | ⚠️ 生产未强制 |
| 密码 Bcrypt | ✅ |
---
## 五、综合评分
| 维度 | 评分 | 说明 |
|------|:----:|------|
| 功能完整性 | **88/100** | 8 大模块齐全,K8s 管理极为完善;扣分项:监控大屏/链路追踪/告警静默未对接 |
| 代码质量 | **72/100** | 后端规范好(0 panic, 1 TODO);前端 1026 处 any + 218 处未用变量是主要扣分项 |
| 架构设计 | **82/100** | 前后端分离清晰,自研轻量 K8s 客户端;扣分项:kubernetes.go/api.ts 巨型文件 |
| 部署运维 | **85/100** | 三种部署方式 + run.sh 统一入口;扣分项:后端镜像偏大,告警引擎单实例 |
| 用户体验 | **86/100** | 骨架屏 + 页面过渡 + 5 套主题 + 懒加载;扣分项:无 i18n,无虚拟滚动 |
| **综合** | **83/100** | 企业级运维平台,功能覆盖全面,工程治理是当前首要提升方向 |