miyukicodes/d-commerce
0
1from pydantic import BaseModel, Field2from typing import List, Optional, Dict, Any3from datetime import datetime4 5# Source information model6class SourceInfo(BaseModel):7 id: str8 name: str9 category: str10 price: str11 similarity_score: float12 13# Chat request and response models14class ChatRequest(BaseModel):15 message: str16 conversation_id: Optional[str] = None17 18class ChatResponse(BaseModel):19 response: str20 sources: List[SourceInfo] # Changed from List[str] to List[SourceInfo]21 suggested_questions: List[str]22 conversation_id: Optional[str] = None # Make this optional23 24# Product models25class Product(BaseModel):26 id: str27 name: str28 category: str29 description: str30 price: float31 image_url: Optional[str] = None32 tags: List[str] = []33 34class SearchRequest(BaseModel):35 query: str36 category: Optional[str] = None37 limit: int = 2038 39# Conversation models40class ChatMessage(BaseModel):41 role: str # "user" or "assistant"42 content: str43 timestamp: datetime44 45class Conversation(BaseModel):46 id: str47 user_id: str48 messages: List[ChatMessage]49 created_at: datetime50 updated_at: datetime51 52# Knowledge base models53class Document(BaseModel):54 content: str55 metadata: Dict[str, Any] = {}56 source: str = "upload"57 58class KnowledgeDocument(BaseModel):59 id: str60 content: str61 embedding: List[float]62 metadata: Dict[str, Any]63 source: str64 created_at: datetime