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

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) {
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);