diff --git a/components/pages/work-flow/use-workflow-data.tsx b/components/pages/work-flow/use-workflow-data.tsx index 6b0664c..13fa349 100644 --- a/components/pages/work-flow/use-workflow-data.tsx +++ b/components/pages/work-flow/use-workflow-data.tsx @@ -215,11 +215,14 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) { // 如果有已完成的数据,同步到状态 if (task.task_name === 'generate_character' && task.task_result && task.task_result.data) { let realCharacterResultData = task.task_result.data.filter((item: any) => item.image_path); - if (task.task_status === 'COMPLETED') { + if (task.task_status === 'COMPLETED' || task.task_status === 'FAILED') { realCharacterResultData = taskCurrent.roles.data.filter((item: any) => item.status !== 0); } taskCurrent.roles.total_count = task.task_result.total_count; if (task.task_status !== 'COMPLETED' || taskCurrent.roles.total_count !== realCharacterResultData.length) { + if (task.task_status === 'FAILED' && taskCurrent.roles.total_count === realCharacterResultData.length) { + continue; + } taskCurrent.currentStage = 'character'; // 正在生成角色中 替换角色数据 const characterList = []; @@ -227,7 +230,7 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) { characterList.push({ name: character.character_name, url: character.image_path, - status: character.image_path ? 1 : (task.task_status === 'COMPLETED' ? 2 : 0), + status: character.image_path ? 1 : ((task.task_status === 'COMPLETED' || task.task_status === 'FAILED') ? 2 : 0), type: 'role' }); } @@ -242,11 +245,15 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) { if (task.task_name === 'generate_sketch' && task.task_result && task.task_result.data) { let realSketchResultData = task.task_result.data.filter((item: any) => item.image_path); - if (task.task_status === 'COMPLETED') { + if (task.task_status === 'COMPLETED' || task.task_status === 'FAILED') { realSketchResultData = taskCurrent.scenes.data.filter((item: any) => item.status !== 0); } taskCurrent.scenes.total_count = task.task_result.total_count; if (task.task_status !== 'COMPLETED' || taskCurrent.scenes.total_count !== realSketchResultData.length) { + console.log('task.task_status', task.task_status, 'taskCurrent.scenes.total_count', taskCurrent.scenes.total_count, 'realSketchResultData.length', realSketchResultData.length); + if (task.task_status === 'FAILED' && taskCurrent.scenes.total_count === realSketchResultData.length) { + continue; + } taskCurrent.currentStage = 'scene'; // 正在生成草图中 替换 sketch 数据 const sketchList = []; @@ -254,7 +261,7 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) { sketchList.push({ url: sketch.image_path, script: sketch.sketch_name, - status: sketch.image_path ? 1 : (task.task_status === 'COMPLETED' ? 2 : 0), + status: sketch.image_path ? 1 : ((task.task_status === 'COMPLETED' || task.task_status === 'FAILED') ? 2 : 0), type: 'scene' }); } @@ -562,9 +569,10 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) { return newState; }); - // 设置是否需要获取流式数据 - // setNeedStreamData(taskCurrent.status !== 'COMPLETED'); - setNeedStreamData(true); + // 设置是否需要获取流式数据 如果任务已完成 或者 有正在生成的视频 则需要获取流式数据 + // 判断是否有正在生成的视频 + const isGeneratingVideo = taskCurrent.videos.data.some((item: any) => item.video_status === 0); + setNeedStreamData(taskCurrent.status !== 'COMPLETED' || isGeneratingVideo); } catch (error) { console.error('初始化失败:', error);