feat(#1970): 智能降重 PR2 - dedup_enabled 开关 + 6 维片段级微变换 #1975

Merged
auto-approve-bot merged 1 commits from feat/1970-dedup-micro-transforms into develop 2026-09-18 05:45:00 +08:00
Owner

#1970 智能剪辑流程重构 · PR2/3 智能降重增强

承接 PR1(#1974 已合入 develop)。

改动内容

  1. 开关贯通:CreateGenerationTaskRequest 新增 dedup_enabled: bool = True;经 writeback_edit_plan_config 落入 plan.config(同时写入 video_index 供同批次变体区分种子)。无需 migration(JSON 字段)。
  2. 纯逻辑模块 apps/worker/video_processing/micro_transform_pure.py:
    • 种子 sha256(task_id:video_index) % 10000(不用内置 hash,规避 PYTHONHASHSEED 跨进程不可复现)
    • hflip 每片段 50%、播放速度 0.971.03x、亮度/对比度/饱和度各 ±2%、BGM 起始偏移 28s
  3. 渲染注入(unified_render_service 直通 + filter_complex 两路径):
    • hflip 注入 scale 前(缩放后翻转会破坏画面定位),eq 注入 scale 后
    • 微变换速度烘焙进 ResolvedClip.playback_speed,trim 多段展开时按 config._micro_index 对齐源片段序号;音频链 atempo 自动同步,无双倍叠加
    • BGM 偏移复用 #1767 已有 audio_offset(-ss seek),用户显式配置优先
  4. 门控:启用微变换时 _can_use_stream_copy 强制重编码;worker 渲染后 dedup_enabled=False 跳过 random_edge_crop(读 plan.config 失败按开启兜底),实现确定性渲染。
  5. 容错:种子/plan 构建、filter 注入、offset 读取均 try/except 降级为不注入,不阻断渲染。

P1 保守项

  • 字幕检测尚未实现,clip_has_text=None 时按「全部有字幕」处理 → 本 PR hflip 实际不翻转,仅保留管线;后续拿到字幕检测后改一行即可放开。

测试

  • 新增 43 个:纯参数/边界/可复现/翻转率分布 23 + 渲染注入/stream copy 门控/开关 18 + writeback 2
  • 适配 test_unified_render_service 既有确定性用例(FakePlan 默认 dedup_enabled=False)
  • 全量 tests/unit:15701 passed, 28 skipped(503s);black/isort/ruff 全过

影响面

默认开启,渲染后视频产生片段级确定性差异以降重;关闭后渲染链路与改造前行为一致。无 DB migration。

PR3 将在此 PR 合入后提交:assembly_mode/script_id/tts_* 等新字段 + 叙事模式。

## #1970 智能剪辑流程重构 · PR2/3 智能降重增强 承接 PR1(#1974 已合入 develop)。 ### 改动内容 1. **开关贯通**:`CreateGenerationTaskRequest` 新增 `dedup_enabled: bool = True`;经 `writeback_edit_plan_config` 落入 `plan.config`(同时写入 `video_index` 供同批次变体区分种子)。无需 migration(JSON 字段)。 2. **纯逻辑模块** `apps/worker/video_processing/micro_transform_pure.py`: - 种子 `sha256(task_id:video_index) % 10000`(不用内置 hash,规避 PYTHONHASHSEED 跨进程不可复现) - hflip 每片段 50%、播放速度 0.97~1.03x、亮度/对比度/饱和度各 ±2%、BGM 起始偏移 2~8s 3. **渲染注入**(unified_render_service 直通 + filter_complex 两路径): - hflip 注入 scale 前(缩放后翻转会破坏画面定位),eq 注入 scale 后 - 微变换速度烘焙进 `ResolvedClip.playback_speed`,trim 多段展开时按 `config._micro_index` 对齐源片段序号;音频链 atempo 自动同步,无双倍叠加 - BGM 偏移复用 #1767 已有 `audio_offset`(-ss seek),用户显式配置优先 4. **门控**:启用微变换时 `_can_use_stream_copy` 强制重编码;worker 渲染后 `dedup_enabled=False` 跳过 `random_edge_crop`(读 plan.config 失败按开启兜底),实现确定性渲染。 5. **容错**:种子/plan 构建、filter 注入、offset 读取均 try/except 降级为不注入,不阻断渲染。 ### P1 保守项 - 字幕检测尚未实现,`clip_has_text=None` 时按「全部有字幕」处理 → **本 PR hflip 实际不翻转**,仅保留管线;后续拿到字幕检测后改一行即可放开。 ### 测试 - 新增 43 个:纯参数/边界/可复现/翻转率分布 23 + 渲染注入/stream copy 门控/开关 18 + writeback 2 - 适配 test_unified_render_service 既有确定性用例(FakePlan 默认 dedup_enabled=False) - **全量 tests/unit:15701 passed, 28 skipped(503s)**;black/isort/ruff 全过 ### 影响面 默认开启,渲染后视频产生片段级确定性差异以降重;关闭后渲染链路与改造前行为一致。无 DB migration。 PR3 将在此 PR 合入后提交:assembly_mode/script_id/tts_* 等新字段 + 叙事模式。
xiaoxia added 1 commit 2026-09-18 05:34:57 +08:00
feat(#1970): 智能降重 PR2 - dedup_enabled 开关 + 6 维片段级微变换
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
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 / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
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 / PR Build Worker Image (pull_request) Successful in 42s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 45s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m23s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m55s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m53s
AI Code Review / AI Code Review (pull_request) Successful in 6m42s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 6m42s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 7m28s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 8m44s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 9m21s
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 2s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 7m7s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 40s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 4m37s
b659b750b6
- CreateGenerationTaskRequest 新增 dedup_enabled(默认 True),
  经 writeback 落入 plan.config(含 video_index 供种子区分变体)
- 新增 micro_transform_pure 纯模块:种子 sha256(task_id:video_index)%10000
  可复现;hflip(P1 保守默认不翻)/setpts 0.97~1.03/eq 亮度对比饱和 ±2%/BGM 偏移 2~8s
- unified_render_service:直通与 filter_complex 两路径注入片段级
  hflip+eq;速度烘焙进 ResolvedClip.playback_speed(trim 多段展开按
  config._micro_index 对齐),音频 atempo 自动同步;BGM 偏移复用
  现有 audio_offset(-ss seek),用户显式配置优先
- stream copy 门控:启用微变换时强制重编码
- worker:dedup_enabled=False 时跳过 random_edge_crop(读取 plan.config,失败按开启兜底)
- 测试:新增 41 个(纯参数 23 + 渲染注入/门控 18),writeback 2 个;
  全量 tests/unit 15701 passed / 28 skipped

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1975 | | 预览链接 | [https://pr-1975.preview.xiaoxiajianji.com](https://pr-1975.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot merged commit a59a6a588a into develop 2026-09-18 05:45:00 +08:00
auto-approve-bot deleted branch feat/1970-dedup-micro-transforms 2026-09-18 05:45:02 +08:00

🗑️ 预览环境已清理

PR #1975 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #1975 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.