from pydantic import BaseModel class ExtractFramesRequest(BaseModel): file_path: str source_id: int job_id: int mode: str = "interval" frame_interval: int = 30 class VideoToTextRequest(BaseModel): file_path: str source_id: int job_id: int start_sec: float end_sec: float model: str | None = None prompt_template: str | None = None class FrameInfo(BaseModel): frame_index: int time_sec: float frame_path: str class VideoJobCallback(BaseModel): job_id: int status: str frames: list[FrameInfo] | None = None output_path: str | None = None error_message: str | None = None class VideoAcceptedResponse(BaseModel): message: str job_id: int