From 12bb843f13bc4fd0684e4ac62577c8ad262ab0f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=B7=E9=BE=99?= Date: Thu, 14 Aug 2025 21:06:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/service/Interaction/RoleShotService.ts | 52 ++++++++++++---------- app/service/usecase/ShotEditUsecase.ts | 1 - 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/app/service/Interaction/RoleShotService.ts b/app/service/Interaction/RoleShotService.ts index 7d1fe14..37072c2 100644 --- a/app/service/Interaction/RoleShotService.ts +++ b/app/service/Interaction/RoleShotService.ts @@ -2,6 +2,7 @@ import { useState, useCallback, useMemo } from 'react'; import { RoleEntity, VideoSegmentEntity } from '../domain/Entities'; import { RoleEditUseCase } from '../usecase/RoleEditUseCase'; import { getCharacterShots, applyRoleToShots, CharacterReplacement } from '@/api/video_flow'; +import { SaveEditUseCase } from '../usecase/SaveEditUseCase'; /** * 扩展的视频片段实体,包含选择状态 @@ -181,30 +182,35 @@ export const useRoleShotServiceHook = (projectId: string,selectRole?:RoleEntity, }); console.log('newDraftRoleList', newDraftRoleList) // 循环调用接口,为每个选中的分镜单独调用 - shotSelectionList.forEach(async (shot) => { - try { - // 调用应用角色到分镜接口(不等待完成) - applyRoleToShots({ - project_id: projectId, - shot_id: shot.id, // 单个分镜ID - character_replacements: characterReplacements, - wait_for_completion: false, // 不等待完成,异步处理 - character_draft: JSON.stringify(newDraftRoleList) - }).then(response => { - if (response.successful) { - console.log(`分镜 ${shot.id} 角色替换成功:`, response.data); - } else { - console.error(`分镜 ${shot.id} 角色替换失败:`, response.message); - } - }).catch(error => { - console.error(`分镜 ${shot.id} 角色替换异常:`, error); - }); - } catch (error) { - console.error(`分镜 ${shot.id} 角色替换失败:`, error); - } - }); + const res = await Promise.all( shotSelectionList.map(async (shot) => { + // 调用应用角色到分镜接口(不等待完成) + return applyRoleToShots({ + project_id: projectId, + shot_id: shot.id, // 单个分镜ID + character_replacements: characterReplacements, + wait_for_completion: false, // 不等待完成,异步处理 + character_draft: JSON.stringify(newDraftRoleList) + }) + })) - console.log(`开始为 ${shotSelectionList.length} 个分镜替换角色`); + SaveEditUseCase.setVideoTasks([ + ...SaveEditUseCase.videoTasks, + ...res.map(item=>{ + return { + task_id: item.data.task_id, + video_ids: [item.data.shot_id] + } + }) + ]) + console.log([ + ...SaveEditUseCase.videoTasks, + ...res.map(item=>{ + return { + task_id: item.data.task_id, + video_ids: [item.data.shot_id] + } + }) + ]); // 延迟重置替换状态,给用户一些反馈时间 setTimeout(() => { diff --git a/app/service/usecase/ShotEditUsecase.ts b/app/service/usecase/ShotEditUsecase.ts index 6f53a10..7ed9144 100644 --- a/app/service/usecase/ShotEditUsecase.ts +++ b/app/service/usecase/ShotEditUsecase.ts @@ -149,7 +149,6 @@ export class VideoSegmentEditUseCase { const response = await updateShotPrompt({ project_id, shot_id, - shot_id, shot_descriptions, });