| 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 |