test(wave138): video_filter_builder domain 层 +71 单测 #1053

Closed
xiaoxia wants to merge 2 commits from test/wave138-video-filter-builder into develop
Owner

变更内容

packages/domain/video_filter_builder.py 新增 71 个单测,0 FFmpeg 依赖,纯逻辑快速验证。

覆盖范围

模块 数量
常量与数据结构 5
chain_filters 滤镜串联 5
has_audio 音频判断 6
build_clip_filter 单片段滤镜链 16
build_concat_filter 拼接 10
build_xfade_filter 转场 16
build_filter_complex 策略选择 8
合计 71

验证场景

  • 单片段滤镜顺序:scale → pad → format → fps → setpts → trim
  • 不同 clip_type 的音频标签(title/subtitle 无音频)
  • concat 模式:多片段时长叠加、音频归一化 + concat
  • xfade 模式:offset 计算、负偏移钳制、时长扣减重叠、5 种转场类型
  • 策略路由:单片段 / 全 cut / 有转场 → 对应不同构建路径
  • 边界:空列表、单片段、0 fps、负 duration 等

验证

  • pytest: 71 passed
  • black 格式化通过
## 变更内容 为 `packages/domain/video_filter_builder.py` 新增 71 个单测,0 FFmpeg 依赖,纯逻辑快速验证。 ### 覆盖范围 | 模块 | 数量 | |------|------| | 常量与数据结构 | 5 | | chain_filters 滤镜串联 | 5 | | has_audio 音频判断 | 6 | | build_clip_filter 单片段滤镜链 | 16 | | build_concat_filter 拼接 | 10 | | build_xfade_filter 转场 | 16 | | build_filter_complex 策略选择 | 8 | | **合计** | **71** | ### 验证场景 - 单片段滤镜顺序:scale → pad → format → fps → setpts → trim - 不同 clip_type 的音频标签(title/subtitle 无音频) - concat 模式:多片段时长叠加、音频归一化 + concat - xfade 模式:offset 计算、负偏移钳制、时长扣减重叠、5 种转场类型 - 策略路由:单片段 / 全 cut / 有转场 → 对应不同构建路径 - 边界:空列表、单片段、0 fps、负 duration 等 ### 验证 - pytest: 71 passed - black 格式化通过
xiaoxia added 1 commit 2026-07-28 10:06:33 +08:00
test(wave138): video_filter_builder domain 层 +71 单测
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 55s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m31s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m37s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m47s
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 / PR Build Worker Image (pull_request) Successful in 51s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m16s
CI/CD Pipeline / Validate - Code Quality (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 / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build API 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
AI Code Review / AI Code Review (pull_request) Has been cancelled
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m35s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Failing after 10m21s
dd3d97058a
为 domain/video_filter_builder.py 新增 71 个单测,0 FFmpeg 依赖:

- 常量与数据结构:5 个
- chain_filters 滤镜串联:5 个
- has_audio 音频判断:6 个
- build_clip_filter 单片段滤镜链:16 个
- build_concat_filter concat 滤镜:10 个
- build_xfade_filter xfade 转场:16 个
- build_filter_complex 策略选择:8 个

覆盖:scale/pad/format/fps/setpts/trim 各滤镜顺序校验、
转场 offset 计算、时长叠加、音频归一化、策略路由等。
auto-approve-bot added 1 commit 2026-07-28 10:09:53 +08:00
style: auto-format with black + isort + prettier [skip ci-format-check]
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1m10s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m30s
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 - Code Quality (pull_request) Failing after 1m54s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m6s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 45s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m1s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m24s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m13s
AI Code Review / AI Code Review (pull_request) Successful in 2m53s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 4m56s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 5m0s
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 / Unit Tests (pull_request) Successful in 3m21s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m55s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
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
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 47m14s
CI/CD Pipeline / CI Gate (pull_request) Successful in 12s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 20s
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
8520f9e932

🚀 预览环境已部署

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

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

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

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

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

【阻塞级判定】

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

📊 审查概览

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

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

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

良好实践

  1. 全面的边界条件覆盖:测试用例很好地覆盖了空列表、单元素、零值、负值(如 fps、duration)以及浮点数精度等边界情况,增强了代码的健壮性。
  2. 清晰的测试结构:使用了辅助函数(_make_chain, _mock_clip)来简化测试数据构造,使得测试逻辑更加清晰、易读。
  3. 精确的浮点数比较:在涉及时长计算的测试中使用了 abs(total - expected) < 0.001 的方式,避免了浮点数直接比较可能带来的精度问题。
  4. 测试隔离与分组:使用类对不同模块的测试进行分组(如 TestConstants, TestBuildClipFilter),结构清晰,便于维护。

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


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

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:通过 - 建议级问题数量:0 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 无 ### ✅ 良好实践 1. **全面的边界条件覆盖**:测试用例很好地覆盖了空列表、单元素、零值、负值(如 fps、duration)以及浮点数精度等边界情况,增强了代码的健壮性。 2. **清晰的测试结构**:使用了辅助函数(`_make_chain`, `_mock_clip`)来简化测试数据构造,使得测试逻辑更加清晰、易读。 3. **精确的浮点数比较**:在涉及时长计算的测试中使用了 `abs(total - expected) < 0.001` 的方式,避免了浮点数直接比较可能带来的精度问题。 4. **测试隔离与分组**:使用类对不同模块的测试进行分组(如 `TestConstants`, `TestBuildClipFilter`),结构清晰,便于维护。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-28 02:16:37 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia closed this pull request 2026-07-28 10:33:24 +08:00

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #1053 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Some checks are pending
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1m10s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m30s
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 - Code Quality (pull_request) Failing after 1m54s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m6s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 45s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m1s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m24s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m13s
AI Code Review / AI Code Review (pull_request) Successful in 2m53s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 4m56s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 5m0s
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 / Unit Tests (pull_request) Successful in 3m21s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m55s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
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
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 47m14s
CI/CD Pipeline / CI Gate (pull_request) Successful in 12s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 20s
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped

Pull request closed

Sign in to join this conversation.