""" Video API Endpoints (Test) 프론트엔드 개발을 위한 테스트용 엔드포인트입니다. """ from datetime import datetime, timedelta from typing import Optional from fastapi import APIRouter from pydantic import BaseModel, Field router = APIRouter(prefix="/video", tags=["video"]) # ============================================================================= # Schemas # ============================================================================= class VideoGenerateResponse(BaseModel): """영상 생성 응답 스키마""" success: bool = Field(..., description="성공 여부") task_id: str = Field(..., description="작업 고유 식별자") message: str = Field(..., description="응답 메시지") error_message: Optional[str] = Field(None, description="에러 메시지") class VideoStatusResponse(BaseModel): """영상 상태 조회 응답 스키마""" task_id: str = Field(..., description="작업 고유 식별자") status: str = Field(..., description="처리 상태 (processing, completed, failed)") video_url: Optional[str] = Field(None, description="영상 URL") class VideoItem(BaseModel): """영상 아이템 스키마""" task_id: str = Field(..., description="작업 고유 식별자") video_url: str = Field(..., description="영상 URL") created_at: datetime = Field(..., description="생성 일시") class VideoListResponse(BaseModel): """영상 목록 응답 스키마""" videos: list[VideoItem] = Field(..., description="영상 목록") total: int = Field(..., description="전체 개수") # ============================================================================= # Test Endpoints # ============================================================================= TEST_VIDEO_URL = "https://ado2mediastoragepublic.blob.core.windows.net/ado2-media-public-access/ado2-media-original/dev-user-idx/dev-task-idx/1a584e86-6a74-417d-8cff-270ef60c8646.mp4" @router.post( "/generate/{task_id}", summary="영상 생성 요청 (테스트)", response_model=VideoGenerateResponse, ) async def generate_video(task_id: str) -> VideoGenerateResponse: """영상 생성 요청 테스트 엔드포인트""" return VideoGenerateResponse( success=True, task_id=task_id, message="영상 생성 요청 성공", error_message=None, ) @router.get( "/status/{task_id}", summary="영상 상태 조회 (테스트)", response_model=VideoStatusResponse, ) async def get_video_status(task_id: str) -> VideoStatusResponse: """영상 상태 조회 테스트 엔드포인트""" return VideoStatusResponse( task_id=task_id, status="completed", video_url=TEST_VIDEO_URL, ) @router.get( "s/", summary="영상 목록 조회 (테스트)", response_model=VideoListResponse, ) async def get_videos() -> VideoListResponse: """영상 목록 조회 테스트 엔드포인트""" now = datetime.now() videos = [ VideoItem( task_id=f"test-task-id-{i:03d}", video_url=TEST_VIDEO_URL, created_at=now - timedelta(hours=i), ) for i in range(10) ] return VideoListResponse( videos=videos, total=len(videos), )