refactor(wave111): 抽离audio_track_config领域模型 + 67单测 #997

Closed
xiaoxia wants to merge 1 commits from test/wave111-audio-track-config into develop
Owner

变更内容

  • 新建 packages/domain/audio_track_config.py:纯逻辑领域模型

    • AudioTrack / MultiTrackMixConfig 数据类
    • from_dict / from_config_dict / validate 方法
    • is_effective / has_effect / effective_track_count / main_tracks / bgm_tracks 属性
    • clamp_volume / is_valid_audio_extension 工具函数
    • 5 种轨道类型常量 + DEFAULT_VOLUMES + ALLOWED_AUDIO_EXTENSIONS
  • 精简 apps/worker/video_processing/multi_track_mixer.py

    • 478→359行(-119行,-25%)
    • 数据类/常量全部委托给 audio_track_config
    • 保留模块级导出,完全向后兼容
  • 新增 67 个单测(test_audio_track_config.py)

    • 常量验证(4 个)
    • AudioTrack 默认值 + from_dict + validate + is_effective(30 个)
    • MultiTrackMixConfig from_dict + 属性(16 个)
    • 工具函数 parametrize(17 个)

验证

  • 本地全绿:100 passed(33 multi_track_mixer 原有 + 67 新增)
  • black 格式化通过

关联

后端单测覆盖率提升 wave111,multi_track_mixer 大文件拆分第一波。

## 变更内容 - **新建** `packages/domain/audio_track_config.py`:纯逻辑领域模型 - `AudioTrack` / `MultiTrackMixConfig` 数据类 - `from_dict` / `from_config_dict` / `validate` 方法 - `is_effective` / `has_effect` / `effective_track_count` / `main_tracks` / `bgm_tracks` 属性 - `clamp_volume` / `is_valid_audio_extension` 工具函数 - 5 种轨道类型常量 + DEFAULT_VOLUMES + ALLOWED_AUDIO_EXTENSIONS - **精简** `apps/worker/video_processing/multi_track_mixer.py` - 478→359行(-119行,-25%) - 数据类/常量全部委托给 audio_track_config - 保留模块级导出,**完全向后兼容** - **新增** 67 个单测(test_audio_track_config.py) - 常量验证(4 个) - AudioTrack 默认值 + from_dict + validate + is_effective(30 个) - MultiTrackMixConfig from_dict + 属性(16 个) - 工具函数 parametrize(17 个) ## 验证 - 本地全绿:100 passed(33 multi_track_mixer 原有 + 67 新增) - black 格式化通过 ## 关联 后端单测覆盖率提升 wave111,multi_track_mixer 大文件拆分第一波。
xiaoxia added 1 commit 2026-07-27 00:55:44 +08:00
refactor(wave111): 抽离audio_track_config领域模型 + 67单测
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 22s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 39s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m4s
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 / Validate - Migration (alembic) (pull_request) Successful in 1m17s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 26s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 40s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 2m14s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 53s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 51s
AI Code Review / AI Code Review (pull_request) Successful in 1m37s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m23s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m22s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
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 / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m35s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m5s
CI/CD Pipeline / Deploy Production (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 / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 26s
cc4bde1c84
- 新建 packages/domain/audio_track_config.py:AudioTrack/MultiTrackMixConfig
  数据类 + from_dict/from_config_dict + validate/is_effective/has_effect
  + clamp_volume/is_valid_audio_extension 工具函数 + 常量
- multi_track_mixer.py: 478→359行 (-119行, -25%),复用audio_track_config
  保留模块级导出,完全向后兼容
- 新增 67 个单测覆盖数据模型 + 纯逻辑函数

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #997 | | 预览链接 | [https://pr-997.preview.xiaoxiajianji.com](https://pr-997.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
Collaborator

代码审查结果 - PR #997

⚠️ 问题(0个需要修改)

💡 建议(1个可选)

  1. packages/domain/audio_track_config.py 第40行:未使用的常量 _VALID_TRACK_TYPES
    • 代码中定义了 _VALID_TRACK_TYPES 集合,但在 AudioTrack.validatefrom_dict 中并未使用该集合来校验 track_type 的合法性。如果该常量是为了限制轨道类型,建议在 validate 方法中添加校验逻辑;如果暂无用处,建议删除以避免混淆。

格式检查通过 | 逻辑审查通过 | 性能良好


🤖 由 AI 代码审查机器人自动生成 | 2026-07-26 17:48:20 | 模型:

## 代码审查结果 - PR #997 ### ⚠️ 问题(0个需要修改) 无 ### 💡 建议(1个可选) 1. **packages/domain/audio_track_config.py 第40行**:未使用的常量 `_VALID_TRACK_TYPES` - 代码中定义了 `_VALID_TRACK_TYPES` 集合,但在 `AudioTrack.validate` 或 `from_dict` 中并未使用该集合来校验 `track_type` 的合法性。如果该常量是为了限制轨道类型,建议在 `validate` 方法中添加校验逻辑;如果暂无用处,建议删除以避免混淆。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-26 17:48:20 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia closed this pull request 2026-07-27 15:26:20 +08:00

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #997 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Some checks are pending
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 22s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 39s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m4s
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 / Validate - Migration (alembic) (pull_request) Successful in 1m17s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 26s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 40s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 2m14s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 53s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 51s
AI Code Review / AI Code Review (pull_request) Successful in 1m37s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m23s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m22s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
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 / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m35s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m5s
CI/CD Pipeline / Deploy Production (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 / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 26s

Pull request closed

Sign in to join this conversation.