From 13ca16b940f5aa17c4da851949696fb9fd00262d Mon Sep 17 00:00:00 2001 From: SaaS Frontend Date: Sat, 8 Aug 2026 21:07:16 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20=E5=89=8D=E7=AB=AF=E5=AF=B9?= =?UTF-8?q?=E6=8E=A5=E7=A1=AE=E8=AE=A4=E7=94=9F=E6=88=90=20API=20(POST=20/?= =?UTF-8?q?tasks/{task=5Fid}/confirm)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 对接后端 PR #1308 新增的确认生成 API: 1. 新增 API 调用函数 confirm.ts - confirmGeneration(taskId, params) 调用 POST /tasks/{task_id}/confirm 2. 新增类型定义 - ConfirmGenerationRequest: output_width, output_height, cover_url, custom_title - ConfirmGenerationResponse, ConfirmGenerationTaskItem 3. 修改 useGenerateVideo.ts - 有 previewTaskId 时使用新 API(确认生成流程) - 无 previewTaskId 时使用旧 API(向后兼容) - 传递 cover_url 和 custom_title 参数 前置条件:后端 PR #1308 同步到 develop 分支后此 PR 才可合并 关联:PR #1308 (后端确认生成 API) --- apps/web/src/api/generation/confirm.ts | 14 ++++++ apps/web/src/api/generation/index.ts | 4 ++ apps/web/src/api/generation/types.ts | 44 +++++++++++++++++++ .../generate/hooks/generate-video/types.ts | 2 + .../pages/generate/hooks/useGenerateVideo.ts | 20 +++++++++ 5 files changed, 84 insertions(+) create mode 100755 apps/web/src/api/generation/confirm.ts mode change 100644 => 100755 apps/web/src/api/generation/index.ts mode change 100644 => 100755 apps/web/src/api/generation/types.ts mode change 100644 => 100755 apps/web/src/pages/generate/hooks/generate-video/types.ts mode change 100644 => 100755 apps/web/src/pages/generate/hooks/useGenerateVideo.ts diff --git a/apps/web/src/api/generation/confirm.ts b/apps/web/src/api/generation/confirm.ts new file mode 100755 index 000000000..e559e6e35 --- /dev/null +++ b/apps/web/src/api/generation/confirm.ts @@ -0,0 +1,14 @@ +import apiClient from "../client" +import type { ConfirmGenerationRequest, ConfirmGenerationResponse } from "./types" + +/** 确认生成 — 基于预览任务创建正式生成任务 */ +export const confirmGeneration = async ( + taskId: string, + params: ConfirmGenerationRequest, +): Promise => { + const response = await apiClient.post( + `/tasks/${taskId}/confirm`, + params, + ) + return response.data +} diff --git a/apps/web/src/api/generation/index.ts b/apps/web/src/api/generation/index.ts old mode 100644 new mode 100755 index a3785acc7..672dc9699 --- a/apps/web/src/api/generation/index.ts +++ b/apps/web/src/api/generation/index.ts @@ -3,6 +3,10 @@ export type { CreatePreviewRequest, CreatePreviewResponse, PreviewTaskResponse, + ConfirmGenerationRequest, + ConfirmGenerationResponse, + ConfirmGenerationTaskItem, } from "./types" export { createPreview, getPreviewStatus } from "./preview" +export { confirmGeneration } from "./confirm" diff --git a/apps/web/src/api/generation/types.ts b/apps/web/src/api/generation/types.ts old mode 100644 new mode 100755 index 502d19df0..2231f74cb --- a/apps/web/src/api/generation/types.ts +++ b/apps/web/src/api/generation/types.ts @@ -45,3 +45,47 @@ export interface PreviewTaskResponse { finished_at?: string generate_duration?: number } + +/** 确认生成请求体 — 基于预览任务创建正式生成任务 */ +export interface ConfirmGenerationRequest { + /** 输出视频宽度,默认 1080 */ + output_width?: number + /** 输出视频高度,默认 1920 */ + output_height?: number + /** 自定义封面图片 URL */ + cover_url?: string + /** 自定义视频标题 */ + custom_title?: string +} + +/** 确认生成响应 */ +export interface ConfirmGenerationResponse { + items: ConfirmGenerationTaskItem[] + total: number +} + +/** 确认生成返回的任务项 */ +export interface ConfirmGenerationTaskItem { + id: string + project_id: string + asset_library_id: string + strategy_id: string + voice_library_id: string + template_id: string + asset_ids: string[] + title_ids: string[] + voice_ids: string[] + source_edit_plan_id: string + asset_select_mode: string + batch_id: string + is_preview: boolean + source_task_id: string + output_width: number + output_height: number + cover_url: string + custom_title: string + status: string + progress: number + result_count: number + error_message: string +} diff --git a/apps/web/src/pages/generate/hooks/generate-video/types.ts b/apps/web/src/pages/generate/hooks/generate-video/types.ts old mode 100644 new mode 100755 index c9434c5a6..a09ab562f --- a/apps/web/src/pages/generate/hooks/generate-video/types.ts +++ b/apps/web/src/pages/generate/hooks/generate-video/types.ts @@ -19,6 +19,8 @@ export interface UseGenerateVideoProps { autoSubtitles: boolean bgm: boolean generateCount: number + /** 预览任务的 task_id(用于新确认生成 API) */ + previewTaskId?: string } /** 生成阶段 */ diff --git a/apps/web/src/pages/generate/hooks/useGenerateVideo.ts b/apps/web/src/pages/generate/hooks/useGenerateVideo.ts old mode 100644 new mode 100755 index d78fdaa17..9de662fac --- a/apps/web/src/pages/generate/hooks/useGenerateVideo.ts +++ b/apps/web/src/pages/generate/hooks/useGenerateVideo.ts @@ -6,6 +6,7 @@ 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" @@ -55,6 +56,25 @@ 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 + + await confirmGeneration(props.previewTaskId, { + output_width: outputWidth, + output_height: outputHeight, + cover_url: props.coverSettings.imageUrl || "", + custom_title: props.titleSettings.title || "", + }) + + startPolling() + return + } + + // 旧流程:使用 EditPlan API(向后兼容) const payload = buildEditPlanPayload(props) // 获取或创建草稿 -- 2.54.0 From e62da06a27ae65a4c6fd8c7ffdf77453baaa0b21 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Sun, 9 Aug 2026 08:54:25 +0800 Subject: [PATCH 2/5] chore: trigger CI re-run after backend sync (#1312) --- apps/web/src/api/generation/confirm.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/src/api/generation/confirm.ts b/apps/web/src/api/generation/confirm.ts index e559e6e35..d6bb82599 100755 --- a/apps/web/src/api/generation/confirm.ts +++ b/apps/web/src/api/generation/confirm.ts @@ -11,4 +11,4 @@ export const confirmGeneration = async ( params, ) return response.data -} +} \ No newline at end of file -- 2.54.0 From f149c9d9b39bd20f19e0a6a32943739e205829d6 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Sun, 9 Aug 2026 08:58:07 +0800 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20CoverConfig=20?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E5=90=8D=20imageUrl=20=E2=86=92=20upload=5Fu?= =?UTF-8?q?rl=20(TS2339)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/pages/generate/hooks/useGenerateVideo.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/src/pages/generate/hooks/useGenerateVideo.ts b/apps/web/src/pages/generate/hooks/useGenerateVideo.ts index 9de662fac..b99f00b5b 100755 --- a/apps/web/src/pages/generate/hooks/useGenerateVideo.ts +++ b/apps/web/src/pages/generate/hooks/useGenerateVideo.ts @@ -66,7 +66,7 @@ export function useGenerateVideo(props: UseGenerateVideoProps) { await confirmGeneration(props.previewTaskId, { output_width: outputWidth, output_height: outputHeight, - cover_url: props.coverSettings.imageUrl || "", + cover_url: props.coverSettings.upload_url || "", custom_title: props.titleSettings.title || "", }) -- 2.54.0 From 33e650e917e2509f92b29d89f64ba24ab1ca79d2 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Sun, 9 Aug 2026 09:02:10 +0800 Subject: [PATCH 4/5] style: prettier format confirm.ts (trailing newline) --- apps/web/src/api/generation/confirm.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/web/src/api/generation/confirm.ts b/apps/web/src/api/generation/confirm.ts index d6bb82599..ad2270244 100755 --- a/apps/web/src/api/generation/confirm.ts +++ b/apps/web/src/api/generation/confirm.ts @@ -11,4 +11,5 @@ export const confirmGeneration = async ( params, ) return response.data -} \ No newline at end of file +} + -- 2.54.0 From 6262f6c5c30bd514621dd3fb5090b0d00517da51 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Sun, 9 Aug 2026 09:06:16 +0800 Subject: [PATCH 5/5] style: fix trailing newline in confirm.ts --- apps/web/src/api/generation/confirm.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/web/src/api/generation/confirm.ts b/apps/web/src/api/generation/confirm.ts index ad2270244..e559e6e35 100755 --- a/apps/web/src/api/generation/confirm.ts +++ b/apps/web/src/api/generation/confirm.ts @@ -12,4 +12,3 @@ export const confirmGeneration = async ( ) return response.data } - -- 2.54.0