diff --git a/internal/config/config.go b/internal/config/config.go index fad0077..e40422b 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -86,6 +86,7 @@ type GiftReconcileConfig struct { Enabled bool Interval time.Duration CurrentDayLag time.Duration + LookbackDays int BatchLimit int } @@ -129,8 +130,8 @@ func Load() (Config, error) { }, Mongo: MongoConfig{ Enabled: envBool("MONGO_ENABLED", false), - URI: env("MONGO_URI", env("LIKEI_MONGO_URI", "")), - Database: env("MONGO_DATABASE", env("LIKEI_MONGO_DB", "")), + URI: env("MONGO_URI", env("LIKEI_MONGO_URI", env("LIKEI_CLOUD_MONGO_URI", ""))), + Database: env("MONGO_DATABASE", env("LIKEI_MONGO_DB", env("LIKEI_CLOUD_MONGO_DB", ""))), }, Redis: RedisConfig{ Enabled: envBool("REDIS_ENABLED", false), @@ -173,6 +174,7 @@ func Load() (Config, error) { Enabled: envBool("DASHBOARD_GIFT_RECONCILE_ENABLED", true), Interval: envDuration("DASHBOARD_GIFT_RECONCILE_INTERVAL", 10*time.Minute), CurrentDayLag: envDuration("DASHBOARD_GIFT_RECONCILE_CURRENT_DAY_LAG", 5*time.Minute), + LookbackDays: envInt("DASHBOARD_GIFT_RECONCILE_LOOKBACK_DAYS", 2), BatchLimit: envInt("DASHBOARD_GIFT_RECONCILE_BATCH_LIMIT", 50000), }, Game: GameReconcileConfig{ @@ -232,6 +234,9 @@ func Load() (Config, error) { if cfg.Gift.BatchLimit <= 0 { cfg.Gift.BatchLimit = 50000 } + if cfg.Gift.LookbackDays <= 0 { + cfg.Gift.LookbackDays = 1 + } if cfg.User.LookbackDays <= 0 { cfg.User.LookbackDays = 3 } diff --git a/internal/storage/gift_reconcile.go b/internal/storage/gift_reconcile.go index 389dea5..7ddfcf0 100644 --- a/internal/storage/gift_reconcile.go +++ b/internal/storage/gift_reconcile.go @@ -47,7 +47,13 @@ func (r *MySQLRepository) StartGiftReconciler(ctx context.Context, db *mongo.Dat } run := func() { since := currentStatDayStart(r.cfg.Dashboard.StatTimezones, r.cfg.Gift.CurrentDayLag) + if r.cfg.Gift.LookbackDays > 1 { + since = since.AddDate(0, 0, -(r.cfg.Gift.LookbackDays - 1)) + } until := since.AddDate(0, 0, 1) + if r.cfg.Gift.LookbackDays > 1 { + until = since.AddDate(0, 0, r.cfg.Gift.LookbackDays) + } if err := r.RebuildGiftMetricsRange(ctx, db, since, until); err != nil { if r.metrics != nil { r.metrics.RecordError(err)