feat(ai-avatar): 渲染完成后自动保存成片记录到成片库 #1841

Merged
xiaoxia merged 4 commits from feat/auto-save-clip-on-render-complete into develop 2026-09-10 18:33:15 +08:00
Owner

背景

AI 数字人渲染任务完成后,需要自动将输出视频保存到成片库(GeneratedVideo),方便用户在成片库中查看和使用。

变更内容

ai_avatar_render_service.pyexecute_render 方法中,job.status = "completed" 之后添加自动创建成片记录的逻辑:

  • 复用现有模型:使用 GeneratedVideo 域对象和 SQLAlchemyGeneratedVideoRepository,不重复造轮子
  • 成片记录包含:视频URL、封面URL、时长、用户ID、项目ID
  • 来源追溯generation_params 中记录 source=ai_avatar_renderrender_job_id,方便后续排查
  • 容错处理:创建失败时仅打 warning 日志,不影响渲染任务标记为成功
  • 前置条件:仅在 job.output_video_url 有值时才创建记录

测试验证

  • AI 数字人渲染完成后,成片库中自动出现对应视频记录
  • 成片记录包含正确的视频URL、封面、时长等信息
  • 创建成片失败时,渲染任务仍正常标记为 completed
  • 无 output_video_url 的渲染任务不会创建成片记录
## 背景 AI 数字人渲染任务完成后,需要自动将输出视频保存到成片库(GeneratedVideo),方便用户在成片库中查看和使用。 ## 变更内容 在 `ai_avatar_render_service.py` 的 `execute_render` 方法中,`job.status = "completed"` 之后添加自动创建成片记录的逻辑: - **复用现有模型**:使用 `GeneratedVideo` 域对象和 `SQLAlchemyGeneratedVideoRepository`,不重复造轮子 - **成片记录包含**:视频URL、封面URL、时长、用户ID、项目ID - **来源追溯**:`generation_params` 中记录 `source=ai_avatar_render` 和 `render_job_id`,方便后续排查 - **容错处理**:创建失败时仅打 warning 日志,不影响渲染任务标记为成功 - **前置条件**:仅在 `job.output_video_url` 有值时才创建记录 ## 测试验证 - [ ] AI 数字人渲染完成后,成片库中自动出现对应视频记录 - [ ] 成片记录包含正确的视频URL、封面、时长等信息 - [ ] 创建成片失败时,渲染任务仍正常标记为 completed - [ ] 无 output_video_url 的渲染任务不会创建成片记录

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1841 | | 预览链接 | [https://pr-1841.preview.xiaoxiajianji.com](https://pr-1841.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 3 commits 2026-09-10 18:24:08 +08:00
- 在 execute_render 方法的 job.status=completed 之后,自动创建 GeneratedVideo 记录
- 复用现有 GeneratedVideo 模型和 SQLAlchemyGeneratedVideoRepository
- 成片记录包含:视频URL、封面URL、时长、用户ID、项目ID
- 生成参数中记录来源(render_job_id)以便追溯
- 创建失败时仅打 warning 日志,不影响渲染任务状态
test: 新增成片自动创建单元测试 + 修复 smart_cover mock
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
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 / 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 / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped 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 / PR Build API Image (pull_request) Successful in 23s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 25s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m0s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m16s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m23s
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Python (mypy + alembic) (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
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
ad580c1a4d
- 新增 test_execute_render_success_creates_clip_record:验证渲染完成后自动创建成片记录
- 新增 test_execute_render_clip_failure_does_not_affect_render:验证成片创建失败不影响渲染任务
- 修复 test_smart_cover_selects_best_frame_and_persists:补充 get_download_url mock
xiaoxia force-pushed feat/auto-save-clip-on-render-complete from ca9c752048 to ad580c1a4d 2026-09-10 18:24:08 +08:00 Compare
auto-approve-bot added 1 commit 2026-09-10 18:25:43 +08:00
style: auto-format with black + isort + prettier [skip ci-format-check]
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
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 / 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 / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped 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 / PR Build API Image (pull_request) Successful in 15s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 16s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m11s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m23s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m38s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 1m41s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 1m53s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m22s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 6m46s
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 skipped
AI Code Review / AI Code Review (pull_request) Successful in 6m54s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 4s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 3m59s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 9s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 26s
168fcce36e
xiaoxia merged commit af6772f1ba into develop 2026-09-10 18:33:15 +08:00

🗑️ 预览环境已清理

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

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

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