Spaces:
Sleeping
Sleeping
| # app/db/models/scan_result.py | |
| # ScanResult Beanie document | |
| from __future__ import annotations | |
| from datetime import datetime | |
| from enum import Enum | |
| from typing import Optional | |
| from beanie import Document | |
| from pydantic import Field | |
| class RiskLevel(str, Enum): | |
| LOW = "LOW" | |
| MEDIUM = "MEDIUM" | |
| HIGH = "HIGH" | |
| CRITICAL = "CRITICAL" | |
| class ScanResultDocument(Document): | |
| """Persisted result of a content scan through the AI pipeline.""" | |
| user_id: str | |
| input_type: str # text | image | video | |
| content_preview: Optional[str] = None # first 200 chars of text, or filename | |
| # Risk | |
| risk_level: RiskLevel = RiskLevel.LOW | |
| risk_score: float = 0.0 | |
| categories: list[str] = Field(default_factory=list) | |
| is_flagged: bool = False | |
| # Decision | |
| action: str = "ALLOWED" # ALLOWED | WARNED | BLOCKED | ESCALATED | |
| reasoning: Optional[str] = None | |
| # Pipeline metadata | |
| processing_time_ms: int = 0 | |
| deep_analysis_used: bool = False | |
| created_at: datetime = Field(default_factory=datetime.utcnow) | |
| class Settings: | |
| name = "scan_results" | |