from pydantic import BaseModel, Field from typing import List, Optional class ProductOut(BaseModel): id: int name: str description: Optional[str] = None notes: Optional[str] = None price: Optional[float] = None class Config: from_attributes = True class CustomerOut(BaseModel): id: int name: str attributes: str wcltv: float n: int class Config: from_attributes = True class CustomerUpdate(BaseModel): name: str attributes: Optional[str] = None wcltv: Optional[float] = None n: Optional[int] = None class ChatTurn(BaseModel): sender: str = Field(pattern="^(customer|agent)$") text: str class ConversationOut(BaseModel): id: int profile_name: str history: List[ChatTurn] class ChatRequest(BaseModel): profile_name: str user_text: str class ChatResponse(BaseModel): reply: str conversation_id: int