from pydantic import BaseModel from typing import List, Dict from datetime import datetime class Argument(BaseModel): argument_quote: List[str] argument_summary: str argument_source: str argument_type: str class ArticleResponse(BaseModel): """Response model for article list (minimal data for cards)""" id: int title: str source: str url: str date: datetime summary: str ai_labor_relevance: float query_score: float = 0.0 document_type: str author_type: str document_topics: List[str] class ArticleDetail(ArticleResponse): """Response model for full article details (extends ArticleResponse)""" text: str arguments: List[Argument] class FiltersResponse(BaseModel): """Available filter options""" document_types: List[str] author_types: List[str] topics: List[str] date_range: Dict[str, str] # min_date, max_date relevance_range: Dict[str, float] # min_relevance, max_relevance