from typing import List, Optional from pydantic import BaseModel, Field class UploadResponse(BaseModel): file_id: str original_name: str file_url: str class TaskCreateRequest(BaseModel): file_id: str = Field(..., description="Uploaded file identifier") clip_seconds: Optional[int] = Field(default=8, ge=1, le=60) transcode_mp4: bool = True generate_cover: bool = True generate_hls: bool = True watermark_text: Optional[str] = Field(default="VPlatform Demo", max_length=32) class TaskResult(BaseModel): mp4_url: Optional[str] = None cover_url: Optional[str] = None hls_url: Optional[str] = None log: List[str] = Field(default_factory=list) class TaskResponse(BaseModel): task_id: str status: str file_id: str created_at: str updated_at: str options: TaskCreateRequest result: TaskResult error: Optional[str] = None