fix(generation): block tasks without ready videos
CI/CD Pipeline / Validate Code Quality And Tests (push) Has been cancelled
Deploy / Deploy Staging (push) Has been cancelled
Deploy / Production Browser E2E (push) Failing after 2033h49m45s
Deploy / Deploy Production (push) Failing after 2033h58m44s
Deploy / Build Production Runtime Images (push) Failing after 2033h58m46s
CI/CD Pipeline / Validate Code Quality And Tests (push) Has been cancelled
Deploy / Deploy Staging (push) Has been cancelled
Deploy / Production Browser E2E (push) Failing after 2033h49m45s
Deploy / Deploy Production (push) Failing after 2033h58m44s
Deploy / Build Production Runtime Images (push) Failing after 2033h58m46s
This commit is contained in:
@@ -5,6 +5,7 @@ from app.api.routes.permissions import require_workspace_member
|
||||
from app.core.celery_app import celery_app
|
||||
from app.dependencies import (
|
||||
get_asset_library_repository,
|
||||
get_asset_repository,
|
||||
get_generated_video_repository,
|
||||
get_generation_task_repository,
|
||||
get_project_repository,
|
||||
@@ -63,6 +64,18 @@ def _to_generated_video_response(item) -> GeneratedVideoResponse:
|
||||
)
|
||||
|
||||
|
||||
def _ensure_library_has_ready_video_assets(assets) -> None:
|
||||
ready_video_assets = [
|
||||
asset for asset in assets
|
||||
if asset.status.value == "ready" and asset.mime_type.startswith("video")
|
||||
]
|
||||
if not ready_video_assets:
|
||||
raise HTTPException(
|
||||
status_code=422,
|
||||
detail="当前素材库没有 ready 状态的视频素材,请先上传并等待导入完成后再生成。",
|
||||
)
|
||||
|
||||
|
||||
@router.post("/tasks", response_model=GenerationTaskResponse)
|
||||
def create_generation_task(
|
||||
request: CreateGenerationTaskRequest,
|
||||
@@ -70,6 +83,7 @@ def create_generation_task(
|
||||
generation_task_repository: Any = Depends(get_generation_task_repository),
|
||||
project_repository: Any = Depends(get_project_repository),
|
||||
asset_library_repository: Any = Depends(get_asset_library_repository),
|
||||
asset_repository: Any = Depends(get_asset_repository),
|
||||
workspace_member_repository: WorkspaceMemberRepository = Depends(get_workspace_member_repository),
|
||||
) -> GenerationTaskResponse:
|
||||
require_workspace_member(request.workspace_id, authenticated_user, workspace_member_repository)
|
||||
@@ -79,6 +93,8 @@ def create_generation_task(
|
||||
library = asset_library_repository.get(request.asset_library_id)
|
||||
if library is None or library.workspace_id != request.workspace_id or library.project_id != request.project_id:
|
||||
raise HTTPException(status_code=404, detail=f"AssetLibrary {request.asset_library_id} not found")
|
||||
assets = asset_repository.list_by_library(request.asset_library_id)
|
||||
_ensure_library_has_ready_video_assets(assets)
|
||||
|
||||
use_case = CreateGenerationTaskUseCase(generation_task_repository)
|
||||
task = use_case.execute(
|
||||
|
||||
Reference in New Issue
Block a user