feat(media): 作品保存恢复 - 按原任务重试交付并避免重复生成计费
This commit is contained in:
@@ -8,13 +8,23 @@ export const statusLabel: Record<TaskStatus, string> = {
|
||||
cancelled: "已取消",
|
||||
};
|
||||
|
||||
type GenerationTaskDisplayTarget = Pick<GenerationTask, "status" | "stage">;
|
||||
type GenerationTaskDisplayTarget = Pick<GenerationTask, "status" | "stage" | "mediaStage">;
|
||||
|
||||
export function mediaDeliverySummary(status: TaskStatus | undefined, stage: GenerationTask["mediaStage"]) {
|
||||
if (!stage) return "";
|
||||
if (stage === "completed") return "生成成功 · 文件保存成功 · 素材登记成功";
|
||||
const prefix = stage === "download" || stage === "checkpoint" ? "生成成功" : stage === "register" ? "生成成功 · 文件保存成功" : "生成成功 · 下载成功";
|
||||
const action = { download: "下载", upload: "上传 OSS", local_save: "保存文件", register: "登记素材", checkpoint: "记录恢复信息" }[stage];
|
||||
return `${prefix} · ${action}${status === "failed" ? "失败" : status === "cancelled" ? "已停止" : "待完成"}`;
|
||||
}
|
||||
|
||||
export function isGenerationTaskSubmissionUncertain(task: GenerationTaskDisplayTarget) {
|
||||
return task.stage === "submission_unknown";
|
||||
}
|
||||
|
||||
export function generationTaskStatusLabel(task: GenerationTaskDisplayTarget) {
|
||||
if (task.mediaStage && task.status === "failed") return "作品保存未完成";
|
||||
if (task.mediaStage && (task.status === "queued" || task.status === "running")) return "作品已生成,正在保存";
|
||||
if (isGenerationTaskSubmissionUncertain(task)) return "提交结果待确认";
|
||||
return statusLabel[task.status];
|
||||
}
|
||||
@@ -27,6 +37,7 @@ export function generationTaskStageLabel(task: GenerationTaskDisplayTarget) {
|
||||
}
|
||||
|
||||
export function generationTaskShowsProgress(task: GenerationTaskDisplayTarget) {
|
||||
if (task.mediaStage && task.mediaStage !== "completed") return false;
|
||||
if (isGenerationTaskSubmissionUncertain(task)) return false;
|
||||
// 排队、后端接管和连接供应商都没有真实百分比。只有上游状态响应
|
||||
// 已经写回任务后才显示进度,避免所有图片/视频长期停在同一个假数值。
|
||||
|
||||
Reference in New Issue
Block a user