Spaces:
Sleeping
Sleeping
| """MongoDB document models.""" | |
| from datetime import datetime | |
| from typing import Optional | |
| from pydantic import BaseModel, Field | |
| from backend.core.schema import EnsembleResult, DetectionResult, Verdict | |
| class AnalysisHistoryDocument(BaseModel): | |
| """Document for storing analysis history in MongoDB.""" | |
| id: Optional[str] = Field(default=None, alias="_id") | |
| filename: str | |
| verdict: Verdict | |
| p_fake: float | |
| confidence: float | |
| primary_evidence: str | |
| supporting_evidence: list[str] | |
| uncertainty_factors: list[str] | |
| detector_results: list[DetectionResult] | |
| processing_time_ms: float | |
| fusion_details: dict | |
| created_at: datetime = Field(default_factory=datetime.utcnow) | |
| class Config: | |
| # Allow both id and _id | |
| populate_by_name = True | |
| def from_ensemble_result( | |
| cls, | |
| filename: str, | |
| result: EnsembleResult, | |
| ) -> "AnalysisHistoryDocument": | |
| """Create from EnsembleResult.""" | |
| return cls( | |
| filename=filename, | |
| verdict=result.verdict, | |
| p_fake=result.p_fake, | |
| confidence=result.confidence, | |
| primary_evidence=result.primary_evidence, | |
| supporting_evidence=result.supporting_evidence, | |
| uncertainty_factors=result.uncertainty_factors, | |
| detector_results=result.detector_results, | |
| processing_time_ms=result.processing_time_ms, | |
| fusion_details=result.fusion_details, | |
| ) | |
| class AnalysisHistoryResponse(BaseModel): | |
| """Response model for history queries.""" | |
| id: str = Field(alias="_id") | |
| filename: str | |
| verdict: Verdict | |
| p_fake: float | |
| confidence: float | |
| processing_time_ms: float | |
| created_at: datetime | |
| class Config: | |
| populate_by_name = True | |