from pydantic import BaseModel from typing import List, Optional from datetime import date, datetime from uuid import UUID class PlanFeature(BaseModel): name: str included: bool class PlanDetail(BaseModel): id: str name: str price: float max_queries: int max_brands: int # -1 表示无限 max_alerts_per_month: int # -1 表示无限, 0 表示无 data_retention_days: int features: List[PlanFeature] class SubscribeRequest(BaseModel): plan: str class SubscriptionResponse(BaseModel): id: UUID plan: str status: str start_date: date end_date: date amount: Optional[float] = None payment_method: Optional[str] = None created_at: datetime class Config: from_attributes = True class SubscriptionHistoryResponse(BaseModel): items: List[SubscriptionResponse] total: int