From 1073317a3e247db58aa62142338f2af4389b0bb6 Mon Sep 17 00:00:00 2001 From: yangjianbo Date: Mon, 12 Jan 2026 10:53:41 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E4=BB=AA=E8=A1=A8=E7=9B=98):=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=AF=B9=E6=95=B0=E6=8D=AE=E5=BA=93=E9=A9=B1=E5=8A=A8?= =?UTF-8?q?=E5=92=8C=E4=BB=93=E5=82=A8=E5=AE=9E=E4=BE=8B=E7=9A=84=E6=9C=89?= =?UTF-8?q?=E6=95=88=E6=80=A7=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/dashboard_aggregation_repo.go | 16 ++++++++++++++++ backend/internal/service/dashboard_service.go | 3 +++ 2 files changed, 19 insertions(+) diff --git a/backend/internal/repository/dashboard_aggregation_repo.go b/backend/internal/repository/dashboard_aggregation_repo.go index be4d4f02..d238e320 100644 --- a/backend/internal/repository/dashboard_aggregation_repo.go +++ b/backend/internal/repository/dashboard_aggregation_repo.go @@ -4,6 +4,7 @@ import ( "context" "database/sql" "fmt" + "log" "strings" "time" @@ -17,6 +18,13 @@ type dashboardAggregationRepository struct { // NewDashboardAggregationRepository 创建仪表盘预聚合仓储。 func NewDashboardAggregationRepository(sqlDB *sql.DB) service.DashboardAggregationRepository { + if sqlDB == nil { + return nil + } + if !isPostgresDriver(sqlDB) { + log.Printf("[DashboardAggregation] 检测到非 PostgreSQL 驱动,已自动禁用预聚合") + return nil + } return newDashboardAggregationRepositoryWithSQL(sqlDB) } @@ -24,6 +32,14 @@ func newDashboardAggregationRepositoryWithSQL(sqlq sqlExecutor) *dashboardAggreg return &dashboardAggregationRepository{sql: sqlq} } +func isPostgresDriver(db *sql.DB) bool { + if db == nil { + return false + } + _, ok := db.Driver().(*pq.Driver) + return ok +} + func (r *dashboardAggregationRepository) AggregateRange(ctx context.Context, start, end time.Time) error { startUTC := start.UTC() endUTC := end.UTC() diff --git a/backend/internal/service/dashboard_service.go b/backend/internal/service/dashboard_service.go index 69d251cb..9bc56c54 100644 --- a/backend/internal/service/dashboard_service.go +++ b/backend/internal/service/dashboard_service.go @@ -85,6 +85,9 @@ func NewDashboardService(usageRepo UsageLogRepository, aggRepo DashboardAggregat aggUsageDays = cfg.DashboardAgg.Retention.UsageLogsDays } } + if aggRepo == nil { + aggEnabled = false + } return &DashboardService{ usageRepo: usageRepo, aggRepo: aggRepo,