test(wave186): subtitle 字幕时间轴模型 +52测 #1147

Merged
xiaoxia merged 2 commits from test/wave186-subtitle into develop 2026-07-30 00:23:53 +08:00
Owner

wave186: subtitle 字幕时间轴模型单测

  • 模块:packages/domain/subtitle.py
  • 新增测试:52个
  • 覆盖:
    • SubtitleWord 词级单元(duration)
    • SubtitleSegment 片段(duration/char_count/words)
    • SubtitleTimeline 时间轴基础属性
    • merge_short_segments 合并过短片段(12个场景)
    • split_long_segments 拆分过长片段(12个场景)
    • _split_text_by_punctuation 标点智能拆分
    • _merge_segments 静态合并方法
    • 合并+拆分端到端验证
  • 本地验证:ruff + black + pytest 52 passed
## wave186: subtitle 字幕时间轴模型单测 - 模块:packages/domain/subtitle.py - 新增测试:52个 - 覆盖: - SubtitleWord 词级单元(duration) - SubtitleSegment 片段(duration/char_count/words) - SubtitleTimeline 时间轴基础属性 - merge_short_segments 合并过短片段(12个场景) - split_long_segments 拆分过长片段(12个场景) - _split_text_by_punctuation 标点智能拆分 - _merge_segments 静态合并方法 - 合并+拆分端到端验证 - 本地验证:ruff + black + pytest 52 passed
xiaoxia added 1 commit 2026-07-29 18:41:26 +08:00
test(wave186): subtitle 字幕时间轴模型 +52测
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 20s
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
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m2s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m35s
AI Code Review / AI Code Review (pull_request) Successful in 1m31s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m33s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m49s
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 Lint (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 / PR Build Web Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker 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
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
57c59cb112

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1147 | | 预览链接 | [https://pr-1147.preview.xiaoxiajianji.com](https://pr-1147.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot added 1 commit 2026-07-29 18:49:55 +08:00
style: auto-format with black + isort + prettier [skip ci-format-check]
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 / Check if frontend-only change (pull_request) Successful in 44s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m36s
AI Code Review / AI Code Review (pull_request) Successful in 1m28s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m35s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 49s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m10s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m28s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m28s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
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 / PR Build API Image (pull_request) Successful in 3m5s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m6s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 4m14s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m52s
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 / 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 / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Successful in 22s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
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 40s
9603ce2b7e
Collaborator

【阻塞级判定】

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

📊 审查概览

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

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

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

  1. [tests/unit/domain/test_subtitle.py: 417] 断言条件过于宽松
    • 具体内容:在 test_split_with_words 方法中,使用 assert total_words <= len(words) + 1 进行校验。如果 split_long_segments 的实现逻辑在拆分过程中丢失了所有 words 数据(仅拆分了 text 而未正确处理 words 列表),该断言依然会通过(0 <= 21)。建议改为严格相等断言 assert total_words == len(words),以确保拆分操作完整保留了词级时间轴信息,防止潜在的数据丢失 bug。

良好实践

  • 边界条件覆盖充分:测试用例涵盖了空列表、负时长(start > end)、零时长等边界情况,验证了模型的健壮性。
  • 关注副作用:包含 test_does_not_mutate_original 测试,验证了方法调用不会修改原始对象,符合不可变性设计原则。
  • 浮点数精度处理:在 test_split_time_proportional 中使用了 abs(...) < 0.01 进行时间比较,避免了浮点数精度问题导致的测试失败。
  • 业务逻辑注释清晰:在复杂的合并逻辑测试中(如 test_long_segment_stays_alone),通过注释详细说明了预期的合并策略,便于理解业务意图。

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

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:通过 - 建议级问题数量:1 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 1. **[tests/unit/domain/test_subtitle.py: 417] 断言条件过于宽松** - 具体内容:在 `test_split_with_words` 方法中,使用 `assert total_words <= len(words) + 1` 进行校验。如果 `split_long_segments` 的实现逻辑在拆分过程中丢失了所有 `words` 数据(仅拆分了 text 而未正确处理 words 列表),该断言依然会通过(0 <= 21)。建议改为严格相等断言 `assert total_words == len(words)`,以确保拆分操作完整保留了词级时间轴信息,防止潜在的数据丢失 bug。 ### ✅ 良好实践 - **边界条件覆盖充分**:测试用例涵盖了空列表、负时长(start `>` end)、零时长等边界情况,验证了模型的健壮性。 - **关注副作用**:包含 `test_does_not_mutate_original` 测试,验证了方法调用不会修改原始对象,符合不可变性设计原则。 - **浮点数精度处理**:在 `test_split_time_proportional` 中使用了 `abs(...) < 0.01` 进行时间比较,避免了浮点数精度问题导致的测试失败。 - **业务逻辑注释清晰**:在复杂的合并逻辑测试中(如 `test_long_segment_stays_alone`),通过注释详细说明了预期的合并策略,便于理解业务意图。 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-29 10:59:00 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit be885eb8f0 into develop 2026-07-30 00:23:53 +08:00

🗑️ 预览环境已清理

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

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

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