chatbot / app /models /chat.py
Tahasaif3's picture
'changes'
efb660b
from pydantic import BaseModel
from typing import Optional, List, Dict, Any
from datetime import datetime
import uuid
class User(BaseModel):
id: Optional[str] = None
username: str
email: str
created_at: Optional[datetime] = None
class ChatSession(BaseModel):
id: Optional[str] = str(uuid.uuid4())
user_id: str
created_at: Optional[datetime] = None
updated_at: Optional[datetime] = None
class ChatMessage(BaseModel):
id: Optional[str] = None
session_id: str
role: str # 'user' or 'assistant'
content: str
context: Optional[str] = None # Selected text context
sources: Optional[Dict[str, Any]] = None # Retrieved document sources
created_at: Optional[datetime] = None
class Document(BaseModel):
id: Optional[str] = str(uuid.uuid4())
title: str
chapter: Optional[str] = None
section: Optional[str] = None
subsection: Optional[str] = None
content: str
embedding_id: Optional[str] = None # Qdrant point ID
created_at: Optional[datetime] = None
class Feedback(BaseModel):
id: Optional[str] = None
message_id: str
rating: int # 1-5
comment: Optional[str] = None
created_at: Optional[datetime] = None
class UserPreferences(BaseModel):
level: str # 'beginner', 'intermediate', 'advanced'
languages: List[str]
aiExperience: str # 'none', 'basic', 'intermediate', 'advanced'
hardwareKnowledge: str # 'basic', 'intermediate', 'advanced'
class SignupData(BaseModel):
email: str
password: str
name: str
preferences: UserPreferences