package jobs import ( "time" "goalfymax-admin/internal/config" "goalfymax-admin/internal/services" "goalfymax-admin/pkg/utils" "go.uber.org/zap" ) func StartMcpUsageBalanceScheduler(cfg config.McpUsageBalanceJobConfig, logger *utils.Logger) { if !cfg.Enabled { logger.Info("MCP usage balance scheduler disabled") return } delay := time.Duration(cfg.DelayMinutes) * time.Minute if delay < 0 { delay = 0 } runJob := func() { logger.Info("MCP usage balance job started") if err := services.RunMcpUsageBalanceJob(); err != nil { logger.Error("MCP usage balance job failed", zap.Error(err)) } else { logger.Info("MCP usage balance job completed") } } if cfg.RunOnStartup { runJob() } go func() { for { now := time.Now().UTC() next := now.Truncate(time.Hour).Add(time.Hour) sleep := next.Sub(now) + delay if sleep < time.Minute { sleep = time.Minute } time.Sleep(sleep) runJob() } }() }