feat(media): 作品保存恢复 - 按原任务重试交付并避免重复生成计费

This commit is contained in:
ddCat
2026-09-22 15:47:24 +08:00
parent acbb354e97
commit 48a82ded74
49 changed files with 1710 additions and 50 deletions

View File

@@ -2,6 +2,7 @@ package app
import (
"context"
"errors"
"infinite-canvas/backend/internal/model"
)
@@ -51,6 +52,13 @@ func (e *taskRouteExecutor) execute(ctx context.Context, task *model.Task, attem
if stateErr := e.port.refreshTaskProviderState(task); stateErr != nil {
return taskRouteExecutionResult{}, stateErr
}
var deliveryFailure *mediaRecoveryError
if errors.As(execution.err, &deliveryFailure) {
// The provider succeeded. Delivery must never enter route failover.
e.port.finishTaskRouteAttempt(attempt, task, nil)
execution.providerSucceeded = true
return execution, nil
}
e.port.finishTaskRouteAttempt(attempt, task, execution.err)
if execution.err == nil {
break