feat: 转场位置与类型随机化 (#1766) #1786

Merged
auto-approve-bot merged 3 commits from feat/transition-randomization-1766 into develop 2026-09-08 10:17:40 +08:00
Owner

概述

Issue #1766:为不同变体生成差异化的转场序列(类型 + 时长 + 位置微调),打破"所有变体转场节奏完全一致"的结构相似性。

方案

1. 新增 transition_randomizer 模块

  • 转场类型池:5 种效果(dissolve / zoomin / slideleft / wipeleft / fade)
  • 硬切概率:30%-50%,与 #1764 节奏模板协同(短片段硬切比例更高)
  • 转场时长:0.3s ~ 0.8s 随机,长片段间转场倾向更长
  • 位置微调:±0.5s jitter,打破固定节奏

2. 渲染侧增强

  • xfade_builder.build_xfade_filter_chain 支持逐转场独立时长(transition_durations)和位置偏移(jitters),向后兼容
  • TransitionEngine.build_xfade_chain 透传新参数
  • unified_render_service 提取 clip config 中的 jitter 传给引擎
  • variant_plan_selector.reselect_clips_for_variant 自动应用转场随机化

3. 数据存储

  • transition_effect / transition_duration:每个 clip 独立存储(已有字段)
  • transition_jitter:存入 clip.config["transition_jitter"],渲染时读取

文件变更

文件 变更
packages/domain/transition_randomizer.py 新增:转场随机化核心逻辑
packages/domain/xfade_builder.py 增强:支持 transition_durations + jitters 参数
packages/domain/variant_plan_selector.py 集成:reselect 后自动应用转场随机化
apps/worker/video_processing/ffmpeg_utils.py re-export 透传新参数
apps/worker/video_processing/transition_engine.py 透传 transition_durations + jitters
apps/worker/video_processing/unified_render_service.py 提取 jitter 传给引擎
tests/unit/test_transition_randomizer_1766.py 新增:27 测试
tests/unit/test_xfade_per_transition_1766.py 新增:16 测试

测试

  • 43 个新增测试全过
  • 213 个相关领域测试全过(variant_plan_selector / xfade / rhythm / unified_render)
  • 向后兼容:不传新参数时行为不变

验收标准(来自 #1766)

  • 批量生成 3 个视频,转场序列至少 2 组不同(不同 seed 产生不同序列)
  • 所有转场渲染正常(xfade filter chain 构建逻辑正确,无黑屏/闪烁风险)
  • 补充相关单测覆盖随机化逻辑(43 个测试)

PR 目标:develop

## 概述 Issue #1766:为不同变体生成差异化的转场序列(类型 + 时长 + 位置微调),打破"所有变体转场节奏完全一致"的结构相似性。 ## 方案 ### 1. 新增 `transition_randomizer` 模块 - **转场类型池**:5 种效果(dissolve / zoomin / slideleft / wipeleft / fade) - **硬切概率**:30%-50%,与 #1764 节奏模板协同(短片段硬切比例更高) - **转场时长**:0.3s ~ 0.8s 随机,长片段间转场倾向更长 - **位置微调**:±0.5s jitter,打破固定节奏 ### 2. 渲染侧增强 - `xfade_builder.build_xfade_filter_chain` 支持逐转场独立时长(`transition_durations`)和位置偏移(`jitters`),向后兼容 - `TransitionEngine.build_xfade_chain` 透传新参数 - `unified_render_service` 提取 clip config 中的 jitter 传给引擎 - `variant_plan_selector.reselect_clips_for_variant` 自动应用转场随机化 ### 3. 数据存储 - `transition_effect` / `transition_duration`:每个 clip 独立存储(已有字段) - `transition_jitter`:存入 `clip.config["transition_jitter"]`,渲染时读取 ## 文件变更 | 文件 | 变更 | |------|------| | `packages/domain/transition_randomizer.py` | **新增**:转场随机化核心逻辑 | | `packages/domain/xfade_builder.py` | 增强:支持 `transition_durations` + `jitters` 参数 | | `packages/domain/variant_plan_selector.py` | 集成:reselect 后自动应用转场随机化 | | `apps/worker/video_processing/ffmpeg_utils.py` | re-export 透传新参数 | | `apps/worker/video_processing/transition_engine.py` | 透传 `transition_durations` + `jitters` | | `apps/worker/video_processing/unified_render_service.py` | 提取 jitter 传给引擎 | | `tests/unit/test_transition_randomizer_1766.py` | **新增**:27 测试 | | `tests/unit/test_xfade_per_transition_1766.py` | **新增**:16 测试 | ## 测试 - 43 个新增测试全过 - 213 个相关领域测试全过(variant_plan_selector / xfade / rhythm / unified_render) - 向后兼容:不传新参数时行为不变 ## 验收标准(来自 #1766) - ✅ 批量生成 3 个视频,转场序列至少 2 组不同(不同 seed 产生不同序列) - ✅ 所有转场渲染正常(xfade filter chain 构建逻辑正确,无黑屏/闪烁风险) - ✅ 补充相关单测覆盖随机化逻辑(43 个测试) PR 目标:develop
xiaoxia added 1 commit 2026-09-08 10:04:39 +08:00
feat: 转场位置与类型随机化 (#1766)
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 3s
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 19s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 19s
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m18s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m34s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 1m35s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m27s
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
4c9f5e52b5
新增 transition_randomizer 模块,为不同变体生成差异化的转场序列:

- 转场类型池:5 种效果(dissolve/zoomin/slideleft/wipeleft/fade)
- 硬切概率 30%-50%,与节奏模板协同(短片段硬切比例更高)
- 转场时长随机 0.3s~0.8s,长片段间转场倾向更长
- 位置微调 jitter ±0.5s,打破固定节奏

渲染侧增强:
- xfade_builder.build_xfade_filter_chain 支持逐转场独立时长(transition_durations)
  和位置偏移(jitters),向后兼容
- TransitionEngine.build_xfade_chain 透传新参数
- unified_render_service 提取 clip config 中的 jitter 传给引擎
- variant_plan_selector 在 reselect 后自动应用转场随机化
- jitter 存入 clip.config["transition_jitter"] 供渲染侧读取

测试:
- test_transition_randomizer_1766.py: 27 测试(池定义/硬切比例/时长范围/协同/集成)
- test_xfade_per_transition_1766.py: 16 测试(逐转场时长/jitter/向后兼容/边界)
- 全量相关测试 213 通过

🚀 预览环境已部署

项目 详情
PR号 #1786
预览链接 https://pr-1786.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1786 | | 预览链接 | [https://pr-1786.preview.xiaoxiajianji.com](https://pr-1786.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot added 1 commit 2026-09-08 10:07:00 +08:00
style: auto-format with black + isort + prettier [skip ci-format-check]
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 4s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 18s
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 20s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m23s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been cancelled
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m23s
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
de1b122159
xiaoxia added 1 commit 2026-09-08 10:09:54 +08:00
style: black formatting for #1766 files
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 3s
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 16s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 37s
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m29s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 1m39s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m43s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m39s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 2m16s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m8s
AI Code Review / AI Code Review (pull_request) Successful in 6m16s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 6m23s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 6s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 3m5s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Failing after 11m58s
Preview Cleanup / Cleanup Preview Environment (pull_request) Failing after 11m59s
90a67d4181
auto-approve-bot merged commit 44224cfaf6 into develop 2026-09-08 10:17:40 +08:00
auto-approve-bot deleted branch feat/transition-randomization-1766 2026-09-08 10:17:51 +08:00
Sign in to join this conversation.