from pydantic import BaseModel, Field
from typing import Optional
from datetime import datetime


# Request Models
class PersonaGenerationRequest(BaseModel):
    store_id: int
    branch_id: Optional[int] = None
    force_refresh: bool = Field(False, description="Force refresh existing persona")


class PersonaUpdateRequest(BaseModel):
    industry: Optional[str] = None
    audience_type: Optional[str] = None
    brand_voice: Optional[str] = None
    content_style: Optional[str] = None


# Response Models
class StorePersonaResponse(BaseModel):
    id: int
    store_id: int
    branch_id: Optional[int] = None
    industry: Optional[str] = None
    audience_type: Optional[str] = None
    brand_voice: Optional[str] = None
    content_style: Optional[str] = None
    analysis_summary: Optional[str] = None
    confidence_score: Optional[float] = None
    last_analyzed: Optional[datetime] = None
    created_at: datetime
    updated_at: datetime
    is_active: bool


class PersonaGenerationResponse(BaseModel):
    success: bool
    message: str
    data: Optional[StorePersonaResponse] = None
    analysis_metadata: Optional[dict] = None
