from pydantic import BaseModel, Field from typing import Optional, List from datetime import datetime class Article(BaseModel): id: str = Field(alias="_id") title: str content: str summary: Optional[str] = None language: str category: Optional[str] = None tags: Optional[List[str]] = [] source_url: Optional[str] = None image_url: Optional[str] = None author: Optional[str] = None published_at: Optional[datetime] = None created_at: datetime updated_at: Optional[datetime] = None class Config: populate_by_name = True json_schema_extra = { "example": { "_id": "507f1f77bcf86cd799439011", "title": "Sample News Article", "content": "This is the full content of the article...", "summary": "A brief summary of the article", "language": "ko", "category": "technology", "tags": ["AI", "tech", "innovation"], "created_at": "2024-01-01T00:00:00Z" } } class ArticleList(BaseModel): total: int page: int page_size: int total_pages: int articles: List[Article] class ArticleSummary(BaseModel): id: str = Field(alias="_id") title: str summary: Optional[str] = None language: str category: Optional[str] = None image_url: Optional[str] = None published_at: Optional[datetime] = None created_at: datetime class Config: populate_by_name = True