| from pydantic import BaseModel, Field |
| from typing import Optional |
| from datetime import datetime |
|
|
|
|
| class QueryRequest(BaseModel): |
| query: str = Field(..., min_length=1, max_length=2000) |
| collection: Optional[str] = Field(default="all") |
| top_k: Optional[int] = Field(default=5, ge=1, le=20) |
| use_reranking: Optional[bool] = Field(default=True) |
| filters: Optional[dict] = Field(default=None) |
|
|
|
|
| class SourceResult(BaseModel): |
| text: str |
| score: float |
| doc_id: str |
| parent_id: str |
| filename: str |
| collection: str |
| metadata: Optional[dict] = None |
|
|
|
|
| class QueryResponse(BaseModel): |
| success: bool |
| query: str |
| context: str |
| sources: list[SourceResult] |
| processing_time_ms: float |
| cached: bool |
| engine: str = "nexus" |
|
|
|
|
| class UploadResponse(BaseModel): |
| success: bool |
| doc_id: str |
| filename: str |
| file_size_mb: float |
| parents_created: int |
| children_created: int |
| processing_time_ms: float |
| collection: str |
|
|
|
|
| class HealthResponse(BaseModel): |
| status: str |
| timestamp: str |
| uptime_seconds: float |
| qdrant_connection: str |
| cache_entries: int |
| version: str = "1.0.0" |
|
|
|
|
| class StatsResponse(BaseModel): |
| storage: dict |
| documents: dict |
| queries: dict |
| top_queries: list[dict] |
| rate_limits: dict |
|
|
|
|
| class DeleteResponse(BaseModel): |
| success: bool |
| doc_id: str |
| parents_deleted: int |
| children_deleted: int |
|
|
|
|
| class CollectionsResponse(BaseModel): |
| success: bool |
| collections: list[str] |
| total: int |
|
|
|
|
| class ErrorResponse(BaseModel): |
| success: bool = False |
| error: str |
| detail: Optional[str] = None |