fix: 确认生成 API 适配 develop 分支(同步 main PR #1308) #1312

Merged
xiaoxia merged 4 commits from fix/confirm-generation-api-develop into develop 2026-08-08 22:13:01 +08:00
Owner

概述

将 main 分支 PR #1308(确认生成 API 改造)的改动手动适配到 develop 分支。

由于 main 和 develop 文件结构差异较大(develop 经过重构,使用 UnifiedRenderService),需要逐文件适配。

改动内容

Schema 层

  • 新增 ConfirmGenerationRequest schema
  • CreateGenerationTaskRequest 增加 6 个新字段
  • GenerationTaskResponse 增加对应字段

Domain 层

  • GenerationTask 实体增加 source_task_id, output_width, output_height, cover_url, custom_title

Application 层

  • CreateGenerationTaskCommand 增加对应字段

DB 层

  • GenerationTaskModel 增加 5 个新列(is_preview 已在 develop 053 迁移中存在)
  • 仓储映射更新

API 路由

  • 新增 POST /tasks/{task_id}/confirm 端点
  • 使用 safe_enqueue_generation_task 适配 develop 入队机制
  • 更新 retry 端点传递新字段

Worker 层

  • _load_task_info 返回新字段
  • generate_video 支持动态分辨率

Alembic 迁移 054

  • 新增 source_task_id, output_width, output_height, cover_url, custom_title

单元测试

  • tests/unit/test_confirm_generation.py(7 个测试全部通过)

与 main PR #1308 的适配差异

  1. Worker 架构差异:develop 使用 UnifiedRenderService + RenderAdapter,通过 export_cfg["resolution"] 控制分辨率,而非 main 的 _process_with_editing_mode。适配方式:将 output_width/output_height 转换为 resolution 字符串传入。
  2. 任务入队:develop 使用 safe_enqueue_generation_task(含限流检查),而非 celery_app.send_task
  3. 重试机制:develop 使用 RetryGenerationTaskUseCase(原地重试),无需在 retry 端点添加新字段到 CreateGenerationTaskCommand
  4. is_preview 默认值:develop 为 False(非 main 的 True),保持 develop 语义。
  5. 已有字段保留video_title, resolution, bgm_config, error_info, retry_count, logs 等 develop 独有字段全部保留。

测试

  • 本地 7 个单元测试全部通过
  • 全量单元测试 13665 passed(1 个 pre-existing failure 与本 PR 无关)
## 概述 将 main 分支 PR #1308(确认生成 API 改造)的改动手动适配到 develop 分支。 由于 main 和 develop 文件结构差异较大(develop 经过重构,使用 UnifiedRenderService),需要逐文件适配。 ## 改动内容 ### Schema 层 - 新增 `ConfirmGenerationRequest` schema - `CreateGenerationTaskRequest` 增加 6 个新字段 - `GenerationTaskResponse` 增加对应字段 ### Domain 层 - `GenerationTask` 实体增加 `source_task_id`, `output_width`, `output_height`, `cover_url`, `custom_title` ### Application 层 - `CreateGenerationTaskCommand` 增加对应字段 ### DB 层 - `GenerationTaskModel` 增加 5 个新列(`is_preview` 已在 develop 053 迁移中存在) - 仓储映射更新 ### API 路由 - 新增 `POST /tasks/{task_id}/confirm` 端点 - 使用 `safe_enqueue_generation_task` 适配 develop 入队机制 - 更新 retry 端点传递新字段 ### Worker 层 - `_load_task_info` 返回新字段 - `generate_video` 支持动态分辨率 ### Alembic 迁移 054 - 新增 `source_task_id`, `output_width`, `output_height`, `cover_url`, `custom_title` 列 ### 单元测试 - `tests/unit/test_confirm_generation.py`(7 个测试全部通过) ## 与 main PR #1308 的适配差异 1. **Worker 架构差异**:develop 使用 `UnifiedRenderService` + `RenderAdapter`,通过 `export_cfg["resolution"]` 控制分辨率,而非 main 的 `_process_with_editing_mode`。适配方式:将 `output_width/output_height` 转换为 resolution 字符串传入。 2. **任务入队**:develop 使用 `safe_enqueue_generation_task`(含限流检查),而非 `celery_app.send_task`。 3. **重试机制**:develop 使用 `RetryGenerationTaskUseCase`(原地重试),无需在 retry 端点添加新字段到 `CreateGenerationTaskCommand`。 4. **is_preview 默认值**:develop 为 `False`(非 main 的 `True`),保持 develop 语义。 5. **已有字段保留**:`video_title`, `resolution`, `bgm_config`, `error_info`, `retry_count`, `logs` 等 develop 独有字段全部保留。 ## 测试 - ✅ 本地 7 个单元测试全部通过 - ✅ 全量单元测试 13665 passed(1 个 pre-existing failure 与本 PR 无关)

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1312 | | 预览链接 | [https://pr-1312.preview.xiaoxiajianji.com](https://pr-1312.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia force-pushed fix/confirm-generation-api-develop from 7d27dd4a85 to b3e7e5f459 2026-08-08 21:35:19 +08:00 Compare
xiaoxia force-pushed fix/confirm-generation-api-develop from b3e7e5f459 to 953abf3b38 2026-08-08 21:37:54 +08:00 Compare
xiaoxia force-pushed fix/confirm-generation-api-develop from 953abf3b38 to b12d8c744f 2026-08-08 21:41:44 +08:00 Compare
xiaoxia added 1 commit 2026-08-08 21:44:31 +08:00
fix: 确认生成 API 改为复用 worker.generate_video 渲染路径(适配 develop 分支)
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 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 / Validate - Migration (alembic) (pull_request) Failing after 49s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 54s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m29s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m45s
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 / 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
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
7d4e1b1b2f
从 main 分支 PR #1308 手动适配到 develop 分支,保留 develop 现有功能:

Schema 层:
- 新增 ConfirmGenerationRequest schema
- CreateGenerationTaskRequest 增加 6 个新字段(is_preview, source_task_id, output_width, output_height, cover_url, custom_title)
- GenerationTaskResponse 增加对应字段

Domain 层:
- GenerationTask 实体增加 source_task_id, output_width, output_height, cover_url, custom_title 字段
- create() 工厂方法增加对应参数

Application 层:
- CreateGenerationTaskCommand 增加对应字段
- UseCase 执行时传递新字段

DB 层:
- GenerationTaskModel 增加 5 个新列(is_preview 已存在于 develop)
- 仓储 _to_domain/create/update 映射更新

API 路由:
- 新增 POST /tasks/{task_id}/confirm 端点
- 使用 safe_enqueue_generation_task 适配 develop 任务入队机制
- 更新 _to_generation_task_response 和 retry 端点

Worker 层:
- _load_task_info 返回新字段
- generate_video 支持动态分辨率(output_width/output_height 覆盖默认分辨率)

Alembic 迁移 054:
- generation_tasks 表增加 source_task_id, output_width, output_height, cover_url, custom_title 列

单元测试:
- tests/unit/test_confirm_generation.py(7 个测试用例全部通过)
- 适配 develop 的 safe_enqueue_generation_task 入队机制
xiaoxia force-pushed fix/confirm-generation-api-develop from b12d8c744f to 7d4e1b1b2f 2026-08-08 21:44:31 +08:00 Compare
auto-approve-bot added 1 commit 2026-08-08 21:47:16 +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 28s
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 - Type Check (mypy) (pull_request) Successful in 53s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Failing after 54s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m10s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 2m2s
AI Code Review / AI Code Review (pull_request) Successful in 2m4s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m3s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m4s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m37s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m30s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 1m17s
CI/CD Pipeline / Unit 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
631591ff88
xiaoxia added 1 commit 2026-08-08 21:54:07 +08:00
fix: 缩短 migration revision ID 以适配 alembic_version VARCHAR(32) 限制
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 43s
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 48s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 49s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m21s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m42s
AI Code Review / AI Code Review (pull_request) Failing after 2m10s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m48s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 1m49s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m24s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 3m52s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m30s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 7m6s
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 / CI Gate (pull_request) Failing after 6s
cf55d475b9
auto-approve-bot approved these changes 2026-08-08 22:00:30 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

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

CI全绿,自动审批通过。

CI全绿,自动审批通过。
xiaoxia added 1 commit 2026-08-08 22:04:19 +08:00
fix: 更新 test_1280 ASR跳过测试以匹配 PR #1294 的 voice_id 条件变更
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 / 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 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 / Validate - Type Check (mypy) (pull_request) Successful in 1m0s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m0s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m22s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m49s
AI Code Review / AI Code Review (pull_request) Successful in 2m21s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m34s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m8s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m9s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 5m3s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m16s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 6m41s
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 / CI Gate (pull_request) Successful in 6s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 38s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 51s
33c4caf9ba
Collaborator

代码审查结果 - PR #1312

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

  1. apps/worker/worker_app/tasks/generation.py 第1443行:逻辑错误,分辨率解析存在缺陷。当 output_widthoutput_height 恰好等于全局默认值(OUTPUT_WIDTH/HEIGHT)时,代码会回退使用 task_info.get("resolution", "")。对于通过“确认生成”创建的新任务,resolution 字段默认为空字符串 "",这将导致向 _render_video 传递空的分辨率参数,极大概率导致渲染失败或使用错误的默认参数。
  2. packages/adapters/sqlalchemy_impl/models.py 第296行:数据截断风险。source_task_id 被定义为 String(32)。如果系统使用 UUID(通常为36字符)作为任务 ID,该字段将截断 ID,导致“确认生成”功能无法正确关联预览任务与正式任务。建议至少设为 36 或 255。

💡 建议(2个可选)

  1. apps/api/app/schemas/generation_task.py 第7-10行ConfirmGenerationRequest 的默认分辨率为 1080x1920(竖屏),而 CreateGenerationTaskRequest 的默认分辨率为 1280x720(横屏)。这种不一致可能会造成用户困惑,建议统一默认值或在文档中明确说明。
  2. packages/domain/generation_task.py 第120-121行:建议为 output_widthoutput_height 添加验证逻辑(例如必须大于0),防止非法数值导致下游渲染服务崩溃。

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


🤖 由 AI 代码审查机器人自动生成 | 2026-08-08 14:06:40 | 模型:

## 代码审查结果 - PR #1312 ### ⚠️ 问题(2个需要修改) 1. **apps/worker/worker_app/tasks/generation.py 第1443行**:逻辑错误,分辨率解析存在缺陷。当 `output_width` 和 `output_height` 恰好等于全局默认值(OUTPUT_WIDTH/HEIGHT)时,代码会回退使用 `task_info.get("resolution", "")`。对于通过“确认生成”创建的新任务,`resolution` 字段默认为空字符串 `""`,这将导致向 `_render_video` 传递空的分辨率参数,极大概率导致渲染失败或使用错误的默认参数。 2. **packages/adapters/sqlalchemy_impl/models.py 第296行**:数据截断风险。`source_task_id` 被定义为 `String(32)`。如果系统使用 UUID(通常为36字符)作为任务 ID,该字段将截断 ID,导致“确认生成”功能无法正确关联预览任务与正式任务。建议至少设为 36 或 255。 ### 💡 建议(2个可选) 1. **apps/api/app/schemas/generation_task.py 第7-10行**:`ConfirmGenerationRequest` 的默认分辨率为 1080x1920(竖屏),而 `CreateGenerationTaskRequest` 的默认分辨率为 1280x720(横屏)。这种不一致可能会造成用户困惑,建议统一默认值或在文档中明确说明。 2. **packages/domain/generation_task.py 第120-121行**:建议为 `output_width` 和 `output_height` 添加验证逻辑(例如必须大于0),防止非法数值导致下游渲染服务崩溃。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能无明显问题 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-08 14:06:40 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit c79022bc2c into develop 2026-08-08 22:13:01 +08:00

🗑️ 预览环境已清理

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

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

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