feat(media): 作品保存恢复 - 按原任务重试交付并避免重复生成计费
This commit is contained in:
@@ -185,6 +185,10 @@ func (w *taskWorkerCoordinator) processClaimedTask(task *model.Task, globalSlot
|
||||
if task.Type == model.TaskTypeTimelineRender {
|
||||
return w.processTimelineRender(task, ctx)
|
||||
}
|
||||
if task.MediaRecoveryJSON != "" {
|
||||
result, recoveryErr := s.resumeTaskMedia(ctx, task)
|
||||
return s.finishTaskMediaRecovery(task, result, recoveryErr)
|
||||
}
|
||||
|
||||
s.markAgentMemoryCompactRunning(*task)
|
||||
task.Stage = "调用生成模型"
|
||||
@@ -215,6 +219,15 @@ func (w *taskWorkerCoordinator) processClaimedTask(task *model.Task, globalSlot
|
||||
default:
|
||||
}
|
||||
result, canvasOps, err := routeResult.result, routeResult.canvasOps, routeResult.err
|
||||
latestMedia, readErr := s.repo.Task(task.ID)
|
||||
if readErr != nil {
|
||||
return readErr
|
||||
}
|
||||
task.MediaRecoveryJSON, task.MediaStage = latestMedia.MediaRecoveryJSON, latestMedia.MediaStage
|
||||
var deliveryFailure *mediaRecoveryError
|
||||
if task.MediaRecoveryJSON != "" || errors.As(err, &deliveryFailure) {
|
||||
return s.finishTaskMediaRecovery(task, result, err)
|
||||
}
|
||||
providerSucceeded := routeResult.providerSucceeded
|
||||
if err == nil {
|
||||
result, err = s.persistGeneratedMediaResult(task.UserID, result)
|
||||
|
||||
Reference in New Issue
Block a user