fix: 仪表盘资源趋势图使用真实Agent指标替代随机假数据
- 后端 GetMetrics 修复 strftime 字符串无法扫入 time.Time 导致 timestamp 为零值的 bug (改为 string 类型 + time.ParseInLocation 手动解析) - 前端 Dashboard.tsx 新增 getMetrics(24) 调用,获取真实按小时聚合的 Agent 数据 - DashboardCharts.tsx 新增 buildMetricsFromReal() 将 MetricData[] 转换为图表数据 - ResourceUsageCard 优先使用真实时间序列,无数据时回退到平均值生成
This commit is contained in:
1 parent
b770ec025b
commit
a3b84f79c7
3 files changed
+50
-8
No files matched your search
@@ -294,12 +294,12 @@ func (h *DashboardHandler) GetMetrics(c *gin.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
// 从 agent_reports 表查最近 N 小时的真实数据
|
||||
// 从 agent_reports 表查最近 N 小时的真实数据 // Logan.Li
|
||||
since := time.Now().Add(-time.Duration(hours) * time.Hour)
|
||||
type avgPoint struct {
|
||||
Bucket time.Time
|
||||
AvgCPU float64
|
||||
AvgMem float64
|
||||
Bucket string // strftime 返回字符串 "2006-01-02 15:00",不能直接扫入 time.Time(会得零值)
|
||||
AvgCPU float64
|
||||
AvgMem float64
|
||||
}
|
||||
var rows []avgPoint
|
||||
h.db.Model(&models.AgentReport{}).
|
||||
@@ -311,9 +311,14 @@ func (h *DashboardHandler) GetMetrics(c *gin.Context) {
|
||||
|
||||
var metrics []models.MetricData
|
||||
for _, r := range rows {
|
||||
// 手动解析 SQLite strftime 字符串为 time.Time(GORM 无法自动转换) // Logan.Li
|
||||
ts, err := time.ParseInLocation("2006-01-02 15:00", r.Bucket, time.Local)
|
||||
if err != nil {
|
||||
ts = time.Now()
|
||||
}
|
||||
metrics = append(metrics,
|
||||
models.MetricData{Name: "cpu", Value: r.AvgCPU, Timestamp: r.Bucket},
|
||||
models.MetricData{Name: "memory", Value: r.AvgMem, Timestamp: r.Bucket},
|
||||
models.MetricData{Name: "cpu", Value: r.AvgCPU, Timestamp: ts},
|
||||
models.MetricData{Name: "memory", Value: r.AvgMem, Timestamp: ts},
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user