misakovhearst
Initial deploy
48c7fed
from pydantic import BaseModel
from typing import Optional, Dict, List, Any
from datetime import datetime
# Request Models
class AnalyzeTextRequest(BaseModel):
"""Request model for analyzing raw text"""
text: str
user_id: Optional[str] = None
filename: Optional[str] = "untitled.txt"
class GetResultRequest(BaseModel):
"""Request model for getting a specific result"""
result_id: int
class DeleteResultRequest(BaseModel):
"""Request model for deleting a result"""
result_id: int
class UpdateResultRequest(BaseModel):
"""Request model for updating a result"""
result_id: int
notes: Optional[str] = None
is_flagged: Optional[bool] = None
# Response Models
class DetectorResultResponse(BaseModel):
"""Response model for single detector result"""
detector_name: str
score: float
confidence: Optional[str] = None
explanation: Optional[str] = None
suspicious_spans: List[Dict[str, Any]] = []
metadata: Dict[str, Any] = {}
class AnalysisResponse(BaseModel):
"""Response model for analysis result"""
status: str # success, error
message: str
result_id: Optional[int] = None
file_id: Optional[str] = None
overall_ai_score: Optional[float] = None
overall_ai_score_percentage: Optional[str] = None
overall_confidence: Optional[str] = None
status_label: Optional[str] = None
detector_results: Optional[Dict[str, DetectorResultResponse]] = None
enabled_detectors: Optional[List[str]] = None
text_stats: Optional[Dict[str, Any]] = None
error_details: Optional[str] = None
class ResultListResponse(BaseModel):
"""Response model for list of results"""
status: str
message: str
total_count: int
results: List[Dict[str, Any]] = []
page: int = 1
page_size: int = 10
class SummaryResponse(BaseModel):
"""Response model for summary statistics"""
status: str
message: str
summary: Dict[str, Any] = {}
class StatusResponse(BaseModel):
"""Response model for system status"""
status: str
message: str
detector_status: Dict[str, Any] = {}
config_summary: Optional[str] = None