diff --git a/apps/web/src/pages/generate/hooks/useGenerateVideo.ts b/apps/web/src/pages/generate/hooks/useGenerateVideo.ts index 1b002a421..a94873fdb 100755 --- a/apps/web/src/pages/generate/hooks/useGenerateVideo.ts +++ b/apps/web/src/pages/generate/hooks/useGenerateVideo.ts @@ -4,7 +4,7 @@ */ import { useState, useCallback } from "react" import { message } from "antd" -import type { GeneratedVideo } from "@/api/template-editor" +import { type GeneratedVideo, createClipsFromAssets } from "@/api/template-editor" import { createGenerationTask } from "@/api/tasks/tasks" import type { UseGenerateVideoProps } from "./generate-video/types" import { getGenerationPhase } from "./generate-video/phase" @@ -78,6 +78,15 @@ export function useGenerateVideo(props: UseGenerateVideoProps) { ? props.selectedClonedVoice || props.selectedVoice || "" : props.selectedVoice || "" + // 确保片段已创建(显式调用 from-assets,不依赖 useEffect 时机) + if (props.sourceEditPlanId && assetIds.length > 0) { + try { + await createClipsFromAssets(props.sourceEditPlanId, assetIds, "main", assetIds.length) + } catch (clipErr) { + console.warn("[handleGenerate] from-assets 调用失败,继续尝试生成:", clipErr) + } + } + // 创建生成任务(服务器渲染) const taskResp = await createGenerationTask({ template_id: selectedTemplate,