修复草图生成失败卡住问题

This commit is contained in:
北枳 2025-10-16 15:08:00 +08:00
parent 182712b80a
commit fe879931ea

View File

@ -215,11 +215,14 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) {
// 如果有已完成的数据,同步到状态 // 如果有已完成的数据,同步到状态
if (task.task_name === 'generate_character' && task.task_result && task.task_result.data) { 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); 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); realCharacterResultData = taskCurrent.roles.data.filter((item: any) => item.status !== 0);
} }
taskCurrent.roles.total_count = task.task_result.total_count; taskCurrent.roles.total_count = task.task_result.total_count;
if (task.task_status !== 'COMPLETED' || taskCurrent.roles.total_count !== realCharacterResultData.length) { 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'; taskCurrent.currentStage = 'character';
// 正在生成角色中 替换角色数据 // 正在生成角色中 替换角色数据
const characterList = []; const characterList = [];
@ -227,7 +230,7 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) {
characterList.push({ characterList.push({
name: character.character_name, name: character.character_name,
url: character.image_path, 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' type: 'role'
}); });
} }
@ -242,11 +245,15 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) {
if (task.task_name === 'generate_sketch' && task.task_result && task.task_result.data) { 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); 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); realSketchResultData = taskCurrent.scenes.data.filter((item: any) => item.status !== 0);
} }
taskCurrent.scenes.total_count = task.task_result.total_count; taskCurrent.scenes.total_count = task.task_result.total_count;
if (task.task_status !== 'COMPLETED' || taskCurrent.scenes.total_count !== realSketchResultData.length) { 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'; taskCurrent.currentStage = 'scene';
// 正在生成草图中 替换 sketch 数据 // 正在生成草图中 替换 sketch 数据
const sketchList = []; const sketchList = [];
@ -254,7 +261,7 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) {
sketchList.push({ sketchList.push({
url: sketch.image_path, url: sketch.image_path,
script: sketch.sketch_name, 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' type: 'scene'
}); });
} }
@ -562,9 +569,10 @@ export function useWorkflowData({}: UseWorkflowDataProps = {}) {
return newState; 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) { } catch (error) {
console.error('初始化失败:', error); console.error('初始化失败:', error);