from typing import Optional, Literal, List from pydantic import BaseModel, Field from config import MODEL_PATH # ========================= # Schemas # ========================= class PredictIn(BaseModel): title: Optional[str] = Field(default=None, description="Tiêu đề bài báo") text: Optional[str] = Field(default=None, description="Nội dung bài báo") text_all: Optional[str] = Field(default=None, description="title + text đã gộp sẵn") class PredictOut(BaseModel): label: Literal["real", "fake"] prob_real: float prob_fake: float calibrated: bool = Field( default=True, description="True vì đã dùng CalibratedClassifierCV(method='sigmoid').", ) model_path: str = Field(default=MODEL_PATH) class PredictBatchIn(BaseModel): items: List[PredictIn] class PredictBatchOut(BaseModel): results: List[PredictOut]