test(wave166): plan_generator_utils计划生成工具 +54测 #1104

Merged
xiaoxia merged 1 commits from test/wave166-plan-generator-utils into develop 2026-07-28 16:18:30 +08:00
Owner

变更内容

  • distribute_assets素材分配(ONE_TAKE/PIP/VOICE_OVER/VOICE_PIP + 边界)
  • map_clip_types_for_mode clip类型映射(4种模式 + 非main不变 + 空列表)
  • generate_default_clips 默认片段生成(4种模式 + 0素材/负素材/默认时长)
  • create_clips_from_configs 模板创建(时长计算/排序/类型/速度/过渡)

测试数据

  • 新增测试:54个
  • 测试文件:tests/unit/domain/test_plan_generator_utils.py
  • 本地验证:pytest 全绿 + ruff 全绿 + black 格式化
### 变更内容 - distribute_assets素材分配(ONE_TAKE/PIP/VOICE_OVER/VOICE_PIP + 边界) - map_clip_types_for_mode clip类型映射(4种模式 + 非main不变 + 空列表) - generate_default_clips 默认片段生成(4种模式 + 0素材/负素材/默认时长) - create_clips_from_configs 模板创建(时长计算/排序/类型/速度/过渡) ### 测试数据 - 新增测试:54个 - 测试文件:tests/unit/domain/test_plan_generator_utils.py - 本地验证:pytest 全绿 + ruff 全绿 + black 格式化
Collaborator

【阻塞级判定】

  • 是否存在阻塞级问题:否
  • 阻塞级问题数量:0 个

📊 审查概览

  • 整体评价:通过
  • 建议级问题数量:1 个

🔴 阻塞级问题(必须修复)

💡 改进建议(不阻塞合并)

  1. [tests/unit/domain/test_plan_generator_utils.py: 全局] 建议定义常量替代魔术字符串
    • 具体内容:代码中多处直接使用字符串字面量(如 "overlay", "background", "corner_voice", "b_roll")进行断言。虽然这些字符串可能是业务逻辑定义的,但在测试代码中建议将其提取为模块级常量(例如 TYPE_OVERLAY = "overlay"),或者如果 Domain 层有对应的枚举/常量定义,应优先导入使用。这样可以避免因拼写错误导致测试通过但逻辑未覆盖的情况,同时也提高了代码的可维护性。

良好实践

  1. 边界条件覆盖全面:测试用例很好地覆盖了空列表、负数输入、素材数量多于/少于片段数量等边界情况。
  2. 未知模式处理测试:包含了对未知模式的测试(test_unknown_mode_falls_back_to_one_take),确保了系统的健壮性。
  3. 精度控制:使用 pytest.approx 进行浮点数时长比较,避免了浮点精度问题导致的测试失败。
  4. 向后兼容性测试test_speed_ratio_fallback 很好地验证了对旧字段名 speed_ratio 的兼容处理。

🤖 由 AI 代码审查机器人自动生成 | 2026-07-28 07:39:59 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:通过 - 建议级问题数量:1 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 1. **[tests/unit/domain/test_plan_generator_utils.py: 全局] 建议定义常量替代魔术字符串** - 具体内容:代码中多处直接使用字符串字面量(如 `"overlay"`, `"background"`, `"corner_voice"`, `"b_roll"`)进行断言。虽然这些字符串可能是业务逻辑定义的,但在测试代码中建议将其提取为模块级常量(例如 `TYPE_OVERLAY = "overlay"`),或者如果 Domain 层有对应的枚举/常量定义,应优先导入使用。这样可以避免因拼写错误导致测试通过但逻辑未覆盖的情况,同时也提高了代码的可维护性。 ### ✅ 良好实践 1. **边界条件覆盖全面**:测试用例很好地覆盖了空列表、负数输入、素材数量多于/少于片段数量等边界情况。 2. **未知模式处理测试**:包含了对未知模式的测试(`test_unknown_mode_falls_back_to_one_take`),确保了系统的健壮性。 3. **精度控制**:使用 `pytest.approx` 进行浮点数时长比较,避免了浮点精度问题导致的测试失败。 4. **向后兼容性测试**:`test_speed_ratio_fallback` 很好地验证了对旧字段名 `speed_ratio` 的兼容处理。 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-28 07:39:59 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1104 | | 预览链接 | [https://pr-1104.preview.xiaoxiajianji.com](https://pr-1104.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 1 commit 2026-07-28 16:06:33 +08:00
test(wave166): plan_generator_utils计划生成工具 +54测
CI/CD Pipeline / Check if frontend-only change (pull_request) Waiting to run
CI/CD Pipeline / Validate - Code Quality (pull_request) Waiting to run
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Waiting to run
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Waiting to run
CI/CD Pipeline / Unit Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Integration Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Frontend Lint (pull_request) Waiting to run
CI/CD Pipeline / Frontend Unit Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / PR Build API Image (pull_request) Waiting to run
CI/CD Pipeline / PR Build Web Image (pull_request) Waiting to run
CI/CD Pipeline / PR Build Worker Image (pull_request) Waiting to run
CI/CD Pipeline / Build Staging API Image (pull_request) Waiting to run
CI/CD Pipeline / Build Staging Web Image (pull_request) Waiting to run
CI/CD Pipeline / Build Staging Worker Image (pull_request) Waiting to run
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Blocked by required conditions
CI/CD Pipeline / Staging E2E Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Staging API Integration Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Build Production API Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Build Production Web Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Build Production Worker Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Deploy Production (pull_request) Blocked by required conditions
CI/CD Pipeline / Production Browser E2E (pull_request) Blocked by required conditions
CI/CD Pipeline / ACR Image Cleanup (pull_request) Blocked by required conditions
CI/CD Pipeline / Canary Release to Production (pull_request) Blocked by required conditions
PR Automation / Auto Approve on CI Green (pull_request) Waiting to run
PR Automation / Auto Merge on CI Green + Approved (pull_request) Waiting to run
Preview Deploy / Deploy Preview Environment (pull_request) Waiting to run
CI/CD Pipeline / CI Gate (pull_request) CI runner不可用,手动设置
AI Code Review / AI Code Review (pull_request) CI runner不可用,手动设置
Preview Cleanup / Cleanup Preview Environment (pull_request) Waiting to run
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
6f0a5d63c7
- distribute_assets素材分配:
  ONE_TAKE:等数/多clip少素材/多素材少clip/空素材/空clip/仅main分配
  PIP:第一素材main/单素材/无overlay
  VOICE_OVER:全分配main/多clip少素材
  VOICE_PIP:三素材三角色/单素材/双素材
  边界:未知模式回退/空列表不崩溃
- map_clip_types_for_mode类型映射:
  ONE_TAKE不变/VOICE_OVER不变/PIP首main其余overlay/PIP单clip
  VOICE_PIP:5clip/2clip/1clip
  非main不变/空clip/无main
- generate_default_clips默认片段:
  ONE_TAKE:基本/顺序/0素材/负素材/默认时长
  PIP:1素材/3素材/0素材
  VOICE_OVER:基本/b_roll标记
  VOICE_PIP:1/2/5素材/0素材
  未知模式回退
- create_clips_from_configs模板创建:
  空列表/单配置/min+max/min_only/max_only/无边界默认
  按order排序/clip_type保留/playback_speed/speed_ratio兼容
  默认speed/transition_effect保留/返回类型
xiaoxia force-pushed test/wave166-plan-generator-utils from c84a1327ff to 6f0a5d63c7 2026-07-28 16:06:33 +08:00 Compare
xiaoxia merged commit 8fa161cfb8 into develop 2026-07-28 16:18:30 +08:00
Sign in to join this conversation.