| from pydantic import BaseModel, Field | |
| from typing import Any | |
| class TextRequest(BaseModel): | |
| text: str | |
| class AnalysisResult(BaseModel): | |
| risk_score: float = Field(..., ge=0.0, le=1.0, description="0.0 = safe, 1.0 = critical threat") | |
| risk_level: str = Field(..., description="LOW | MEDIUM | HIGH | CRITICAL") | |
| verdict: str = Field(default="", description="REAL | FAKE | UNVERIFIABLE | PHISHING") | |
| content_type: str = Field(default="", description="phishing | fake_news | real_news | unknown") | |
| threat_types: list[str] = Field(default_factory=list) | |
| explanation: str | |
| simplified_explanation: str = Field(default="", description="Plain-language verdict summary") | |
| tool_outputs: dict[str, Any] = Field(default_factory=dict) | |