From d588bb18e2e065cb52576effa0b65814387c1d52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8C=97=E6=9E=B3?= <7854742+wang_rumeng@user.noreply.gitee.com> Date: Tue, 12 Aug 2025 23:07:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=B7=A5=E4=BD=9C=E6=B5=81?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=AE=A1=E7=90=86=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BB=BB=E5=8A=A1=E6=95=B0=E6=8D=AE=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E4=BB=A5=E8=B7=9F=E8=B8=AA=E8=8D=89=E5=9B=BE=E3=80=81?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E3=80=81=E9=95=9C=E5=A4=B4=E8=8D=89=E5=9B=BE?= =?UTF-8?q?=E5=92=8C=E8=A7=86=E9=A2=91=E7=9A=84=E7=8A=B6=E6=80=81=E5=92=8C?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E3=80=82=E5=90=8C=E6=97=B6=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96ScriptRenderer=E7=BB=84=E4=BB=B6=E7=9A=84=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E7=AE=A1=E7=90=86=EF=BC=8C=E7=A1=AE=E4=BF=9D=E5=9C=A8?= =?UTF-8?q?=E4=B8=8D=E5=90=8C=E6=9D=A5=E6=BA=90=E4=B8=8B=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=B7=A5=E4=BD=9C=E6=B5=81=E6=9A=82=E5=81=9C?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E3=80=82=E4=BF=AE=E6=94=B9=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=A8=A1=E6=80=81=E4=B8=AD=E7=9A=84=E6=8C=89=E9=92=AE=E6=96=87?= =?UTF-8?q?=E6=9C=AC=E4=B8=BA=E2=80=9C=E5=BA=94=E7=94=A8=E2=80=9D=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/work-flow/use-workflow-data.tsx | 54 ++++++++++++------- components/script-renderer/ScriptRenderer.tsx | 32 ++++++----- components/ui/edit-modal.tsx | 2 +- 3 files changed, 55 insertions(+), 33 deletions(-) diff --git a/components/pages/work-flow/use-workflow-data.tsx b/components/pages/work-flow/use-workflow-data.tsx index 2a77e2b..18fa0c6 100644 --- a/components/pages/work-flow/use-workflow-data.tsx +++ b/components/pages/work-flow/use-workflow-data.tsx @@ -82,6 +82,15 @@ export function useWorkflowData() { const [isPauseWorkFlow, setIsPauseWorkFlow] = useState(false); const [mode, setMode] = useState<'automatic' | 'manual'>('automatic'); + const taskData: any = { + sketch: { data: [], total_count: -1 }, + character: { data: [], total_count: -1 }, + shot_sketch: { data: [], total_count: -1 }, + video: { data: [], total_count: -1 }, + status: '0' + }; + let loadingText: any = LOADING_TEXT_MAP.initializing; + const dispatch = useAppDispatch(); const { sketchCount, videoCount } = useAppSelector((state) => state.workflow); @@ -193,8 +202,8 @@ export function useWorkflowData() { throw new Error(response.message); } - let loadingText: any = LOADING_TEXT_MAP.initializing; - let finalStep = '0', sketchCount = 0, isChange = false; + + let sketchCount = 0; const all_task_data = response.data; // all_task_data 下标0 和 下标1 换位置 const temp = all_task_data[0]; @@ -205,8 +214,9 @@ export function useWorkflowData() { for (const task of all_task_data) { // 如果有已完成的数据,同步到状态 - if (task.task_name === 'generate_sketch' && task.task_result) { - finalStep = '1'; + console.log('000000000', taskData); + if (task.task_name === 'generate_sketch' && (task.task_status !== 'COMPLETED' || taskData.sketch.total_count !== taskData.sketch.data.length)) { + taskData.status = '1'; const realSketchResultData = task.task_result.data.filter((item: any) => item.image_path); if (realSketchResultData.length >= 0) { // 正在生成草图中 替换 sketch 数据 @@ -217,6 +227,7 @@ export function useWorkflowData() { script: sketch.sketch_name }); } + taskData.sketch.data = sketchList; setTaskSketch(sketchList); setTaskScenes(sketchList); updateSketchCount(sketchList.length); @@ -225,15 +236,16 @@ export function useWorkflowData() { } if (task.task_status === 'COMPLETED') { // 草图生成完成 + taskData.sketch.total_count = taskData.sketch.data.length; setIsGeneratingSketch(false); sketchCount = task.task_result.total_count; console.log('----------草图生成完成', sketchCount); loadingText = LOADING_TEXT_MAP.sketchComplete; - finalStep = '2'; + taskData.status = '2'; } setTotalSketchCount(task.task_result.total_count); } - if (task.task_name === 'generate_character' && task.task_result) { + if (task.task_name === 'generate_character' && (task.task_status !== 'COMPLETED' || taskData.character.total_count !== taskData.character.data.length)) { if (task.task_result.data.length >= 0 && roles.length !== task.task_result.data.length) { // 正在生成角色中 替换角色数据 const characterList = []; @@ -246,21 +258,23 @@ export function useWorkflowData() { roleDescription: character.character_description }); } + taskData.character.data = characterList; setRoles(characterList); loadingText = LOADING_TEXT_MAP.newCharacter(characterList.length, task.task_result.total_count); } if (task.task_status === 'COMPLETED') { console.log('----------角色生成完成,有几个分镜', sketchCount); // 角色生成完成 - finalStep = '3'; + taskData.character.total_count = taskData.character.data.length; + taskData.status = '3'; loadingText = LOADING_TEXT_MAP.getShotSketchStatus; } } - if (task.task_name === 'generate_shot_sketch' && task.task_result) { + if (task.task_name === 'generate_shot_sketch' && (task.task_status !== 'COMPLETED' || taskData.shot_sketch.total_count !== taskData.shot_sketch.data.length)) { const realShotResultData = task.task_result.data.filter((item: any) => item.url); if (realShotResultData.length >= 0) { - finalStep = '1'; + taskData.status = '1'; console.log('----------正在生成草图中 替换 sketch 数据', taskShotSketch.length, realShotResultData.length); // 正在生成草图中 替换 sketch 数据 const sketchList = []; @@ -270,6 +284,7 @@ export function useWorkflowData() { script: sketch.description }); } + taskData.shot_sketch.data = sketchList; setTaskSketch(sketchList); setTaskShotSketch(sketchList); updateSketchCount(sketchList.length); @@ -278,16 +293,17 @@ export function useWorkflowData() { } if (task.task_status === 'COMPLETED') { // 草图生成完成 + taskData.shot_sketch.total_count = taskData.shot_sketch.data.length; setIsGeneratingSketch(false); setIsGeneratingVideo(true); sketchCount = task.task_result.total_count; console.log('----------草图生成完成', sketchCount); loadingText = LOADING_TEXT_MAP.getVideoStatus; - finalStep = '3'; + taskData.status = '3'; } setTotalSketchCount(task.task_result.total_count); } - if (task.task_name === 'generate_videos' && task.task_result) { + if (task.task_name === 'generate_videos' && (task.task_status !== 'COMPLETED' || taskData.video.total_count !== taskData.video.data.length)) { const realTaskResultData = task.task_result.data.filter((item: any) => item.urls && item.urls.length > 0); if (realTaskResultData.length >= 0) { console.log('----------正在生成视频中', realTaskResultData.length); @@ -302,6 +318,7 @@ export function useWorkflowData() { video_id: video.video_id, }); } + taskData.video.data = videoList; setTaskVideos(videoList); updateVideoCount(videoList.length); setIsGeneratingVideo(true); @@ -310,11 +327,12 @@ export function useWorkflowData() { if (task.task_status === 'COMPLETED') { console.log('----------视频生成完成'); // 视频生成完成 + taskData.video.total_count = taskData.video.data.length; setIsGeneratingVideo(false); - finalStep = '4'; + taskData.status = '4'; // 暂时没有音频生成 直接跳过 - finalStep = '5'; + taskData.status = '5'; loadingText = LOADING_TEXT_MAP.postProduction('generating rough cut video...'); } } @@ -324,7 +342,7 @@ export function useWorkflowData() { setFinal({ url: task.task_result.video, }) - finalStep = '5.5'; + taskData.status = '5.5'; loadingText = LOADING_TEXT_MAP.postProduction('generating fine-grained video clips...'); } } @@ -334,7 +352,7 @@ export function useWorkflowData() { setFinal({ url: task.task_result.video, }) - finalStep = '6'; + taskData.status = '6'; loadingText = LOADING_TEXT_MAP.complete; // 停止轮询 @@ -343,14 +361,14 @@ export function useWorkflowData() { } } - console.log('----------finalStep', finalStep); + console.log('----------finalStep', taskData.status); // 设置步骤 - setCurrentStep(finalStep); + setCurrentStep(taskData.status); setTaskObject(prev => { if (!prev) return null; return { ...prev, - taskStatus: finalStep + taskStatus: taskData.status }; }); setCurrentLoadingText(loadingText); diff --git a/components/script-renderer/ScriptRenderer.tsx b/components/script-renderer/ScriptRenderer.tsx index b4d63df..8890f90 100644 --- a/components/script-renderer/ScriptRenderer.tsx +++ b/components/script-renderer/ScriptRenderer.tsx @@ -114,12 +114,14 @@ export const ScriptRenderer: React.FC = ({ data, setIsPause if (contentEditableRef.current) { const text = contentEditableRef.current.innerText; console.log('contentEditableRef---text', text); - setAnyAttribute(block.id, text,(old: string)=>{ - if(old!==text){ - mode.includes('auto') && applyScript(); - setIsPauseWorkFlow(false); - } - }); + if (from !== 'tab') { + setAnyAttribute(block.id, text,(old: string)=>{ + if(old!==text){ + mode.includes('auto') && applyScript(); + setIsPauseWorkFlow(false); + } + }); + } } }; @@ -133,18 +135,20 @@ export const ScriptRenderer: React.FC = ({ data, setIsPause }); return; } - setIsPauseWorkFlow(true); setAddThemeTag(value); - setAnyAttribute('categories', value.join(','),(old: string)=>{ - if(old!==value.join(',')){ - mode.includes('auto') && applyScript(); - setIsPauseWorkFlow(false); - } - }); + if (from !== 'tab') { + setIsPauseWorkFlow(true); + setAnyAttribute('categories', value.join(','),(old: string)=>{ + if(old!==value.join(',')){ + mode.includes('auto') && applyScript(); + setIsPauseWorkFlow(false); + } + }); + } }; const handleEditBlock = (block: ScriptBlock) => { - setIsPauseWorkFlow(true); + from !== 'tab' && setIsPauseWorkFlow(true); setIsInit(false); setEditBlockId(block.id); setActiveBlockId(block.id); diff --git a/components/ui/edit-modal.tsx b/components/ui/edit-modal.tsx index f2c268e..c2d1628 100644 --- a/components/ui/edit-modal.tsx +++ b/components/ui/edit-modal.tsx @@ -288,7 +288,7 @@ export function EditModal({ whileTap={{ scale: 0.98 }} onClick={() => {handleSave()}} > - Save + Apply