feat(task): 暴露任务取消控制状态
This commit is contained in:
@@ -20,6 +20,25 @@ type TaskCancelResult struct {
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
func DescribeTaskCancellation(task store.GatewayTask) TaskCancelResult {
|
||||
if taskCancelTerminalStatus(task.Status) {
|
||||
return taskCancelUnavailable(task, "任务已结束,无法取消")
|
||||
}
|
||||
if strings.TrimSpace(task.RemoteTaskID) != "" {
|
||||
return taskCancelUnavailable(task, "任务已提交上游,当前不可取消,请继续查询结果")
|
||||
}
|
||||
if strings.TrimSpace(task.Status) != "queued" {
|
||||
return taskCancelUnavailable(task, "任务已开始执行,当前阶段不可取消,请继续查询结果")
|
||||
}
|
||||
return TaskCancelResult{
|
||||
TaskID: task.ID,
|
||||
Cancelled: false,
|
||||
Cancellable: true,
|
||||
Submitted: false,
|
||||
Message: "任务仍在本地队列中,可取消",
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Service) CancelTask(ctx context.Context, taskID string, user *auth.User) (TaskCancelResult, error) {
|
||||
task, err := s.store.GetTask(ctx, taskID)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user