fix(canvas): 画布资源恢复 - 生成结果下载或 OSS 落盘失败支持原任务重新加载
This commit is contained in:
@@ -35,6 +35,11 @@ export function generationTaskMode(task: GenerationTask, fallback?: CanvasGenera
|
||||
return fallback || "image";
|
||||
}
|
||||
|
||||
export function generationTaskCanReloadResource(task: GenerationTask) {
|
||||
const mode = generationTaskMode(task);
|
||||
return task.status === "succeeded" && (mode === "image" || mode === "video" || mode === "audio") && (Boolean(task.resultJson) || Boolean(task.outputs?.length));
|
||||
}
|
||||
|
||||
export function imageMetadata(image: UploadedImage): CanvasNodeMetadata {
|
||||
return {
|
||||
content: image.url,
|
||||
@@ -46,6 +51,7 @@ export function imageMetadata(image: UploadedImage): CanvasNodeMetadata {
|
||||
mimeType: image.mimeType,
|
||||
errorDetails: undefined,
|
||||
generationErrorCode: undefined,
|
||||
resourceReloadAvailable: undefined,
|
||||
failedPromptFingerprint: undefined,
|
||||
};
|
||||
}
|
||||
@@ -62,6 +68,7 @@ export function videoMetadata(video: UploadedFile): CanvasNodeMetadata {
|
||||
durationMs: video.durationMs,
|
||||
errorDetails: undefined,
|
||||
generationErrorCode: undefined,
|
||||
resourceReloadAvailable: undefined,
|
||||
failedPromptFingerprint: undefined,
|
||||
};
|
||||
}
|
||||
@@ -76,6 +83,7 @@ export function audioMetadata(audio: UploadedFile): CanvasNodeMetadata {
|
||||
durationMs: audio.durationMs,
|
||||
errorDetails: undefined,
|
||||
generationErrorCode: undefined,
|
||||
resourceReloadAvailable: undefined,
|
||||
failedPromptFingerprint: undefined,
|
||||
};
|
||||
}
|
||||
@@ -162,7 +170,7 @@ export async function buildGenerationTaskNodeResult(node: CanvasNodeData, task:
|
||||
return {
|
||||
...node,
|
||||
type: CanvasNodeType.Text,
|
||||
metadata: { ...node.metadata, content: result.text, richText: undefined, prompt, ...completedTaskMetadata(task), status: "success", errorDetails: undefined, generationErrorCode: undefined, failedPromptFingerprint: undefined },
|
||||
metadata: { ...node.metadata, content: result.text, richText: undefined, prompt, ...completedTaskMetadata(task), status: "success", errorDetails: undefined, generationErrorCode: undefined, resourceReloadAvailable: undefined, failedPromptFingerprint: undefined },
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ export function markImageBatchRetrying(rootId: string, childIds: string[], nodes
|
||||
...(node.id === rootId ? { batchFailedCount: childIds.length } : {}),
|
||||
errorDetails: undefined,
|
||||
generationErrorCode: undefined,
|
||||
resourceReloadAvailable: undefined,
|
||||
failedPromptFingerprint: undefined,
|
||||
},
|
||||
};
|
||||
@@ -35,6 +36,7 @@ export function restoreUnsubmittedImageBatchChild(current: CanvasNodeData, origi
|
||||
status: "error",
|
||||
errorDetails: original.metadata?.errorDetails || "重试请求未提交",
|
||||
generationErrorCode: original.metadata?.generationErrorCode,
|
||||
resourceReloadAvailable: original.metadata?.resourceReloadAvailable,
|
||||
failedPromptFingerprint: original.metadata?.failedPromptFingerprint,
|
||||
},
|
||||
};
|
||||
@@ -77,6 +79,7 @@ export function reconcileImageBatchRoot(root: CanvasNodeData, nodes: CanvasNodeD
|
||||
metadata.status = loading ? "loading" : failed ? "error" : "idle";
|
||||
metadata.errorDetails = failed?.metadata?.errorDetails;
|
||||
metadata.generationErrorCode = failed?.metadata?.generationErrorCode;
|
||||
metadata.resourceReloadAvailable = failed?.metadata?.resourceReloadAvailable;
|
||||
metadata.failedPromptFingerprint = failed?.metadata?.failedPromptFingerprint;
|
||||
}
|
||||
|
||||
|
||||
@@ -170,6 +170,7 @@ export function resetGenerationTaskMetadata(metadata: CanvasNodeMetadata | undef
|
||||
status,
|
||||
errorDetails: undefined,
|
||||
generationErrorCode: undefined,
|
||||
resourceReloadAvailable: undefined,
|
||||
failedPromptFingerprint: undefined,
|
||||
};
|
||||
delete next.taskId;
|
||||
|
||||
Reference in New Issue
Block a user