50 lines
956 B
Go
50 lines
956 B
Go
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()
|
|
}
|
|
}()
|
|
}
|