From bd10485cf6dec00ea5fada8e602e8ae8e0cd1082 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Tue, 11 Aug 2026 12:48:48 +0800 Subject: [PATCH] refactor: remove old EditPlan flow from useGenerateVideo - Delete generateEditPlan/updateEditPlan/getEditPlan old flow branch - Remove buildEditPlanPayload (dead code, only used by old flow) - Make previewTaskId required in UseGenerateVideoProps type - Confirm generation now always uses POST /tasks/{taskId}/confirm --- .../hooks/generate-video/buildPayload.ts | 56 ------------------- .../generate/hooks/generate-video/types.ts | 2 +- .../pages/generate/hooks/useGenerateVideo.ts | 40 ++++--------- 3 files changed, 13 insertions(+), 85 deletions(-) diff --git a/apps/web/src/pages/generate/hooks/generate-video/buildPayload.ts b/apps/web/src/pages/generate/hooks/generate-video/buildPayload.ts index e7f39ece8..e057fb86e 100644 --- a/apps/web/src/pages/generate/hooks/generate-video/buildPayload.ts +++ b/apps/web/src/pages/generate/hooks/generate-video/buildPayload.ts @@ -1,60 +1,4 @@ import type { UseGenerateVideoProps } from "./types" -import { buildVoiceConfig } from "./voiceConfig" - -/** - * 构建 updateEditPlan 的 payload - * 从 props 中提取需要的字段,组装成 API 所需的 config 结构 - */ -export const buildEditPlanPayload = (props: UseGenerateVideoProps) => { - const { - titleSettings, - selectedMaterials, - materialMode, - smartSelectedIds, - voiceMode, - selectedVoice, - selectedClonedVoice, - coverSettings, - videoRatio, - style, - duration, - autoSubtitles, - bgm, - generateCount, - } = props - - const voiceConfig = buildVoiceConfig({ - voiceMode, - selectedVoice, - selectedClonedVoice, - }) - - return { - name: titleSettings.title.trim(), - config: { - asset_ids: materialMode === "auto" ? smartSelectedIds : selectedMaterials, - title_config: { - ai_auto_select: titleSettings.aiAutoSelect, - content: titleSettings.title, - position: titleSettings.position, - font_preset: titleSettings.font, - font_color: titleSettings.color, - font_size: titleSettings.size, - }, - cover_config: coverSettings, - ...voiceConfig, - ratio: videoRatio, - style, - duration, - auto_subtitles: autoSubtitles, - bgm, - generate_count: generateCount, - material_mode: materialMode, - }, - total_duration: duration, - status: "editing" as const, - } -} /** * 生成前置校验 diff --git a/apps/web/src/pages/generate/hooks/generate-video/types.ts b/apps/web/src/pages/generate/hooks/generate-video/types.ts index a09ab562f..1c065d69b 100755 --- a/apps/web/src/pages/generate/hooks/generate-video/types.ts +++ b/apps/web/src/pages/generate/hooks/generate-video/types.ts @@ -20,7 +20,7 @@ export interface UseGenerateVideoProps { bgm: boolean generateCount: number /** 预览任务的 task_id(用于新确认生成 API) */ - previewTaskId?: string + previewTaskId: string } /** 生成阶段 */ diff --git a/apps/web/src/pages/generate/hooks/useGenerateVideo.ts b/apps/web/src/pages/generate/hooks/useGenerateVideo.ts index b99f00b5b..42b3f06ee 100755 --- a/apps/web/src/pages/generate/hooks/useGenerateVideo.ts +++ b/apps/web/src/pages/generate/hooks/useGenerateVideo.ts @@ -5,12 +5,11 @@ import { useState, useCallback } from "react" import { message } from "antd" import type { GeneratedVideo } from "@/api/template-editor" -import { generateEditPlan, updateEditPlan, getEditPlan } from "@/api/template-editor" import { confirmGeneration } from "@/api/generation" import type { UseGenerateVideoProps } from "./generate-video/types" import { getGenerationPhase } from "./generate-video/phase" import { useGenerationPolling } from "./generate-video/useGenerationPolling" -import { buildEditPlanPayload, validateGenerateInputs } from "./generate-video/buildPayload" +import { validateGenerateInputs } from "./generate-video/buildPayload" import { extractBackendError, translateError } from "./generate-video/errorUtils" export function useGenerateVideo(props: UseGenerateVideoProps) { @@ -56,34 +55,19 @@ export function useGenerateVideo(props: UseGenerateVideoProps) { clearTimer() try { - // 新流程:使用确认生成 API(基于预览任务) - if (props.previewTaskId) { - // 解析分辨率 - const [widthStr, heightStr] = (props.videoRatio || "1080x1920").split("x") - const outputWidth = parseInt(widthStr, 10) || 1080 - const outputHeight = parseInt(heightStr, 10) || 1920 + // 使用确认生成 API(基于预览任务) + // 解析分辨率 + const [widthStr, heightStr] = (props.videoRatio || "1080x1920").split("x") + const outputWidth = parseInt(widthStr, 10) || 1080 + const outputHeight = parseInt(heightStr, 10) || 1920 - await confirmGeneration(props.previewTaskId, { - output_width: outputWidth, - output_height: outputHeight, - cover_url: props.coverSettings.upload_url || "", - custom_title: props.titleSettings.title || "", - }) + await confirmGeneration(props.previewTaskId, { + output_width: outputWidth, + output_height: outputHeight, + cover_url: props.coverSettings.upload_url || "", + custom_title: props.titleSettings.title || "", + }) - startPolling() - return - } - - // 旧流程:使用 EditPlan API(向后兼容) - const payload = buildEditPlanPayload(props) - - // 获取或创建草稿 - await getEditPlan(selectedTemplate) - - // 更新草稿内容 + 切换到 editing 状态 - await updateEditPlan(selectedTemplate, payload) - - await generateEditPlan(selectedTemplate) startPolling() } catch (err: unknown) { console.error("[handleGenerate] 生成失败:", err)