"""
File Processor - Datenmodelle und Enums.

Typen fuer Dokumentenverarbeitung: Dateitypen, Modi, Ergebnisse.
"""

from typing import List, Dict, Any, Tuple
from dataclasses import dataclass
from enum import Enum


class FileType(str, Enum):
    """Unterstützte Dateitypen."""
    PDF = "pdf"
    IMAGE = "image"
    DOCX = "docx"
    DOC = "doc"
    TXT = "txt"
    UNKNOWN = "unknown"


class ProcessingMode(str, Enum):
    """Verarbeitungsmodi."""
    OCR_HANDWRITING = "ocr_handwriting"  # Handschrifterkennung
    OCR_PRINTED = "ocr_printed"          # Gedruckter Text
    TEXT_EXTRACT = "text_extract"        # Textextraktion (PDF/DOCX)
    MIXED = "mixed"                       # Kombiniert OCR + Textextraktion


@dataclass
class ProcessedRegion:
    """Ein erkannter Textbereich."""
    text: str
    confidence: float
    bbox: Tuple[int, int, int, int]  # x1, y1, x2, y2
    page: int = 1


@dataclass
class ProcessingResult:
    """Ergebnis der Dokumentenverarbeitung."""
    text: str
    confidence: float
    regions: List[ProcessedRegion]
    page_count: int
    file_type: FileType
    processing_mode: ProcessingMode
    metadata: Dict[str, Any]
