Merge pull request 'chore(viral-video): #2106 删除 _step_musetalk 步骤(Seedance 直生口型)' (#2108) from chore/2106b-remove-musetalk into develop
CI/CD Pipeline / Check if frontend-only change (push) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (push) Successful in 1s
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 3s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 3s
CI/CD Pipeline / Frontend Lint (push) Has been skipped
CI/CD Pipeline / PR Build API Image (push) Has been skipped
CI/CD Pipeline / PR Build Web Image (push) Has been skipped
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 / PR Build Worker Image (push) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Style (pull_request) Has been skipped
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been skipped
CI/CD Pipeline / Validate - Security (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Check push changed paths (push) Successful in 17s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m20s
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 / 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 / Build Staging API Image (push) Successful in 29s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m57s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 25s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (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 / 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 / Canary Release to Production (pull_request) Has been skipped
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m18s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (push) Failing after 3m27s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m24s
CI/CD Pipeline / CI Gate (pull_request) Successful in 1s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 1m44s
CI/CD Pipeline / Retag skipped Staging API Image (push) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (push) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (push) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 5m5s
AI Code Review / AI Code Review (pull_request) Successful in 7m49s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 4m1s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 1m39s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 2m59s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 3m41s
CI/CD Pipeline / Integration Tests (push) Successful in 21m19s
CI/CD Pipeline / Validate - Style (push) Successful in 22m6s
CI/CD Pipeline / Validate - Python (mypy + alembic) (push) Successful in 27m54s
CI/CD Pipeline / Unit Tests (push) Successful in 28m36s
CI/CD Pipeline / Validate - Security (push) Successful in 1h16m37s
CI/CD Pipeline / Build Production API Image (push) Has been skipped
CI/CD Pipeline / Build Production Web Image (push) Has been skipped
CI/CD Pipeline / Build Production Worker Image (push) Has been skipped
CI/CD Pipeline / CI Gate (push) Has been skipped
CI/CD Pipeline / Deploy Production (push) Has been skipped
CI/CD Pipeline / Canary Release to Production (push) Has been skipped
CI/CD Pipeline / Production Browser E2E (push) Has been skipped

This commit was merged in pull request #2108.
This commit is contained in:
2026-09-30 21:12:31 +08:00
3 changed files with 7 additions and 38 deletions
+7 -20
View File
@@ -1,6 +1,6 @@
"""爆款视频 Celery 编排器 — ViralVideoOrchestrator.
10 步流水线:
9 步流水线(Seedance 2.5 直生口型,不再走 MuseTalk):
1. 图片 VLM 分析
1.5 [v1.3] 视频风格分析(如用户上传参考视频)
2. 用户文案意图解析
@@ -8,10 +8,9 @@
4. 分镜脚本生成
5. 合规审核(6 维度,不通过自动重写 1 次)
6. CosyVoice 配音
7. BGM 选择
8. UnifiedRenderService 渲染
9. 数字人口型(MuseTalk)
10. OSS 上传 + 通知 + 扣点
7. BGM 选择(素材未就绪时跳过)
8. Seedance 逐分镜生成 + ffmpeg concat + 混 TTS
9. OSS 上传 + 通知 + 扣点
"""
from __future__ import annotations
@@ -593,14 +592,6 @@ def _make_placeholder_clip(tmpdir, idx: int, duration: int):
return out
def _step_musetalk(job: ViralVideoJob, video_path: str) -> str:
"""步骤 9: 数字人口型。P1:MuseTalk GPU 端点未就绪前统一跳过。"""
if not job.persona_id:
return video_path
logger.info("[爆款视频] persona_id=%s 已设置,但 MuseTalk GPU 端点未就绪,跳过口型同步", job.persona_id)
return video_path
def _step_upload(job: ViralVideoJob, video_path: str) -> str:
"""步骤 10: OSS 上传。"""
try:
@@ -760,14 +751,10 @@ def resume_viral_video_pipeline(self: Task, job_id: str) -> dict:
video_path = _step_render(job, storyboard, tts_path, bgm)
_emit_progress(job_id, ViralVideoStage.RENDERING, 88.0, "渲染完成")
# ── Step 9: MuseTalk(P1:端点未就绪前跳过) ──
_emit_progress(job_id, ViralVideoStage.MUSETALK, 90.0, "正在处理数字人口型...")
final_video_path = _step_musetalk(job, video_path)
_emit_progress(job_id, ViralVideoStage.MUSETALK, 93.0, "数字人处理完成")
# ── Step 10: OSS 上传 + 扣点 ──
# ── Step 9: OSS 上传 + 扣点 ──
# 注:爆款视频由 Seedance 2.5 直接生成口型,不需要 MuseTalk 事后对口型(MuseTalk 是 AI 数字人路线用的)。
_emit_progress(job_id, ViralVideoStage.UPLOADING, 95.0, "正在上传视频...")
video_url = _step_upload(job, final_video_path)
video_url = _step_upload(job, video_path)
job.credits_cost = CREDITS_VIRAL_VIDEO_COST
# TODO: 调用 credits.deduct() 实际扣点(#1895 总开关为 false 时不扣,保留 TODO)
-3
View File
@@ -456,7 +456,6 @@ class TestPipelineIntegration:
"""流水线端到端集成测试(mock 外部依赖)。"""
@patch("apps.worker.worker_app.tasks.viral_video._step_upload")
@patch("apps.worker.worker_app.tasks.viral_video._step_musetalk")
@patch("apps.worker.worker_app.tasks.viral_video._step_render")
@patch("apps.worker.worker_app.tasks.viral_video._step_bgm_select")
@patch("apps.worker.worker_app.tasks.viral_video._step_tts")
@@ -481,7 +480,6 @@ class TestPipelineIntegration:
mock_tts,
mock_bgm,
mock_render,
mock_musetalk,
mock_upload,
):
"""测试 resume 流水线能从确认状态走到完成。"""
@@ -509,7 +507,6 @@ class TestPipelineIntegration:
mock_tts.return_value = None # P1: TTS 返回 Path|None,mock 用 None 跳过混音
mock_bgm.return_value = None # P1: BGM 未就绪前返回 None
mock_render.return_value = "/tmp/video.mp4"
mock_musetalk.return_value = "/tmp/video_final.mp4"
mock_upload.return_value = "https://oss.example.com/final.mp4"
result = resume_viral_video_pipeline.run("job-001")
-15
View File
@@ -155,21 +155,6 @@ class TestBGMSkip:
assert _step_bgm_select(mock_job) is None
class TestMuseTalkSkip:
def test_musetalk_no_persona_passes_through(self, mock_job):
from apps.worker.worker_app.tasks.viral_video import _step_musetalk
mock_job.persona_id = ""
assert _step_musetalk(mock_job, "/tmp/video.mp4") == "/tmp/video.mp4"
def test_musetalk_with_persona_still_skips(self, mock_job):
"""GPU 端点未就绪前,即使有 persona 也直接返回原路径。"""
from apps.worker.worker_app.tasks.viral_video import _step_musetalk
mock_job.persona_id = "persona-1"
assert _step_musetalk(mock_job, "/tmp/video.mp4") == "/tmp/video.mp4"
# ── P0-1: call_video_generation 参数构造 ──────────────────────────