This commit is contained in:
2026-08-15 01:28:51 +08:00
parent 6698e59c3a
commit 2f165d3a45
26 changed files with 242 additions and 216 deletions
+10 -11
View File
@@ -8,14 +8,13 @@ import (
"sync"
"time"
"kra/internal/biz"
"kra/internal/service"
"github.com/robfig/cron/v3"
"kra/internal/biz"
)
type TaskScheduler struct {
service *service.TaskService
tasks *biz.TaskUsecase
executor *TaskExecutor
logger *slog.Logger
standard *cron.Cron
seconds *cron.Cron
@@ -33,8 +32,8 @@ type scheduledEntry struct {
entry cron.EntryID
}
func NewTaskScheduler(service *service.TaskService, logger *slog.Logger) *TaskScheduler {
return &TaskScheduler{service: service, logger: logger, standard: cron.New(), seconds: cron.New(cron.WithSeconds()), entries: map[uint]scheduledEntry{}, subscribers: map[chan []byte]struct{}{}}
func NewTaskScheduler(tasks *biz.TaskUsecase, executor *TaskExecutor, logger *slog.Logger) *TaskScheduler {
return &TaskScheduler{tasks: tasks, executor: executor, logger: logger, standard: cron.New(), seconds: cron.New(cron.WithSeconds()), entries: map[uint]scheduledEntry{}, subscribers: map[chan []byte]struct{}{}}
}
func (s *TaskScheduler) Start(ctx context.Context) error {
@@ -44,7 +43,7 @@ func (s *TaskScheduler) Start(ctx context.Context) error {
s.ctxMu.Unlock()
s.standard.Start()
s.seconds.Start()
items, err := s.service.ScheduledTasks(ctx)
items, _, err := s.tasks.ListTasks(ctx, 0, 0, nil)
if err == nil {
for _, task := range items {
if task.Enabled {
@@ -104,7 +103,7 @@ func (s *TaskScheduler) Reload(ctx context.Context) error {
delete(s.entries, id)
}
s.mu.Unlock()
items, err := s.service.ScheduledTasks(ctx)
items, _, err := s.tasks.ListTasks(ctx, 0, 0, nil)
if err != nil {
return err
}
@@ -128,7 +127,7 @@ func (s *TaskScheduler) executionContext() context.Context {
}
func (s *TaskScheduler) run(task *biz.TimedTask, trigger string) {
log := s.service.Run(s.executionContext(), task, trigger)
log := s.executor.Run(s.executionContext(), task, trigger)
if log.Status != "success" {
s.Broadcast(map[string]any{"taskId": task.ID, "taskName": task.Name, "status": log.Status, "errorMsg": log.ErrorMsg, "time": time.Now()})
}
@@ -160,7 +159,7 @@ func (s *TaskScheduler) Schedule(task *biz.TimedTask) error {
}
func (s *TaskScheduler) ScheduleID(ctx context.Context, id uint) error {
task, err := s.service.Task(ctx, id)
task, err := s.tasks.FindTask(ctx, id)
if err != nil {
return err
}
@@ -168,7 +167,7 @@ func (s *TaskScheduler) ScheduleID(ctx context.Context, id uint) error {
}
func (s *TaskScheduler) TriggerID(ctx context.Context, id uint) error {
task, err := s.service.Task(ctx, id)
task, err := s.tasks.FindTask(ctx, id)
if err != nil {
return err
}