Merge branch 'pr2101' into merge-test
# Conflicts: # apps/api/app/schemas/viral_video.py # apps/worker/worker_app/tasks/viral_video.py # packages/adapters/sqlalchemy_impl/viral_video_repository.py # packages/domain/viral_video.py # tests/unit/test_viral_video.py
This commit is contained in:
@@ -6,7 +6,6 @@ from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel, Field, field_validator
|
||||
|
||||
|
||||
# ── 枚举常量 ─────────────────────────────────────────────────────────────
|
||||
|
||||
VALID_FUSION_LEVELS = ("ai_full", "ai_polish", "user_primary")
|
||||
|
||||
@@ -19,9 +19,9 @@ from __future__ import annotations
|
||||
import logging
|
||||
import os
|
||||
|
||||
from celery import Task
|
||||
from celery import Task, shared_task
|
||||
from celery.exceptions import Retry
|
||||
from worker_app.celery_app import celery_app
|
||||
from worker_app.celery_app import celery_app # noqa: F401 - 加载 app 以注册任务
|
||||
from worker_app.db import SessionLocal
|
||||
|
||||
from packages.adapters.sqlalchemy_impl.viral_video_repository import (
|
||||
@@ -313,8 +313,8 @@ def _step_bgm_select(job: ViralVideoJob) -> str:
|
||||
def _step_render(job: ViralVideoJob, storyboard: list[dict], audio_url: str, bgm: str) -> str:
|
||||
"""步骤 8: UnifiedRenderService 渲染。"""
|
||||
try:
|
||||
from video_processing.unified_render_service import UnifiedRenderService
|
||||
from video_processing.render_adapter import build_render_plan
|
||||
from video_processing.unified_render_service import UnifiedRenderService
|
||||
|
||||
render_plan = build_render_plan(
|
||||
images=job.images,
|
||||
@@ -379,7 +379,7 @@ def _step_upload(job: ViralVideoJob, video_path: str) -> str:
|
||||
# ── 主编排器 ────────────────────────────────────────────────────────────
|
||||
|
||||
|
||||
@celery_app.task(bind=True, max_retries=2, name="worker.run_viral_video_pipeline")
|
||||
@shared_task(bind=True, max_retries=2, name="worker.run_viral_video_pipeline")
|
||||
def run_viral_video_pipeline(self: Task, job_id: str) -> dict:
|
||||
"""爆款视频 10 步流水线编排器。"""
|
||||
session = None
|
||||
@@ -452,7 +452,7 @@ def run_viral_video_pipeline(self: Task, job_id: str) -> dict:
|
||||
session.close()
|
||||
|
||||
|
||||
@celery_app.task(bind=True, max_retries=2, name="worker.resume_viral_video_pipeline")
|
||||
@shared_task(bind=True, max_retries=2, name="worker.resume_viral_video_pipeline")
|
||||
def resume_viral_video_pipeline(self: Task, job_id: str) -> dict:
|
||||
"""用户确认意图后,从断点恢复流水线(步骤 3-10)。"""
|
||||
session = None
|
||||
@@ -539,7 +539,7 @@ def resume_viral_video_pipeline(self: Task, job_id: str) -> dict:
|
||||
session.close()
|
||||
|
||||
|
||||
@celery_app.task(bind=True, max_retries=1, name="worker.run_video_style_analysis")
|
||||
@shared_task(bind=True, max_retries=1, name="worker.run_video_style_analysis")
|
||||
def run_video_style_analysis(self: Task, job_id: str) -> dict:
|
||||
"""独立的视频风格分析任务(v1.3)。"""
|
||||
session = None
|
||||
|
||||
@@ -6,8 +6,8 @@ from sqlalchemy.orm import Session
|
||||
|
||||
from packages.adapters.sqlalchemy_impl.models import (
|
||||
ViralVideoJobModel,
|
||||
ViralVideoStyleTemplateModel,
|
||||
ViralVideoPromptTemplateModel,
|
||||
ViralVideoStyleTemplateModel,
|
||||
)
|
||||
from packages.domain.viral_video import ViralVideoJob, ViralVideoStatus
|
||||
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
import sys
|
||||
from dataclasses import dataclass, field
|
||||
from datetime import datetime, timezone
|
||||
|
||||
@@ -13,9 +13,8 @@ from __future__ import annotations
|
||||
from datetime import datetime, timezone
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from pydantic import ValidationError
|
||||
|
||||
import pytest
|
||||
from pydantic import ValidationError
|
||||
|
||||
from packages.domain.viral_video import (
|
||||
CREDITS_VIRAL_VIDEO_COST,
|
||||
@@ -27,7 +26,6 @@ from packages.domain.viral_video import (
|
||||
ViralVideoStatus,
|
||||
)
|
||||
|
||||
|
||||
# ── 领域模型测试 ─────────────────────────────────────────────────────────
|
||||
|
||||
|
||||
@@ -326,10 +324,10 @@ class TestViralVideoRepository:
|
||||
assert repo.count_pending_by_user("user-001") == 2
|
||||
|
||||
def test_style_template_repo(self, db_session):
|
||||
from packages.adapters.sqlalchemy_impl.models import ViralVideoStyleTemplateModel
|
||||
from packages.adapters.sqlalchemy_impl.viral_video_repository import (
|
||||
SQLAlchemyViralVideoStyleTemplateRepository,
|
||||
)
|
||||
from packages.adapters.sqlalchemy_impl.models import ViralVideoStyleTemplateModel
|
||||
|
||||
# 插入模板
|
||||
tpl = ViralVideoStyleTemplateModel(
|
||||
|
||||
Reference in New Issue
Block a user