feat(viral-video): 三步独立流程接入真实后端API(替换mock,对接analyze-images/generate-copy/confirm-copy) #2122
Reference in New Issue
Block a user
Delete Branch "feat/2041-real-3step-api"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
改动:三步独立流程接入真实后端 API(替换前端 mock)
后端 PR#2117(d390d7c)已在 staging 上线三个新端点,前端把之前的 mockImageAnalysis/mockGenerateCopy 替换成真实调用:
1. STEP1「🔍 分析图片」→
POST /api/v1/viral-video/analyze-imagesimages(OSS URL[],必填)、reference_video_url?、style_template_id?、style_strength?ViralVideoJob,状态=running,完成后 status=image_analyzed,job.image_analysis.products[]包含 category/name/brand/colors/material_or_texture/key_features/visual_style/scene/target_audience_hint/text_on_imagejobId并启动轮询(之前轮询只在视频生成阶段启用,现在从 STEP1 开始贯穿三步);轮询到image_analyzed时自动把job.image_analysis同步进imageAnalysisstate 并切到step1_donemockImageAnalysis客户端假数据调用2. STEP2「✍️ 生成文案」→
POST /api/v1/viral-video/{id}/generate-copyindustry/target_customer/viral_structure/marketing_purpose/bgm_preference/duration/fusion_level/user_copy_text/style_strengthuser_copy_texttask.userCopyViralVideoJob,完成后 status=copy_generated,job.copy_result = {title, final_copy, suggested_copy, scenes:[{shot,narration,duration?}]}copy_generated时自动把copy_result.final_copy/title同步进generatedCopy/generatedTitle并切到step2_copy_ready,textarea 直接显示真实文案mockGenerateCopy客户端假数据调用3. STEP2「🎬 确认文案并生成视频」→
POST /api/v1/viral-video/{id}/confirm-copy(一步触发)edited_copy?(用户编辑后的文案;未编辑不传,后端用 AI 原文案)ViralVideoJob,后端跑 TTS→Seedance→ffmpeg→upload 全流程,完成后 status=completed,result_video_url为成片handleConfirmCopy不再只切本地 state,直接调confirmViralCopy,切到step3_generating显示「AI 正在生成视频中…」completed自动切到step3_done,视频播放器用job.output_url || job.result_video_url/generate接口4. 轮询升级
onPollUpdate现在识别所有新状态和阶段:image_analyzed→step1_donecopy_generated→step2_copy_readyrunning态按progress_stage细分:image_analysis/video_analysis→step1_analyzingintent_parsing/copy_fusion/storyboard/review→step2_generatingtts/bgm_select/rendering/musetalk/uploading→step3_generatingwait_user_confirm兼容旧链路(停留在 step2_copy_ready)failed按阶段区分copyError/videoErrorjob.image_analysis/job.copy_result同步到本地 state,避免本地假数据与服务端不同步completed/failed/cancelled(image_analyzed/copy_generated是非终态,继续轮询等待下一步触发)5. 旧链路兼容
/generate和/{id}/confirm-intent端点保留不删,handleGenerateVideo(STEP3 兜底按钮)继续使用旧/generate作为降级路径retryViralVideo逻辑不变GET /viral-video/{id}类型定义已包含image_analysis/copy_result字段,与后端对齐6. 类型清理
CopyResult类型导入(现在通过job.copy_result访问,不需要本地类型声明的实例)isCopyStage/isImageAnalysisStage导入(用于轮询阶段判断)测试
未改动
/generate和/{id}/confirm-intent接口代码路径保留,未删除viral_video:image_analyzed/viral_video:copy_generated:当前轮询已能覆盖状态推进,WS 事件可在后续迭代作为实时加速优化(非阻塞)LGTM
🗑️ 预览环境已清理
PR #2122 已关闭或合并,对应的预览环境已被清理。
🚀 预览环境已部署
CI全绿,自动审批通过。