0f645b01e8
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 42s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m4s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m47s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m10s
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m15s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m16s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m14s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m59s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m36s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 6m54s
AI Code Review / AI Code Review (pull_request) Successful in 6m55s
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
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 / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 29s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 38s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m1s
根因:前端调用 createGenerationTask 创建全新渲染任务,后端 worker 因 source_edit_plan_id 为空进入 failed 分支但未更新 DB 状态, 导致前端轮询永远停在 running(卡 10%)。 修复策略: - 主路径:Step6 封面流程创建预览时,将 previewTaskId 暴露给父组件; Step7 确认生成优先调用 confirmGeneration(previewTaskId) 复用预览 产物,后端会检查预览是否完成、分辨率是否一致,满足条件直接复用秒出。 - Fallback:无预览任务或 confirmGeneration 失败时,退回 createGenerationTask 并传递 source_edit_plan_id。 - 防过期:素材、模板、时长、比例、标题样式或 BGM 任一变化时 自动清除 previewTaskId,避免复用过期预览。 - 防竞态:useStep6Cover 用 useRef 指纹校验,参数变化后旧任务的 回调不会污染新状态。 - generateCount > 1 时跳过 confirmGeneration,直接走批量创建。 改动文件(7 个): - useGenerateVideo.ts:导入 confirmGeneration,新增双路径逻辑 - useGenerateFormState/index.ts:新增 previewTaskId 共享状态 - useStep6Cover.ts:createPreview 后回调 onPreviewTaskCreated,带指纹校验 - Step6CoverSettings.tsx / GenerateStepContent.tsx:透传回调 - GeneratePage.tsx:useEffect 监听参数变化自动清除 previewTaskId - generate-video/types.ts:UseGenerateVideoProps 新增 previewTaskId