Spaces:
Running
Running
File size: 1,517 Bytes
409c17a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
"""
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
|