"""API 响应模型""" from pydantic import BaseModel from typing import Optional, List, Any from datetime import datetime class CollectionResponse(BaseModel): """藏品响应""" id: int name: str category: Optional[str] = None serial_number: Optional[str] = None rarity: str = "通货" ownership_type: str = "自持" is_graded: bool = False grading_company: Optional[str] = None grading_score: Optional[str] = None cost_price: Optional[float] = None current_price: Optional[float] = None status: str = "in_collection" remark: Optional[str] = None created_at: datetime updated_at: datetime class PriceHistoryResponse(BaseModel): """价格历史响应""" id: int collection_id: Optional[int] = None source: str price: float price_unit: str = "元/张" price_type: str = "挂牌价" url: Optional[str] = None crawled_at: datetime class CrawlLogResponse(BaseModel): """爬虫日志响应""" id: int source: str status: str items_count: int = 0 error_message: Optional[str] = None started_at: Optional[datetime] = None finished_at: Optional[datetime] = None class StatisticsResponse(BaseModel): """统计信息响应""" total_collections: int = 0 total_price_records: int = 0 today_price_records: int = 0 last_crawl_time: Optional[datetime] = None category_stats: dict = {}