fix(api): 一键生成自动选素材全链路修复,4个核心根因一次性解决 #491

Merged
auto-approve-bot merged 1 commits from fix/auto-material-all-root-causes into develop 2026-07-18 09:21:11 +08:00

1 Commits

Author SHA1 Message Date
CI Bot ddf0bc500d fix(api): 一键生成自动选素材全链路修复,4个核心根因一次性解决
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 22s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 45s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 36s
AI Code Review / AI Code Review (pull_request) Successful in 2m29s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 2m17s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 2m44s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m21s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 4m15s
- 根因1(P0): PIP/VOICE_PIP模式+有clip_configs时素材分配完全失败
  * ClipType枚举只有main/intro/outro等,没有overlay/background/corner_voice/b_roll
  * _distribute_pip/_distribute_voice_pip按类型筛选永远找不到目标片段
  * 修复: _create_clips_from_configs后调用_map_clip_types_for_mode
    将MAIN类型片段按顺序映射为对应模式的角色类型

- 根因2(P0): generate-from-template漏写plan.config.asset_ids
  * create_plan有这一步兜底用,timeline入口漏掉了
  * 修复: 补上asset_ids写入config,与create_plan保持一致

- 根因3(P1): 兜底2 _auto_fallback_copy_template_clips只建片段不分素材
  * 兜底4去掉material_mode限制后,兜底2创建的片段能通过兜底4自动分配
  * 等于间接修复了兜底2的素材问题

- 根因4(P1): 兜底4 material_mode默认manual永不触发
  * 全代码库没有任何地方设置material_mode=auto
  * 修复: 去掉material_mode检查,只要有project_id且有无素材片段就自动选
  * 确保最后一道兜底防线真正生效

新增2个单元测试验证PIP/VOICE_PIP+有clip_configs场景的素材分配
2026-07-18 09:16:14 +08:00