| 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 |
| content: str |
| context: Optional[str] = None |
| sources: Optional[Dict[str, Any]] = None |
| 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 |
| created_at: Optional[datetime] = None |
|
|
| class Feedback(BaseModel): |
| id: Optional[str] = None |
| message_id: str |
| rating: int |
| comment: Optional[str] = None |
| created_at: Optional[datetime] = None |
|
|
| class UserPreferences(BaseModel): |
| level: str |
| languages: List[str] |
| aiExperience: str |
| hardwareKnowledge: str |
|
|
| class SignupData(BaseModel): |
| email: str |
| password: str |
| name: str |
| preferences: UserPreferences |