fix: HEVC 转码条件解耦 + 缩略图函数补全 + extra_meta 字段 #1452

Merged
auto-approve-bot merged 6 commits from fix/ingest-hevc-condition-and-imports into develop 2026-08-20 21:41:01 +08:00
Owner

修复内容

Fix 1 — HEVC 转码条件(P0)

  • 文件:
  • 改动: HEVC 转码条件去掉 ,不再依赖缩略图提取是否成功

Fix 2 — 缩略图函数补全(P0)

  • 文件:
  • 改动: 补充 和 两个函数
  • 原因: 引用了这两个函数但不存在,导致 ImportError

Fix 3 — extra_meta 字段(P1)

  • 文件:
  • 改动: GenerationTask dataclass 添加 字段,与 ORM 模型对齐
  • mark_confirmed() 方法也增加 extra_meta 合并逻辑

Fix 4 — Code Quality

  • ruff check 已全绿,无 unused-import

测试

  • 49 个单元测试通过(test_ingest_hevc_transcode + test_generation_task)
  • 25 个单元测试通过(test_ingest_validation)
## 修复内容 ### Fix 1 — HEVC 转码条件(P0) - **文件**: - **改动**: HEVC 转码条件去掉 ,不再依赖缩略图提取是否成功 ### Fix 2 — 缩略图函数补全(P0) - **文件**: - **改动**: 补充 和 两个函数 - **原因**: 引用了这两个函数但不存在,导致 ImportError ### Fix 3 — extra_meta 字段(P1) - **文件**: - **改动**: GenerationTask dataclass 添加 字段,与 ORM 模型对齐 - mark_confirmed() 方法也增加 extra_meta 合并逻辑 ### Fix 4 — Code Quality - ruff check 已全绿,无 unused-import ## 测试 - 49 个单元测试通过(test_ingest_hevc_transcode + test_generation_task) - 25 个单元测试通过(test_ingest_validation)
xiaoxia added 1 commit 2026-08-20 16:47:13 +08:00
fix: HEVC 转码条件解耦 + 缩略图函数补全 + extra_meta 字段
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 / Deploy Staging (Watchtower auto-deploy) (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 / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 36s
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 Worker Image (pull_request) Successful in 29s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m45s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m11s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m56s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m41s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 3m10s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m26s
AI Code Review / AI Code Review (pull_request) Failing after 4m28s
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 / 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 / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
72d8e5ae74
1. ingest.py: HEVC 转码不再依赖 extract_success,两个功能解耦
2. thumbnail_generator.py: 补充 generate_and_upload_thumbnail 和
   extract_and_upload_cover_frames 两个函数,修复 render_adapter.py ImportError
3. generation_task.py: 添加 extra_meta 字段,与 ORM 模型对齐

Co-Authored-By: xiaoxia <xiaoxia@agent.com>

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1452 | | 预览链接 | [https://pr-1452.preview.xiaoxiajianji.com](https://pr-1452.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot added 1 commit 2026-08-20 16:52:28 +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 / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 36s
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 Worker Image (pull_request) Successful in 30s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m43s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m28s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m22s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m39s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 3m16s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m31s
AI Code Review / AI Code Review (pull_request) Successful in 6m58s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 7m12s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 9m58s
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 Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Failing after 7m42s
CI/CD Pipeline / CI Gate (pull_request) Failing after 6s
52e53d60e3
auto-approve-bot approved these changes 2026-08-20 17:05:30 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-08-20 17:05:30 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
xiaoxia added 1 commit 2026-08-20 19:20:54 +08:00
fix: OSS 上传/下载超时从 300s 提升到 900s
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 / Deploy Staging (Watchtower auto-deploy) (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 / Check if frontend-only change (pull_request) Successful in 40s
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 Worker Image (pull_request) Successful in 37s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m41s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m48s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m32s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m34s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m42s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m47s
AI Code Review / AI Code Review (pull_request) Failing after 6m5s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 8m22s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 11m41s
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 Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Failing after 5m39s
CI/CD Pipeline / CI Gate (pull_request) Failing after 6s
31203613c6
4K 视频文件大(200MB+),5 分钟超时不够用,改为 15 分钟。

Co-Authored-By: xiaoxia <xiaoxia@agent.com>
xiaoxia added 1 commit 2026-08-20 20:49:14 +08:00
test: 修复 create_asset 废弃后的测试用例
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 40s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 27s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m43s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m53s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m14s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m49s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 3m9s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m28s
AI Code Review / AI Code Review (pull_request) Successful in 4m26s
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 / 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 / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
6a275324f5
- test_asset_dedup: 补充 storage.get_url mock
- test_create_asset_optional_project_id: 删除(测试已废弃的端点)
- test_assets_api: 集成测试改为直接插入 repository,绕过 410 端点
  TestCreateAsset 改为验证 410 响应

全量测试:14095 passed,4 failed + 14 errors 均为 develop 预存问题

Co-Authored-By: xiaoxia <xiaoxia@agent.com>
auto-approve-bot added 1 commit 2026-08-20 20:54:45 +08:00
style: auto-format with black + isort + prettier [skip ci-format-check]
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 46s
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 Worker Image (pull_request) Successful in 24s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m44s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m48s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m24s
AI Code Review / AI Code Review (pull_request) Successful in 2m16s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m34s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m40s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m36s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 6m34s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 10m15s
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 Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 5m36s
CI/CD Pipeline / CI Gate (pull_request) Failing after 7s
6c8827c507
Collaborator

【阻塞级判定】

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

📊 审查概览

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

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

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

  1. [apps/worker/video_processing/thumbnail_generator.py: 173] 异常捕获过于宽泛

    • 具体内容:在 extract_and_upload_cover_frames 函数中使用了 except Exception as e。虽然对于生成“封面候选”列表的场景,部分失败不应中断整体流程是合理的,但捕获所有异常(包括 KeyboardInterrupt 或 SystemExit)通常是不推荐的。建议捕获更具体的异常(如 RuntimeError, IOError 等),或者在日志中增加 exc_info=True 以便排查问题。
  2. [tests/integration/test_assets_api.py: 267] 测试辅助函数的健壮性不一致

    • 具体内容:新增的 _direct_insert_asset 函数中使用了 app.dependency_overrides[get_asset_repository]() 直接获取依赖,如果 get_asset_repository 未在 overrides 中注册,会抛出 KeyError。而在同一文件中的 _create_test_assets 函数(第377行)使用了 .get(..., lambda: None) 并进行了判空处理。建议统一处理方式,增加防御性判断以提高测试代码的健壮性。

良好实践

  • 资源管理thumbnail_generator.py 中使用 tempfile.NamedTemporaryFile 配合 try...finally 确保了临时文件的清理,避免了磁盘空间泄漏。
  • 数据安全generation_task.py 中新增 extra_meta 字段时,使用了 field(default_factory=dict) 避免了可变默认参数的陷阱,并在 createupdate 方法中正确处理了 None 值和字典拷贝,防止了意外的引用共享。
  • 测试重构:针对已废弃的 API(create_asset 返回 410),测试代码及时进行了重构,引入 _direct_insert_asset 辅助函数,保持了测试套件的覆盖率和有效性。

格式检查通过 | 逻辑审查通过 | 性能无明显问题


🤖 由 AI 代码审查机器人自动生成 | 2026-08-20 12:57:00 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:通过 - 建议级问题数量:2 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 1. **[apps/worker/video_processing/thumbnail_generator.py: 173] 异常捕获过于宽泛** - 具体内容:在 `extract_and_upload_cover_frames` 函数中使用了 `except Exception as e`。虽然对于生成“封面候选”列表的场景,部分失败不应中断整体流程是合理的,但捕获所有异常(包括 KeyboardInterrupt 或 SystemExit)通常是不推荐的。建议捕获更具体的异常(如 `RuntimeError`, `IOError` 等),或者在日志中增加 `exc_info=True` 以便排查问题。 2. **[tests/integration/test_assets_api.py: 267] 测试辅助函数的健壮性不一致** - 具体内容:新增的 `_direct_insert_asset` 函数中使用了 `app.dependency_overrides[get_asset_repository]()` 直接获取依赖,如果 `get_asset_repository` 未在 overrides 中注册,会抛出 `KeyError`。而在同一文件中的 `_create_test_assets` 函数(第377行)使用了 `.get(..., lambda: None)` 并进行了判空处理。建议统一处理方式,增加防御性判断以提高测试代码的健壮性。 ### ✅ 良好实践 - **资源管理**:`thumbnail_generator.py` 中使用 `tempfile.NamedTemporaryFile` 配合 `try...finally` 确保了临时文件的清理,避免了磁盘空间泄漏。 - **数据安全**:`generation_task.py` 中新增 `extra_meta` 字段时,使用了 `field(default_factory=dict)` 避免了可变默认参数的陷阱,并在 `create` 和 `update` 方法中正确处理了 None 值和字典拷贝,防止了意外的引用共享。 - **测试重构**:针对已废弃的 API(create_asset 返回 410),测试代码及时进行了重构,引入 `_direct_insert_asset` 辅助函数,保持了测试套件的覆盖率和有效性。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能无明显问题 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-20 12:57:00 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia added 1 commit 2026-08-20 21:25:19 +08:00
test: add extra_meta unit tests for diff coverage
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (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 / Check if frontend-only change (pull_request) Successful in 46s
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 Worker Image (pull_request) Successful in 26s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m46s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m48s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m20s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m26s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m51s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m44s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 5m9s
AI Code Review / AI Code Review (pull_request) Successful in 6m56s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 8m42s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 5m2s
CI/CD Pipeline / CI Gate (pull_request) Successful in 7s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 57s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m19s
1744ad7c45
- test_create_with_extra_meta
- test_create_without_extra_meta_defaults_empty
- test_mark_confirmed_with_extra_meta
- test_mark_confirmed_without_extra_meta_preserves_existing

Covers generation_task.py lines 325-326 to meet 40% diff coverage gate.
auto-approve-bot merged commit 161c1a61b6 into develop 2026-08-20 21:41:01 +08:00
auto-approve-bot deleted branch fix/ingest-hevc-condition-and-imports 2026-08-20 21:41:01 +08:00

🗑️ 预览环境已清理

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

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

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