feat(monitor): F5 链路追踪后端对接 — traceApi mock桩改真实Jaeger/Tempo代理+demo兜底

- 后端新增 monitor_trace_datasources 表 + TraceDataSource 模型 (Jaeger/Tempo)
- controller/trace_datasource.go — CRUD + TestConnection + SetDefault (7 路由)
- controller/trace_proxy.go — Jaeger API 代理 + 响应格式转换 (Trace/服务/Span)
  - GET /traces — Trace 列表 (代理 Jaeger /api/traces)
  - GET /traces/services — 服务列表 + P95/P99/errorRate 聚合
  - GET /traces/:traceId — Trace 详情 (Span 树转换)
- Demo 数据兜底: 无数据源时返回模拟数据 (6 Trace + 5 服务 + 5 Span)
- 前端 traceApi 从 mock 改真实 HTTP 调用
- 前端新增 trace-datasource.ts 数据源管理 API
- ROADMAP/TDD_PLAN/PROJECT_EVALUATION 文档同步更新
- 综合评分 90→91, 功能完整性 92→94 (mock API 清零)
This commit is contained in:
attacker committed 2026-06-28 01:51:00 +08:00
1 parent 0c2c0adaaf
commit 894cb16a05
23 files changed
+1085 -52

No files matched your search

+18
View File
@@ -978,6 +978,24 @@ func Register(r *gin.Engine, db *gorm.DB, log *zap.Logger, cfg *config.Config, c
customDashGroup.POST("/:id/default", customDashHandler.SetDefault)
}
// 链路追踪数据源管理 — CRUD + 测试连接 + 设默认 // Logan.Li
traceDSHandler := controller.NewTraceDSHandler(db)
traceProxyHandler := controller.NewTraceProxyHandler(traceDSHandler)
traceDSGroup := authorized.Group("/trace-datasources")
{
traceDSGroup.GET("", traceDSHandler.List)
traceDSGroup.GET("/:id", traceDSHandler.Get)
traceDSGroup.POST("", traceDSHandler.Create)
traceDSGroup.PUT("/:id", traceDSHandler.Update)
traceDSGroup.DELETE("/:id", traceDSHandler.Delete)
traceDSGroup.POST("/:id/default", traceDSHandler.SetDefault)
traceDSGroup.POST("/test", traceDSHandler.TestConnection)
}
// 链路追踪查询代理 — 转发 Jaeger/Tempo API
authorized.GET("/traces", traceProxyHandler.GetTraces)
authorized.GET("/traces/services", traceProxyHandler.GetServices)
authorized.GET("/traces/:traceId", traceProxyHandler.GetTraceDetail)
// 凭据管理 — SSH密钥/API Token/密码统一加密管理 // Logan.Li
credentialHandlerV2 := controller.NewCredentialHandlerV2(svcs.Credential)
credentialHandler := controller.NewCredentialHandler(db, cfg.JWT.Secret) // 仅用于 GetTags/PatchCredential/AssignCredential(待拆分)