feat: 迁移日汇总任务并修复商务菜单图标

This commit is contained in:
Yvan
2026-11-04 01:53:08 +08:00
parent ac4e13e610
commit 5a96be6a79
27 changed files with 1446 additions and 24 deletions
+43
View File
@@ -0,0 +1,43 @@
package worker
import (
"context"
"encoding/json"
"fmt"
"kra/internal/biz/business"
platformtask "kra/pkg/task"
)
// 只注册旧执行器对应方法,不创建或启用计划;迁移库保留原参数与禁用状态。
func (methods *TaskMethods) registerBusinessReports(registry *platformtask.Registry) {
for _, job := range []struct {
name, description, period string
kind business.ReportBuildKind
}{
{"swReportDayTodayTask", "重建当日商务日汇总", "today", business.DailyReport},
{"swReportDayYesterdayTask", "重建昨日商务日汇总", "yesterday", business.DailyReport},
{"swReportDayBackfillTask", "按日期区间重建商务日汇总", "backfill", business.DailyReport},
{"swReportServerDayTodayTask", "重建当日区服日汇总", "today", business.ServerReport},
{"swReportServerDayYesterdayTask", "重建昨日区服日汇总", "yesterday", business.ServerReport},
{"swReportServerDayBackfillTask", "按日期区间重建区服日汇总", "backfill", business.ServerReport},
} {
registry.Register(platformtask.Method{Name: job.name, Description: job.description, Run: func(ctx context.Context, params json.RawMessage) error {
if methods.reports == nil {
return fmt.Errorf("商务汇总任务依赖未就绪")
}
if ctx == nil {
ctx = context.Background()
}
var args struct {
StartDate string `json:"startDate"`
EndDate string `json:"endDate"`
}
if job.period == "backfill" && len(params) > 0 {
if err := json.Unmarshal(params, &args); err != nil {
return fmt.Errorf("日期回跑参数必须是 JSON 对象: %w", err)
}
}
return methods.reports.Run(ctx, job.kind, job.period, args.StartDate, args.EndDate)
}})
}
}
+5 -2
View File
@@ -4,6 +4,7 @@ import (
"context"
"encoding/json"
"errors"
"kra/internal/biz/business"
"kra/internal/biz/system"
taskbiz "kra/internal/biz/task"
@@ -18,16 +19,18 @@ type TaskMethods struct {
maintenance *system.MaintenanceUsecase
media *system.MediaUsecase
runtime *config.Store
reports *business.ReportBuildUsecase
}
func NewTaskMethods(tasks *taskbiz.TaskUsecase, maintenance *system.MaintenanceUsecase, media *system.MediaUsecase, runtime *config.Store) *TaskMethods {
return &TaskMethods{tasks: tasks, maintenance: maintenance, media: media, runtime: runtime}
func NewTaskMethods(tasks *taskbiz.TaskUsecase, maintenance *system.MaintenanceUsecase, media *system.MediaUsecase, runtime *config.Store, reports *business.ReportBuildUsecase) *TaskMethods {
return &TaskMethods{tasks: tasks, maintenance: maintenance, media: media, runtime: runtime, reports: reports}
}
func (methods *TaskMethods) RegisterTasks(registry *platformtask.Registry) {
if methods == nil || registry == nil {
return
}
methods.registerBusinessReports(registry)
descriptions := map[string]string{}
for _, task := range taskmodule.TimedTasks() {
descriptions[task.MethodName] = task.Description