Baktabek's picture
Upload folder using huggingface_hub
409c17a verified
"""
Application Layer - DTOs (Data Transfer Objects)
"""
from dataclasses import dataclass
from typing import List, Optional
from uuid import UUID
@dataclass
class QueryDTO:
"""Query data transfer object"""
query_text: str
department: str
user_id: Optional[str] = None
session_id: Optional[str] = None
top_k: int = 10
temperature: float = 0.7
max_tokens: int = 2048
filters: dict = None
def __post_init__(self) -> None:
if self.filters is None:
self.filters = {}
@dataclass
class SourceDTO:
"""Source citation DTO"""
title: str
content: str
relevance_score: float
document_id: str
chunk_index: int
metadata: dict
@dataclass
class QueryResponseDTO:
"""Query response DTO"""
query_id: str
answer: str
sources: List[SourceDTO]
confidence: float
processing_time_ms: int
tokens_used: int
model: str
@dataclass
class DocumentUploadDTO:
"""Document upload DTO"""
filename: str
content: bytes
department: str
metadata: dict = None
def __post_init__(self) -> None:
if self.metadata is None:
self.metadata = {}
@dataclass
class DocumentDTO:
"""Document DTO"""
id: str
title: str
filename: str
file_type: str
file_size: int
department: str
status: str
uploaded_at: str
indexed_at: Optional[str] = None
metadata: dict = None