fix: 确认生成 API 改为复用 worker.generate_video 渲染路径
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 29s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Failing after 34s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 38s
CI/CD Pipeline / PR Build API Image (Backend) (pull_request) Successful in 1m21s
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / AI Code Review (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 Worker Image (Backend) (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
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Web Image (web-cache, infra/docker/web.Dockerfile, xiaoxia-saas-web, web, Web, 30) (pull_request) Failing after 932h59m20s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 932h59m47s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 932h59m22s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 932h59m48s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 932h59m49s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Failing after 932h59m50s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 932h59m50s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 932h59m51s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 933h32m46s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 933h33m12s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 933h33m14s

- 新增 ConfirmGenerationRequest schema 和 POST /tasks/{task_id}/confirm 端点
- 确认生成复用 worker.generate_video 完整渲染路径(不再走 edit_plan_generation.py)
- 默认分辨率 1080x1920(竖屏),支持自定义封面和标题
- 新增字段: is_preview, source_task_id, output_width, output_height, cover_url, custom_title
- 贯穿 Schema → Domain → Application → DB Model → Repository → Worker 全链路
- 更新 task_center.py 和 generation_tasks.py 的重试逻辑传递新字段
- Alembic 迁移 034: 为 generation_tasks 表添加 6 个新列
- 7 个单元测试覆盖确认生成的正常/异常流程
- 使用 getattr 带默认值确保向后兼容
This commit is contained in:
xiaoxia
2026-08-08 18:26:55 +08:00
parent 57cd3d92dd
commit f988a028fe
10 changed files with 625 additions and 9 deletions
@@ -27,6 +27,12 @@ def _to_domain(model: GenerationTaskModel) -> GenerationTask:
source_edit_plan_id=model.source_edit_plan_id or "",
asset_select_mode=model.asset_select_mode or "",
batch_id=model.batch_id or "",
is_preview=getattr(model, 'is_preview', True),
source_task_id=getattr(model, 'source_task_id', '') or "",
output_width=getattr(model, 'output_width', 1280) or 1280,
output_height=getattr(model, 'output_height', 720) or 720,
cover_url=getattr(model, 'cover_url', '') or "",
custom_title=getattr(model, 'custom_title', '') or "",
created_at=model.created_at,
)
@@ -56,6 +62,12 @@ class SQLAlchemyGenerationTaskRepository:
source_edit_plan_id=task.source_edit_plan_id or None,
asset_select_mode=task.asset_select_mode or "",
batch_id=task.batch_id or "",
is_preview=task.is_preview,
source_task_id=task.source_task_id or "",
output_width=task.output_width,
output_height=task.output_height,
cover_url=task.cover_url or "",
custom_title=task.custom_title or "",
created_at=task.created_at,
)
self.session.add(model)
@@ -129,5 +141,11 @@ class SQLAlchemyGenerationTaskRepository:
model.source_edit_plan_id = task.source_edit_plan_id or None
model.asset_select_mode = task.asset_select_mode or ""
model.batch_id = task.batch_id or ""
model.is_preview = task.is_preview
model.source_task_id = task.source_task_id or ""
model.output_width = task.output_width
model.output_height = task.output_height
model.cover_url = task.cover_url or ""
model.custom_title = task.custom_title or ""
self.session.commit()
return task
@@ -255,6 +255,12 @@ class GenerationTaskModel(Base):
source_edit_plan_id = Column(String(32), nullable=True, index=True)
asset_select_mode = Column(String(20), nullable=False, default="")
batch_id = Column(String(32), nullable=False, default="", index=True)
is_preview = Column(Boolean, nullable=False, default=True)
source_task_id = Column(String(32), nullable=False, default="", index=True)
output_width = Column(Integer, nullable=False, default=1280)
output_height = Column(Integer, nullable=False, default=720)
cover_url = Column(String(1000), nullable=False, default="")
custom_title = Column(String(500), nullable=False, default="")
extra_meta = Column("metadata", JSON, nullable=False, default=dict)
created_at = Column(DateTime, nullable=False, default=lambda: datetime.now(timezone.utc))