feat: add ops scheduler control center

This commit is contained in:
2026-05-20 10:46:49 +08:00
parent 98f73c5bea
commit e82ae56236
19 changed files with 2766 additions and 20 deletions
@@ -174,6 +174,42 @@ func (w *MonitoringDailyTaskWorker) runOnce(parent context.Context) {
)
}
func (w *MonitoringDailyTaskWorker) RunOnce(parent context.Context) (map[string]any, error) {
if w == nil || w.service == nil || w.service.businessPool == nil || w.service.monitoringPool == nil {
return map[string]any{"skipped": true, "reason": "worker_not_ready"}, nil
}
ctx, cancel := context.WithTimeout(parent, w.timeout)
defer cancel()
startedAt := time.Now()
summary, err := w.service.GenerateDailyMonitoringTasks(ctx, w.projectionService, time.Now().UTC())
duration := time.Since(startedAt)
recordMonitoringDailyTaskMetrics(summary, duration, err)
stats := map[string]any{
"duration_ms": duration.Milliseconds(),
}
if summary != nil {
stats["business_date"] = summary.BusinessDate
stats["tenant_count"] = summary.TenantCount
stats["brand_count"] = summary.BrandCount
stats["failed_plan_count"] = summary.FailedPlanCount
stats["failed_brand_count"] = summary.FailedBrandCount
stats["planned_task_count"] = summary.PlannedTaskCount
stats["due_task_count"] = summary.DueTaskCount
stats["created_task_count"] = summary.CreatedTaskCount
stats["desktop_task_count"] = summary.DesktopTaskCount
stats["deferred_task_count"] = summary.DeferredTaskCount
stats["skipped_plan_count"] = summary.SkippedPlanCount
}
if err != nil {
if w.logger != nil {
w.logger.Warn("monitoring daily task generation failed", MonitoringWorkerErrorFields(err)...)
}
return stats, err
}
return stats, nil
}
func (s *MonitoringService) GenerateDailyMonitoringTasks(
ctx context.Context,
projectionService *MonitoringCallbackService,