from datetime import datetime from typing import Literal from pydantic import BaseModel, field_validator from app.schemas.chat import ChatMessage, ChatResponse class QueueRequest(BaseModel): messages: list[ChatMessage] max_tokens: int = 2048 temperature: float = 0.0 response_format: Literal["json", "text"] = "text" priority: Literal["high", "normal", "low"] = "normal" @field_validator("messages") @classmethod def messages_not_empty(cls, v: list) -> list: if not v: raise ValueError("messages must not be empty") return v class JobStatus(BaseModel): id: str status: str priority: str position: int | None = None # number of jobs ahead; None when not pending created_at: datetime started_at: datetime | None = None finished_at: datetime | None = None result: ChatResponse | None = None error: str | None = None class QueueStatus(BaseModel): running: bool paused: bool queue_size: int current_job_id: str | None = None