Initial TrueGrowth source import
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
## Context
|
||||
现有批量生成按镜头顺序执行,主要是为了将上一段尾帧传给下一段首帧。新的产品判断是尾帧传递收益不明显,用户更需要整体生成速度。
|
||||
|
||||
## Goals
|
||||
- 两套工作流保持一致:爆款 MV 与爆款视频都使用同一类并行批量生成语义。
|
||||
- 每个镜头独立生成首帧,再基于该首帧生成视频。
|
||||
- 保留现有角色参考图、全局参考图、知识库上下文、模型参数、尺寸参数和自动插入画布行为。
|
||||
- 停止按钮应尽量阻止后续提交,并让已提交任务自然完成或由现有任务队列处理。
|
||||
|
||||
## Non-Goals
|
||||
- 不新增新的记录实体或持久化大文件。
|
||||
- 不引入上一段尾帧到下一段首帧的兼容模式。
|
||||
- 不改变单镜头“生成首帧/生成视频”的交互语义。
|
||||
|
||||
## Approach
|
||||
`handleGenerateAllVideos` 改为为每个需要生成的镜头启动一个独立 async pipeline:
|
||||
|
||||
1. 若镜头缺少可用首帧,则调用现有首帧生成任务,参考图包含全局参考图与该镜头角色参考图。
|
||||
2. 首帧 URL 写回当前镜头。
|
||||
3. 使用该首帧作为本镜头视频任务的 `referenceImages`,提交视频生成。
|
||||
4. 视频 URL 写回当前镜头,并按现有设置选择是否插入画布。
|
||||
|
||||
所有镜头 pipeline 使用 `Promise.allSettled` 并行等待。失败和重试在单个镜头内部处理,不阻塞其他镜头。
|
||||
|
||||
## Risks
|
||||
- 并行提交可能触发供应商限流。实现优先复用现有任务队列和轻量 URL 引用,不读取/缓存大二进制;若后续实测限流严重,再加并发上限配置。
|
||||
- 停止无法取消已经提交给供应商的任务;本次保持现有队列语义,只停止未进入下一阶段的 pipeline。
|
||||
@@ -0,0 +1,17 @@
|
||||
# Change: Parallelize workflow batch video generation
|
||||
|
||||
## Why
|
||||
爆款 MV 与爆款视频第三步当前按镜头串行生成,并依赖上一段尾帧驱动下一段首帧。实际效果看尾帧传递对后续片段影响不大,串行等待会显著拉长整条工作流耗时。
|
||||
|
||||
## What Changes
|
||||
- 将“全部→生成视频”从按镜头串行改为按镜头并行的独立流水线。
|
||||
- 每个镜头流水线内部仍保持顺序:先结合上下文、角色参考图生成本镜头首帧,再用该首帧生成本镜头视频。
|
||||
- 批量生成不再自动提取上一段尾帧作为下一段首帧,也不再因前一段失败阻塞后一段。
|
||||
- 批量进度、停止与失败重试语义改为按镜头独立统计。
|
||||
|
||||
## Impact
|
||||
- Affected specs: `video-batch-generation`
|
||||
- Affected code:
|
||||
- `packages/drawnix/src/components/mv-creator/pages/GeneratePage.tsx`
|
||||
- `packages/drawnix/src/components/video-analyzer/pages/GeneratePage.tsx`
|
||||
- focused tests/helpers where available
|
||||
@@ -0,0 +1,61 @@
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Batch video generation runs shot pipelines in parallel
|
||||
|
||||
爆款 MV 与爆款视频生成工具在用户执行“全部→生成视频”时,系统 SHALL 为每个待生成镜头启动独立的生成流水线,并允许多个镜头同时推进,而不是按镜头顺序等待前一镜头完成。
|
||||
|
||||
#### Scenario: Parallel shot pipelines
|
||||
|
||||
- **WHEN** 用户在生成页点击“全部→生成视频”
|
||||
- **THEN** 系统为多个待生成镜头启动独立流水线
|
||||
- **AND** 某一镜头的视频生成不需要等待前一镜头的视频生成完成
|
||||
|
||||
#### Scenario: Skip completed shot independently
|
||||
|
||||
- **WHEN** 某一镜头已经存在已生成视频
|
||||
- **THEN** 系统跳过该镜头的新视频任务创建
|
||||
- **AND** 其他未完成镜头仍可并行生成
|
||||
|
||||
### Requirement: Each batch shot generates video from its own first frame
|
||||
|
||||
系统 SHALL 在每个批量镜头流水线内部先生成或复用该镜头首帧,再用该首帧作为本镜头视频生成输入。
|
||||
|
||||
#### Scenario: Generate first frame before shot video
|
||||
|
||||
- **GIVEN** 某一镜头没有已生成首帧
|
||||
- **WHEN** 批量生成处理该镜头
|
||||
- **THEN** 系统先结合镜头上下文、角色参考图和全局参考图生成该镜头首帧
|
||||
- **AND** 首帧生成成功后才提交该镜头的视频生成任务
|
||||
|
||||
#### Scenario: Reuse existing first frame for shot video
|
||||
|
||||
- **GIVEN** 某一镜头已经存在首帧
|
||||
- **WHEN** 批量生成处理该镜头
|
||||
- **THEN** 系统直接使用该首帧作为该镜头视频生成输入
|
||||
|
||||
### Requirement: Batch generation does not chain previous tail frames
|
||||
|
||||
系统 SHALL NOT 在批量生成中自动提取上一段视频尾帧并写入下一段首帧输入。
|
||||
|
||||
#### Scenario: Later shot is independent from previous tail frame
|
||||
|
||||
- **GIVEN** 第 N 段视频生成完成且存在第 N+1 段
|
||||
- **WHEN** 批量生成继续处理第 N+1 段
|
||||
- **THEN** 系统不从第 N 段视频提取尾帧作为第 N+1 段首帧
|
||||
- **AND** 第 N+1 段使用自己的首帧生成流水线
|
||||
|
||||
### Requirement: Batch parallel generation failure and stop are shot-scoped
|
||||
|
||||
系统 SHALL 将批量生成失败、重试和停止语义限定在独立镜头流水线内,单个镜头失败不应阻塞其他镜头完成。
|
||||
|
||||
#### Scenario: One shot fails while others continue
|
||||
|
||||
- **WHEN** 批量生成中的某个镜头流水线失败
|
||||
- **THEN** 系统可按该镜头的重试策略重试该镜头
|
||||
- **AND** 其他镜头流水线继续运行或完成
|
||||
|
||||
#### Scenario: User stops parallel batch generation
|
||||
|
||||
- **WHEN** 用户在批量并行生成过程中执行停止
|
||||
- **THEN** 系统停止尚未进入下一阶段的流水线继续提交新任务
|
||||
- **AND** 不再因为镜头顺序创建后续依赖任务
|
||||
@@ -0,0 +1,11 @@
|
||||
## 1. Implementation
|
||||
- [x] 1.1 Update MV creator batch generation to launch independent per-shot pipelines in parallel.
|
||||
- [x] 1.2 Update popular video batch generation to launch independent per-shot pipelines in parallel.
|
||||
- [x] 1.3 Ensure each pipeline generates or reuses a first frame before submitting that shot's video task.
|
||||
- [x] 1.4 Remove batch-time dependency on previous shot tail frames.
|
||||
- [x] 1.5 Update batch progress/status copy from serial index semantics to parallel completion semantics.
|
||||
|
||||
## 2. Verification
|
||||
- [x] 2.1 Run targeted TypeScript/lint checks for the changed generation pages.
|
||||
- [x] 2.2 Run or add focused tests for shared generation helpers if an extractable helper is introduced.
|
||||
- [x] 2.3 Manually inspect no large image/video binaries are buffered in the new orchestration.
|
||||
Reference in New Issue
Block a user