import uuid
from datetime import datetime

from pydantic import BaseModel, Field


class TrendInsightRequest(BaseModel):
    brand_id: uuid.UUID = Field(..., description="品牌ID")
    period_days: int = Field(30, ge=7, le=365, description="分析周期天数")
    platforms: list[str] | None = Field(None, description="筛选平台列表")
    keywords: list[str] | None = Field(None, description="筛选关键词列表")


class TrendInsightResponse(BaseModel):
    id: uuid.UUID
    brand_id: uuid.UUID
    trend_type: str
    keyword: str | None
    platform: str | None
    period_start: datetime
    period_end: datetime
    data_points: list | None
    change_rate: float | None
    absolute_change: int | None
    sentiment_trend: dict | None
    cause_analysis: str | None
    recommendations: list | None
    confidence: float
    severity: str
    created_at: datetime
    updated_at: datetime

    model_config = {"from_attributes": True}


class TrendInsightList(BaseModel):
    items: list[TrendInsightResponse]
    total: int


class TrendSummary(BaseModel):
    brand_id: uuid.UUID
    period_days: int
    rising_count: int = 0
    declining_count: int = 0
    hotspot_count: int = 0
    top_keywords: list[str] = Field(default_factory=list)
    platform_highlights: dict = Field(default_factory=dict)
