feat(viral-video): v1.5 三步分步流水线 analyze-images/generate-copy/confirm-copy #2117

Merged
auto-approve-bot merged 1 commits from fix/2115-three-stage-pipeline into develop 2026-10-01 11:57:39 +08:00
Owner

背景

前端 STEP1 UI 重做(#2041)要求后端支持三步独立操作:

  1. 图片分析:上传图片后立即做 VLM 分析,拿到结构化商品信息展示给用户
  2. 文案生成:用户填完营销参数后跑 意图→文案→分镜→审核,暂停给用户编辑文案
  3. 视频渲染:用户确认/编辑文案后跑 TTS→渲染→上传

方案

最小改动:新增两个暂停状态 + 三个 Celery task + 三个端点,旧 /generate 与 /confirm-intent 完全保留兼容。

状态机

pending → running → image_analyzed → running → copy_ready → running → completed
              ↘ wait_user_confirm → running → completed (旧路径保留)
任意阶段 ↘ failed; 任意非终态 ↘ cancelled

新增端点

  • POST /api/v1/viral-video/analyze-images — 阶段1:创建 job 并只跑 step1+1.5
  • POST /api/v1/viral-video/{id}/generate-copy — 阶段2:写营销参数 + 跑 step2-5
  • POST /api/v1/viral-video/{id}/confirm-copy — 阶段3:确认/编辑文案 + 跑 step6-9

其他

  • GET /{id} 响应新增 image_analysis / storyboard / generated_copy_text 字段
  • 幂等迁移:启动时 ALTER TABLE 补 storyboard + generated_copy_text 两列(create_all 不补已有表)
  • WS 进度事件新增 viral_video:image_analyzed / viral_video:copy_ready
  • 前端 TS types + api client 同步新增类型与三个调用函数

测试

  • 新增 5 个路由单测(3 个新端点,每个正常派发+错误状态 409)
  • viral 相关 93 个单测全通过
  • 旧 /generate + /confirm-intent 路径单测保持通过(P0-3 等回归用例未改语义)
## 背景 前端 STEP1 UI 重做(#2041)要求后端支持三步独立操作: 1. 图片分析:上传图片后立即做 VLM 分析,拿到结构化商品信息展示给用户 2. 文案生成:用户填完营销参数后跑 意图→文案→分镜→审核,暂停给用户编辑文案 3. 视频渲染:用户确认/编辑文案后跑 TTS→渲染→上传 ## 方案 最小改动:新增两个暂停状态 + 三个 Celery task + 三个端点,旧 /generate 与 /confirm-intent 完全保留兼容。 ### 状态机 ``` pending → running → image_analyzed → running → copy_ready → running → completed ↘ wait_user_confirm → running → completed (旧路径保留) 任意阶段 ↘ failed; 任意非终态 ↘ cancelled ``` ### 新增端点 - `POST /api/v1/viral-video/analyze-images` — 阶段1:创建 job 并只跑 step1+1.5 - `POST /api/v1/viral-video/{id}/generate-copy` — 阶段2:写营销参数 + 跑 step2-5 - `POST /api/v1/viral-video/{id}/confirm-copy` — 阶段3:确认/编辑文案 + 跑 step6-9 ### 其他 - `GET /{id}` 响应新增 `image_analysis` / `storyboard` / `generated_copy_text` 字段 - 幂等迁移:启动时 ALTER TABLE 补 storyboard + generated_copy_text 两列(create_all 不补已有表) - WS 进度事件新增 viral_video:image_analyzed / viral_video:copy_ready - 前端 TS types + api client 同步新增类型与三个调用函数 ## 测试 - 新增 5 个路由单测(3 个新端点,每个正常派发+错误状态 409) - viral 相关 93 个单测全通过 - 旧 /generate + /confirm-intent 路径单测保持通过(P0-3 等回归用例未改语义)

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #2117 | | 预览链接 | [https://pr-2117.preview.xiaoxiajianji.com](https://pr-2117.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 1 commit 2026-10-01 11:38:50 +08:00
feat(viral-video): #2115 三阶段分步 pipeline(图片分析/生成文案/生成视频拆分)
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 4s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m26s
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 / PR Build Web Image (pull_request) Successful in 1m16s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m27s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 1m1s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m34s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m20s
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 / PR Build API Image (pull_request) Successful in 3m51s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 5m41s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 4m58s
AI Code Review / AI Code Review (pull_request) Successful in 6m53s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 5m58s
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 / Unit Tests (pull_request) Successful in 15m37s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 16m28s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 2s
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
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 10m49s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 29s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m15s
3976f21c31
- 新增状态 IMAGE_ANALYZED / COPY_GENERATED,最小改动状态机:PENDING→RUNNING→IMAGE_ANALYZED→RUNNING→COPY_GENERATED→RUNNING→COMPLETED
- 新增三个 Celery task:run_viral_video_analyze / run_viral_video_generate_copy / run_viral_video_render
- 共享 _run_render_pipeline 渲染函数,兼容旧 /generate + /confirm-intent 路径(storyboard 缺失时自动兜底重算)
- 新增三个端点:
  * POST /viral-video/analyze-images  阶段1:图片VLM分析+可选参考视频风格分析
  * POST /viral-video/{id}/generate-copy  阶段2:意图解析→文案融合→分镜→合规审核
  * POST /viral-video/{id}/confirm-copy  阶段3:TTS→渲染→上传
- GET /{id} 返回 image_analysis / storyboard / generated_copy_text / copy_result(对齐前端 CopyResult 结构)
- 幂等 ALTER TABLE 补列:storyboard(JSON) / generated_copy_text(TEXT),无 Alembic 环境下安全执行
- WS 新增 viral_video:image_analyzed / viral_video:copy_generated 事件类型
- 前端类型/API 客户端:新增 AnalyzeImagesRequest/GenerateCopyRequest/ConfirmCopyRequest/StoryboardSegment
  及 analyzeViralImages/generateViralCopy/confirmViralCopy 三个真实 API 函数,保留既有 mock 函数
- 状态值对齐前端 PR #2116 命名 copy_generated(非 copy_ready)
- 93 个 viral 相关单测全通过;musetalk 2 个超时用例失败为历史遗留与本 PR 无关
xiaoxia force-pushed fix/2115-three-stage-pipeline from 597a7aad6e to 3976f21c31 2026-10-01 11:38:50 +08:00 Compare
auto-approve-bot merged commit d390d7c310 into develop 2026-10-01 11:57:39 +08:00
auto-approve-bot deleted branch fix/2115-three-stage-pipeline 2026-10-01 11:57:43 +08:00

🗑️ 预览环境已清理

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

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

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