feat(generate): #1744 批量预览对接后端变体真实片段 + 智能匹配候选池×3 #1748
Reference in New Issue
Block a user
Delete Branch "feat/1744-batch-real-variant-clips"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景 / 工单 #1744
批量预览 N 个视频时,变体差异仅靠前端
variantSeed本地模拟(素材轮换+随机起点),不调后端;后端正式渲染走独立 plan(#1745 已上线reselect_plan_for_variant),导致预览与成片不一致。改动
1. 批量预览对接真实变体片段(方案 A:轻量选片端点,零渲染成本)
api/generation/variantPlans.ts:POST /generation/variant-plans,请求{template_id, asset_ids, count, source_edit_plan_id?},响应{items: [{variant_index, plan_id, clips}], total}。只选片不渲染视频,复用后端已有的reselect_plan_for_variant同源逻辑hooks/useBatchVariantPlans.ts:批量模式 step4 素材就绪后拉取 N 个变体的真实 plan clipsCanvasPreviewGrid每个变体卡片优先播放serverClips(播放器本就支持,serverClips 非空时优先、为空回退 variantSeed),加载中显示「独立选片中…」角标useGenerateVideo正式生成时按勾选索引回传variant_plan_ids,后端直接关联对应 plan、不再重选,保证预览所见即成片2. 三级降级(后端端点未上线不阻塞)
isBatch && currentStep===4 && 素材就绪启用;N=1 单视频零回归3. 智能匹配候选池扩大(工单附带项)
computeLimitFromSegments规则改为max(片段数×3, ceil(总时长/15s), 片段数),钳制 [1,200];DEFAULT_LIMIT 10→304. 测试
后端依赖(不阻塞本 PR 合并,前端已降级)
POST /api/v1/generation/variant-plans:变体 0 返回源/草稿 plan clips,变体 1..N-1 调EditPlanService.reselect_plan_for_variant(与正式生成同源),只选片不渲染;clips 需支持按任意 plan_id 查询(现有 GET clips 端点经get_draft_plan_id只能拿草稿 plan)CreateGenerationTaskRequest增加variant_plan_ids: list[str](Pydantic v2 默认 extra=ignore,前端提前传不会 422),创建批量任务时直接关联对应 plan验证
npm run build通过CI全绿,自动审批通过。
CI全绿,自动审批通过。
🚀 预览环境已部署
代码审查结果 - PR #1748
⚠️ 问题(0个需要修改)
无
💡 建议(0个可选)
无
✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好
🤖 由 AI 代码审查机器人自动生成 | 2026-09-06 12:31:05 | 模型:
🗑️ 预览环境已清理
PR #1748 已关闭或合并,对应的预览环境已被清理。