fix(仪表盘): 修正聚合时间桶与清理节流

This commit is contained in:
yangjianbo
2026-01-11 17:21:17 +08:00
parent d78f42d2fd
commit 5364011a5b
3 changed files with 108 additions and 14 deletions

View File

@@ -134,12 +134,12 @@ func (s *DashboardAggregationService) runScheduledAggregation() {
}
lookback := time.Duration(s.cfg.LookbackSeconds) * time.Second
start := last.Add(-lookback)
epoch := time.Unix(0, 0).UTC()
start := last.Add(-lookback)
if !last.After(epoch) {
start = now.Add(-lookback)
}
if start.After(now) {
// 首次聚合覆盖当天,避免只统计最后一个窗口。
start = truncateToDayUTC(now)
} else if start.After(now) {
start = now.Add(-lookback)
}
@@ -204,17 +204,21 @@ func (s *DashboardAggregationService) maybeCleanupRetention(ctx context.Context,
return
}
}
s.lastRetentionCleanup.Store(now)
hourlyCutoff := now.AddDate(0, 0, -s.cfg.Retention.HourlyDays)
dailyCutoff := now.AddDate(0, 0, -s.cfg.Retention.DailyDays)
usageCutoff := now.AddDate(0, 0, -s.cfg.Retention.UsageLogsDays)
if err := s.repo.CleanupAggregates(ctx, hourlyCutoff, dailyCutoff); err != nil {
log.Printf("[DashboardAggregation] 聚合保留清理失败: %v", err)
aggErr := s.repo.CleanupAggregates(ctx, hourlyCutoff, dailyCutoff)
if aggErr != nil {
log.Printf("[DashboardAggregation] 聚合保留清理失败: %v", aggErr)
}
if err := s.repo.CleanupUsageLogs(ctx, usageCutoff); err != nil {
log.Printf("[DashboardAggregation] usage_logs 保留清理失败: %v", err)
usageErr := s.repo.CleanupUsageLogs(ctx, usageCutoff)
if usageErr != nil {
log.Printf("[DashboardAggregation] usage_logs 保留清理失败: %v", usageErr)
}
if aggErr == nil && usageErr == nil {
s.lastRetentionCleanup.Store(now)
}
}