package task import ( "context" "time" ) // TaskStatus 定义任务状态 type TaskStatus string const ( TaskPending TaskStatus = "pending" // 等待中 TaskRunning TaskStatus = "running" // 运行中 TaskSuccess TaskStatus = "success" // 成功 TaskFailed TaskStatus = "failed" // 失败 TaskCancelled TaskStatus = "cancelled" // 已取消 ) // Task 表示一个可执行任务 type Task struct { ID string // 任务唯一标识 Type string // 任务类型(如"backup", "repair"等) Source string // 任务来源(如"mysql:conn1", "redis:conn2"等) Status TaskStatus // 任务状态 Progress int // 进度百分比 0-100 Result any // 执行结果 Error string // 错误信息 CreatedAt time.Time // 创建时间 StartedAt *time.Time // 开始时间 CompletedAt *time.Time // 完成时间 } // TaskFunc 定义任务执行函数类型 // progress参数用于更新任务进度(0-100) type TaskFunc func(ctx context.Context, progress func(int)) (any, error) // TaskOption 任务选项函数 type TaskOption func(*Task) // WithSource 设置任务来源 func WithSource(source string) TaskOption { return func(t *Task) { t.Source = source } } // WithType 设置任务类型 func WithType(taskType string) TaskOption { return func(t *Task) { t.Type = taskType } }