fix: 删除封面生成多余logger调用+增加source_edit_plan_id查找兜底 #1372

Merged
xiaoxia merged 3 commits from fix/cover-500-logger-and-source-plan-fallback into develop 2026-08-15 10:09:16 +08:00
Owner

修复内容

修复1: 删除多余 logger 调用

generation_cover.py 步骤2中存在 logger.info(plan_id, generation_task_id) — 没有格式化字符串,会导致 TypeError → 500 错误。

修复2: 新增 source_edit_plan_id 查找兜底

在步骤2(generation_task_id 查找)和步骤3(user+template 查找)之间,新增按 plan_id 作为 source_edit_plan_id 精确匹配关联的已完成预览任务。

修复3: 确认排序

list_by_source_edit_plan 已有 order_by(created_at.desc()),无需修改。

测试

  • 新增 4 个单元测试覆盖 source_edit_plan_id 兜底逻辑
  • 验证多余 logger 调用已删除
## 修复内容 ### 修复1: 删除多余 logger 调用 `generation_cover.py` 步骤2中存在 `logger.info(plan_id, generation_task_id)` — 没有格式化字符串,会导致 TypeError → 500 错误。 ### 修复2: 新增 source_edit_plan_id 查找兜底 在步骤2(generation_task_id 查找)和步骤3(user+template 查找)之间,新增按 `plan_id` 作为 `source_edit_plan_id` 精确匹配关联的已完成预览任务。 ### 修复3: 确认排序 `list_by_source_edit_plan` 已有 `order_by(created_at.desc())`,无需修改。 ## 测试 - 新增 4 个单元测试覆盖 source_edit_plan_id 兜底逻辑 - 验证多余 logger 调用已删除
xiaoxia added 1 commit 2026-08-15 09:41:02 +08:00
fix: 删除封面生成多余logger调用+增加source_edit_plan_id查找兜底
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 / Build Staging API 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 56s
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 / Validate - Migration (alembic) (pull_request) Successful in 1m26s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m26s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m29s
AI Code Review / AI Code Review (pull_request) Successful in 1m48s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m53s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 1m38s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m53s
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (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
74d536db15
修复1: 删除步骤2中多余的 logger.info(plan_id, generation_task_id)
        无格式化字符串的调用会导致 TypeError 500
修复2: 步骤2和步骤3之间新增 source_edit_plan_id 查找逻辑
        通过 plan_id 精确匹配关联的已完成预览任务
修复3: list_by_source_edit_plan 已有 order_by(created_at.desc()) 无需修改

新增4个单元测试覆盖新逻辑

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1372 | | 预览链接 | [https://pr-1372.preview.xiaoxiajianji.com](https://pr-1372.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot added 1 commit 2026-08-15 09:45:19 +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 / 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 48s
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 / Validate - Migration (alembic) (pull_request) Successful in 1m20s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m23s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m27s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m46s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 1m48s
AI Code Review / AI Code Review (pull_request) Successful in 3m6s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 3m12s
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
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m58s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m33s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m34s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m52s
CI/CD Pipeline / CI Gate (pull_request) Failing after 17s
8840672c16
auto-approve-bot approved these changes 2026-08-15 09:50:31 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-08-15 09:50:31 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
xiaoxia added 1 commit 2026-08-15 10:01:53 +08:00
test: 修复 generation_cover 测试 mock 路径
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 / 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 38s
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
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m23s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m25s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m30s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m45s
AI Code Review / AI Code Review (pull_request) Successful in 2m21s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 3m1s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 2m26s
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 / PR Build API Image (pull_request) Successful in 3m36s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m16s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m37s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m48s
CI/CD Pipeline / CI Gate (pull_request) Successful in 13s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 54s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 57s
a5f34b9a47
- run_generate_cover 需要 patch packages.shared.ai_service 而非 route 模块
  (因为代码使用函数内 inline import)
- 补充 test_step25_skips 和 test_step25_exception 缺失的 run_generate_cover mock
Collaborator

代码审查结果 - PR #1372

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

💡 建议(2个可选)

  1. apps/api/app/api/routes/generation_cover.py 第125-126行:循环内重复创建对象。建议将 video_repouse_case 的实例化移至 for 循环外部。虽然逻辑上 break 会提前终止,但在循环中重复创建对象属于不必要的开销,且不符合最佳实践。
  2. tests/unit/test_generation_cover.py 第239行:测试用例依赖源码字符串匹配。使用 inspect.getsource 并硬编码缩进和换行符来检查代码,极易因代码格式化工具(如 Black、Ruff)的运行或微小的格式调整导致测试失败,建议改为验证行为或使用更鲁棒的检查方式。

格式检查通过 | 逻辑审查通过 | ⚠️ 建议关注性能


🤖 由 AI 代码审查机器人自动生成 | 2026-08-15 02:04:12 | 模型:

## 代码审查结果 - PR #1372 ### ⚠️ 问题(0个需要修改) ### 💡 建议(2个可选) 1. **apps/api/app/api/routes/generation_cover.py 第125-126行**:循环内重复创建对象。建议将 `video_repo` 和 `use_case` 的实例化移至 `for` 循环外部。虽然逻辑上 `break` 会提前终止,但在循环中重复创建对象属于不必要的开销,且不符合最佳实践。 2. **tests/unit/test_generation_cover.py 第239行**:测试用例依赖源码字符串匹配。使用 `inspect.getsource` 并硬编码缩进和换行符来检查代码,极易因代码格式化工具(如 Black、Ruff)的运行或微小的格式调整导致测试失败,建议改为验证行为或使用更鲁棒的检查方式。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-15 02:04:12 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit 206d517a91 into develop 2026-08-15 10:09:16 +08:00

🗑️ 预览环境已清理

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

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

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