fix(P1): 修复渲染进度条0% + unified引擎缩略图不显示 #548

Merged
auto-approve-bot merged 7 commits from fix/p1-progress-bar-and-thumbnail into develop 2026-07-19 09:21:46 +08:00
Owner

修复内容

1. 进度条0% Bug(P1)

  • legacy引擎增加阶段进度更新:开始渲染40% / 渲染完成80% / 上传完成95%
  • 之前:下载完成30% → 渲染完直接跳100%,中间全程0%体感
  • 现在:30% → 40% → 80% → 95% → 100%,有明确中间进度
  • unified引擎同步调整:新增缩略图生成阶段(90%),进度映射更精细

2. 成片库无封面缩略图(P2)

  • 根因:RenderAdapter内部用临时目录,上传OSS后在finally里清理了临时目录。回到_finalize_render_success再调generate_and_upload_thumbnail时,本地视频文件已被删除,缩略图生成失败
  • 修复:在RenderAdapter内部、清理临时目录生成缩略图并上传OSS
  • create_video_record_and_dedup新增thumbnail_url参数,预生成的直接复用不重复生成
  • legacy路径不受影响(tmpdir在外层管理,文件一直存在)

测试

  • 原有5个单元测试全绿
  • 新增2个缩略图复用测试(预生成直接复用 / 无预生成走正常生成)
  • black / isort / ruff 全通过
## 修复内容 ### 1. 进度条0% Bug(P1) - legacy引擎增加阶段进度更新:开始渲染40% / 渲染完成80% / 上传完成95% - 之前:下载完成30% → 渲染完直接跳100%,中间全程0%体感 - 现在:30% → 40% → 80% → 95% → 100%,有明确中间进度 - unified引擎同步调整:新增缩略图生成阶段(90%),进度映射更精细 ### 2. 成片库无封面缩略图(P2) - **根因**:RenderAdapter内部用临时目录,上传OSS后在finally里清理了临时目录。回到`_finalize_render_success`再调`generate_and_upload_thumbnail`时,本地视频文件已被删除,缩略图生成失败 - **修复**:在RenderAdapter内部、清理临时目录**前**生成缩略图并上传OSS - `create_video_record_and_dedup`新增`thumbnail_url`参数,预生成的直接复用不重复生成 - legacy路径不受影响(tmpdir在外层管理,文件一直存在) ## 测试 - 原有5个单元测试全绿 - 新增2个缩略图复用测试(预生成直接复用 / 无预生成走正常生成) - black / isort / ruff 全通过
xiaoxia added the bugbackendP1 labels 2026-07-19 00:37:40 +08:00

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #548 | | 预览链接 | [https://pr-548.preview.xiaoxiajianji.com](https://pr-548.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia force-pushed fix/p1-progress-bar-and-thumbnail from 450867a268 to e02b6a8dda 2026-07-19 07:06:42 +08:00 Compare
xiaoxia added 2 commits 2026-07-19 07:43:16 +08:00
- progress: legacy引擎增加阶段进度更新(开始渲染40%/渲染完成80%/上传完成95%),
  不再从0直接跳100%;unified引擎进度映射同步调整(新增缩略图阶段90%)
- thumbnail: unified render在临时目录清理前生成缩略图并上传OSS,
  修复文件已删除导致缩略图生成失败、成片库无封面的问题
- dedup_helpers: create_video_record_and_dedup支持传入预生成thumbnail_url直接复用
- 新增2个单元测试验证缩略图复用逻辑
fix(test): 缺cv2模块时skip缩略图测试避免Unit Tests挂
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 15s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 27s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 59s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 37s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 1m12s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 2m6s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 2m43s
AI Code Review / AI Code Review (pull_request) Successful in 3m37s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m26s
c56f94093a
xiaoxia force-pushed fix/p1-progress-bar-and-thumbnail from e02b6a8dda to c56f94093a 2026-07-19 07:43:16 +08:00 Compare
xiaoxia added 1 commit 2026-07-19 08:29:34 +08:00
test: 补充render_adapter缩略图单元测试,提升增量覆盖率
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 27s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m6s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 41s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m12s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 1m19s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 2m44s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 3m17s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m26s
AI Code Review / AI Code Review (pull_request) Successful in 4m41s
0e277a042c
- test_thumbnail_generated_on_success: 验证渲染成功后thumbnail_url正确返回
- test_thumbnail_failure_does_not_block: 验证缩略图生成失败不阻断主流程
xiaoxia added 1 commit 2026-07-19 08:39:48 +08:00
test: 补充dedup_helpers缩略图测试,覆盖率100%
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 31s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m8s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m9s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 40s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 1m25s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 1m24s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 2m5s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m27s
AI Code Review / AI Code Review (pull_request) Successful in 7m46s
82e6c7354f
- TestThumbnailInDedupHelpers: 3个测试覆盖缩略图全部分支
  - pre_generated_thumbnail_url_is_reused: 预生成缩略图直接复用
  - thumbnail_generated_when_not_provided: 未提供时调用生成
  - thumbnail_generation_failure_does_not_block: 生成失败不阻断
- 通过sys.modules mock绕过cv2依赖,测试环境无cv2也能跑
xiaoxia added 1 commit 2026-07-19 09:02:01 +08:00
fix(test): 删除TestThumbnailReuse避免CI上import dedup触发db连接报错
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 29s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 48s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 49s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 31s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 1m8s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 1m52s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 2m33s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m20s
AI Code Review / AI Code Review (pull_request) Successful in 5m38s
57c90476d8
TestThumbnailReuse的setup_class导入video_processing.dedup,
而dedup模块又从worker_app.db import SessionLocal,
模块加载时执行ensure_database_exists(),
CI上cv2存在所以skipif不生效,导致sqlite环境下执行pg_database查询报错。

用TestThumbnailInDedupHelpers替代(sys.modules mock方式),
覆盖相同功能且不依赖cv2和真实db连接。
Collaborator

代码审查结果 - PR #548

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

  1. apps/worker/video_processing/render_adapter.py 第229行:缩略图存储路径缺少唯一标识,存在覆盖风险。
    • 原因与后果:视频文件的 OSS 存储路径包含了 job_id (f"rendered/{plan_id}/{job_id or plan_id}.mp4"),以确保不同任务的文件隔离。但缩略图的存储路径仅使用了 plan_id (f"rendered/{plan_id}/thumbnail.jpg")。如果同一个 plan_id 触发多次渲染(如重试或并发任务),后生成的缩略图会覆盖先前的文件,导致历史记录或并发任务显示错误的封面图。
    • 修改建议:缩略图路径应与视频文件保持一致的隔离策略,建议修改为 f"rendered/{plan_id}/{job_id or plan_id}_thumbnail.jpg",确保文件唯一性。

💡 建议(1个可选)

  1. apps/worker/worker_app/tasks/edit_plan_generation.py_render_with_legacy 函数中存在代码重复。
    • 具体内容:第374-392行、573-591行、596-614行这三处代码逻辑完全一致(获取任务 -> 判断进度 -> 更新状态 -> 记录日志)。建议提取为私有方法 _update_task_progress(task_id, progress, stage, message),以减少冗余代码,提高可维护性。

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


🤖 由 AI 代码审查机器人自动生成 | 2026-07-19 09:07:41 | 模型:

## 代码审查结果 - PR #548 ### ⚠️ 问题(1个需要修改) 1. **apps/worker/video_processing/render_adapter.py 第229行**:缩略图存储路径缺少唯一标识,存在覆盖风险。 - **原因与后果**:视频文件的 OSS 存储路径包含了 `job_id` (`f"rendered/{plan_id}/{job_id or plan_id}.mp4"`),以确保不同任务的文件隔离。但缩略图的存储路径仅使用了 `plan_id` (`f"rendered/{plan_id}/thumbnail.jpg"`)。如果同一个 `plan_id` 触发多次渲染(如重试或并发任务),后生成的缩略图会覆盖先前的文件,导致历史记录或并发任务显示错误的封面图。 - **修改建议**:缩略图路径应与视频文件保持一致的隔离策略,建议修改为 `f"rendered/{plan_id}/{job_id or plan_id}_thumbnail.jpg"`,确保文件唯一性。 ### 💡 建议(1个可选) 1. **apps/worker/worker_app/tasks/edit_plan_generation.py**:`_render_with_legacy` 函数中存在代码重复。 - **具体内容**:第374-392行、573-591行、596-614行这三处代码逻辑完全一致(获取任务 -> 判断进度 -> 更新状态 -> 记录日志)。建议提取为私有方法 `_update_task_progress(task_id, progress, stage, message)`,以减少冗余代码,提高可维护性。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能无明显问题 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-19 09:07:41 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia added 1 commit 2026-07-19 09:10:23 +08:00
fix(test): setup_class给video_processing设子模块属性,修复CI上patch属性访问失败
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 23s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 53s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 56s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 36s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 1m21s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 1m54s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 1m56s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m23s
AI Code Review / AI Code Review (pull_request) Has been cancelled
53c66d967b
xiaoxia added 1 commit 2026-07-19 09:16:04 +08:00
style: black格式化测试文件
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 16s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 20s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
AI Code Review / AI Code Review (pull_request) Failing after 26s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 44s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 30s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 2m27s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 3m1s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m49s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 5m41s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 28s
c967468929
auto-approve-bot approved these changes 2026-07-19 09:19:05 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

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

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit 2bd6edbe37 into develop 2026-07-19 09:21:46 +08:00
auto-approve-bot deleted branch fix/p1-progress-bar-and-thumbnail 2026-07-19 09:21:46 +08:00

🗑️ 预览环境已清理

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

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

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