P1 批量预览与后端成片不一致:variantSeed纯前端假预览需对齐后端独立选片 #1744

Open
opened 2026-09-06 16:14:53 +08:00 by xiaoxia · 0 comments
Owner

问题现象

批量生成 3 个视频时,前端网格预览(CanvasPreviewGrid)中变体间素材排布/起点有可见差异,但后端正式渲染出的 3 个成片片段完全同组同序(查重率 60.1%/33.3%/0%),用户看到的预览和实际成片不一致

根因(已实查前端代码)

apps/web/src/pages/generate/components/CanvasPreviewGrid.tsx

  • N 个 FrontendPreviewPlayer纯前端 Canvas 实时预览,注释原文"variantSeed 让每个变体素材排布/起始点不同,画面有可见差异"——变体差异仅靠 variantSeed={i+1} 在浏览器端本地模拟,不调任何后端渲染接口,后端不存在对应变体 plan
  • 正式提交 useGenerateVideo.ts:198 只在 props.sourceEditPlanId 非空时带 source_edit_plan_id;该值为 storedSourceEditPlanId || sourceEditPlanId(GeneratePage.tsx:264),来自预览响应写入的 localStorage(useServerPreview onCreated)或 URL 参数。批量场景该值丢失/为空时,POST 不带 source_edit_plan_id,后端 3 个任务兜底共用同一个最新 plan(后端工单 #1743 修)。

修复要求

依赖后端 #1743 的变体独立 plan 能力,二选一:

  • 方案 A(推荐,所见即所得):批量预览阶段后端为每个变体生成独立 plan clips,前端网格预览直接读各变体 plan 的真实片段进行播放,预览素材排布/起点与正式成片一致;
  • 方案 B(轻量过渡):批量预览卡片不再展示素材排布差异(明确只展示标题/配音/封面差异),文案提示"正式生成时每个视频独立随机选片",避免误导。

前端另需:

  1. 批量正式提交时 source_edit_plan_id 可靠传递(localStorage 丢失兜底、刷新恢复),但不得依赖它让后端共用 plan;
  2. 每变体封面/标题/配音独立配置的 UI 与 titles[]/cover_urls[]/voice_library_ids[] 提交流程保持现有变体级机制;
  3. N=1 单视频预览/生成零回归。

验收标准(staging)

  • N=3:预览中每个变体展示的片段与最终成片片段一致(方案 A);或 UI 明确不承诺素材差异(方案 B);
  • 3 成片封面各不相同、变体标题/配音各自正确;
  • N=1 流程与现状完全一致。

参考核查报告:项目目录《批量生成降重失效核查_20260906.md》;后端配套工单 #1743。

## 问题现象 批量生成 3 个视频时,前端网格预览(CanvasPreviewGrid)中变体间素材排布/起点有可见差异,但后端正式渲染出的 3 个成片片段完全同组同序(查重率 60.1%/33.3%/0%),**用户看到的预览和实际成片不一致**。 ## 根因(已实查前端代码) `apps/web/src/pages/generate/components/CanvasPreviewGrid.tsx`: - N 个 `FrontendPreviewPlayer` 是**纯前端 Canvas 实时预览**,注释原文"variantSeed 让每个变体素材排布/起始点不同,画面有可见差异"——变体差异仅靠 `variantSeed={i+1}` 在浏览器端本地模拟,**不调任何后端渲染接口,后端不存在对应变体 plan**; - 正式提交 `useGenerateVideo.ts:198` 只在 props.sourceEditPlanId 非空时带 source_edit_plan_id;该值为 `storedSourceEditPlanId || sourceEditPlanId`(GeneratePage.tsx:264),来自预览响应写入的 localStorage(useServerPreview onCreated)或 URL 参数。批量场景该值丢失/为空时,POST 不带 source_edit_plan_id,后端 3 个任务兜底共用同一个最新 plan(后端工单 #1743 修)。 ## 修复要求 **依赖后端 #1743 的变体独立 plan 能力,二选一:** - 方案 A(推荐,所见即所得):批量预览阶段后端为每个变体生成独立 plan clips,前端网格预览直接读各变体 plan 的真实片段进行播放,预览素材排布/起点与正式成片一致; - 方案 B(轻量过渡):批量预览卡片不再展示素材排布差异(明确只展示标题/配音/封面差异),文案提示"正式生成时每个视频独立随机选片",避免误导。 前端另需: 1. 批量正式提交时 source_edit_plan_id 可靠传递(localStorage 丢失兜底、刷新恢复),但不得依赖它让后端共用 plan; 2. 每变体封面/标题/配音独立配置的 UI 与 titles[]/cover_urls[]/voice_library_ids[] 提交流程保持现有变体级机制; 3. N=1 单视频预览/生成零回归。 ## 验收标准(staging) - N=3:预览中每个变体展示的片段与最终成片片段一致(方案 A);或 UI 明确不承诺素材差异(方案 B); - 3 成片封面各不相同、变体标题/配音各自正确; - N=1 流程与现状完全一致。 参考核查报告:项目目录《批量生成降重失效核查_20260906.md》;后端配套工单 #1743。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: xiaoxia/xiaoxia-saas#1744