feat(monitor): F4 自定义监控仪表盘 — mock 桩改真实 CRUD + PromQL 查询渲染

后端:
- 新增 model/custom_dashboard.go (monitor_custom_dashboards 表)
- 新增 controller/custom_dashboard.go (CRUD + 设默认, 6 路由)
- routes.go 注册 /custom-dashboards 路由组
- database.go AutoMigrate 注册 CustomDashboard

前端:
- grafana.ts: dashboardApi 从 mock 返回空改为真实 HTTP 调用
- metrics.ts: prometheusProxyApi 新增 query/queryRange 方法
- GrafanaPanelContent.tsx: 从随机 mock 数据改为执行 PromQL 查询
  + Recharts LineChart 渲染 graph 类型
  + SVG gauge 渲染 gauge 类型
  + 数值卡片渲染 stat 类型
  + 表格渲染 table 类型
  + 30s 自动刷新 + loading/error 状态
  + 自动发现默认 Prometheus 数据源
- GrafanaDashboard.tsx: 传递 datasourceUrl 到 GrafanaPanelContent

验证: go build✅ npm build✅ 17/17 集成测试通过 E2E CRUD 全通过
This commit is contained in:
attacker committed 2026-06-27 23:28:04 +08:00
1 parent 7af10097c9
commit f725ca7cac
11 files changed
+670 -53

No files matched your search

+4 -4
View File
@@ -76,7 +76,7 @@
| Prometheus 数据源 + 代理 | ✅ prometheus_datasource.go + proxy | ✅ PrometheusDatasourceManager(829L) | ✅ |
| Zabbix 数据源 + 代理 | ✅ zabbix_proxy.go (284L) | ✅ | ✅ |
| 告警静默规则 | ✅ alert_silence.go + engine 集成 | ✅ SilenceRuleTab | ✅ |
| 监控大屏(Grafana 嵌入) | ❌ 无后端 | ⚠️ dashboardApi **6 个方法 mock 桩** | ❌ 需后端 |
| 监控大屏(自定义仪表盘) | ✅ custom_dashboard.go CRUD | ✅ GrafanaDashboard 自定义 Tab + GrafanaPanelContent PromQL 渲染 | ✅ F4 done |
| 链路追踪 | ❌ 无后端 | ⚠️ traceApi **3 个方法 mock 桩** | ❌ 需后端 |
### 2.5 自动化运维 ✅ 完善
@@ -152,7 +152,7 @@
| 前端 API 模块 | 方法数 | 状态 | 需要 |
|---------------|--------|------|------|
| `dashboardApi`(Grafana 大屏) | 6 | mock 返回空 | 后端 Grafana iframe/embed |
| ~~`dashboardApi`(Grafana 大屏)~~ | ~~6~~ | ~~mock 返回空~~ → **F4 done: 真实 CRUD + PromQL 查询** | ✅ 已对接 |
| `traceApi`(链路追踪) | 3 | mock 返回空 | 后端 Jaeger/Tempo 集成 |
---
@@ -199,9 +199,9 @@
| 维度 | 评分 | 说明 |
|------|:----:|------|
| 功能完整性 | **88/100** | 8 大模块齐全,K8s 管理极为完善;扣分项:监控大屏/链路追踪/告警静默未对接 |
| 功能完整性 | **92/100** | 8 大模块齐全,K8s 管理极为完善;扣分项:链路追踪未对接(traceApi 仍 mock);监控大屏已通过 F4 自定义仪表盘补全 |
| 代码质量 | **82/100** | 后端规范好(0 panic, 1 TODO);前端 any 从 1026 降至 40 + tsc --noEmit 零错误,类型安全大幅提升 |
| 架构设计 | **86/100** | 前后端分离清晰,自研轻量 K8s 客户端;kubernetes.go/api.ts 已拆分,K8s 双路由已统一为 code 路由为主 (A1 done),WebSocket 统一管理 (A3 done) |
| 部署运维 | **90/100** | 三种部署方式 + run.sh 统一入口;镜像优化 U4 done (282MB→107MB) |
| 用户体验 | **90/100** | 骨架屏 + 页面过渡 + 5 套主题 + 懒加载 + 虚拟滚动 + 统一 DataTable + **i18n 国际化(中/英双语切换)** |
| **综合** | **89/100** | 企业级运维平台,功能覆盖全面,P0 全部完成,P1 全部完成,P2 A1/A2/A3 全部完成,P3 U1/U2/U3/U4 全部完成(ROADMAP 100%) |
| **综合** | **90/100** | 企业级运维平台,功能覆盖全面,P0 全部完成,P1 全部完成(含 F4 自定义仪表盘),P2 A1/A2/A3 全部完成,P3 U1/U2/U3/U4 全部完成(ROADMAP 100%) |