""" Configurações centralizadas para o Docling Document Processor. Este módulo contém todas as constantes e configurações usadas em toda a aplicação. """ from pathlib import Path # ============================================================================= # LIMITES DE ARQUIVO # ============================================================================= MAX_FILE_SIZE_MB: int = 50 """Tamanho máximo de arquivo em megabytes.""" MAX_FILE_SIZE_BYTES: int = MAX_FILE_SIZE_MB * 1024 * 1024 """Tamanho máximo de arquivo em bytes (calculado).""" MAX_FILES_PER_SESSION: int = 5 """Número máximo de arquivos por upload.""" # ============================================================================= # PROCESSAMENTO # ============================================================================= PROCESSING_TIMEOUT_SECONDS: int = 300 """Timeout para processamento de documentos (5 minutos).""" GPU_TIMEOUT_SECONDS: int = 120 # Limite máximo do ZeroGPU """Timeout para execução GPU via ZeroGPU.""" # ============================================================================= # TIPOS DE ARQUIVO SUPORTADOS # ============================================================================= SUPPORTED_EXTENSIONS: list[str] = [".pdf", ".doc", ".docx"] """Extensões de arquivo aceitas.""" SUPPORTED_MIME_TYPES: dict[str, list[str]] = { ".pdf": ["application/pdf"], ".doc": ["application/msword"], ".docx": [ "application/vnd.openxmlformats-officedocument.wordprocessingml.document" ], } """Mapeamento de extensões para MIME types válidos.""" # ============================================================================= # RATE LIMITING # ============================================================================= RATE_LIMIT_REQUESTS: int = 10 """Número máximo de requisições por janela de tempo.""" RATE_LIMIT_WINDOW_HOURS: int = 1 """Janela de tempo para rate limiting em horas.""" # ============================================================================= # DIRETÓRIOS # ============================================================================= BASE_DIR: Path = Path(__file__).parent """Diretório base da aplicação.""" TEMP_DIR: Path = BASE_DIR / "temp" """Diretório para arquivos temporários.""" LOGS_DIR: Path = BASE_DIR / "logs" """Diretório para arquivos de log.""" TEMP_DIR_CLEANUP_HOURS: int = 1 """Tempo máximo de retenção de arquivos temporários em horas.""" # ============================================================================= # FORMATOS DE SAÍDA # ============================================================================= OUTPUT_FORMATS: list[str] = ["JSON", "Markdown", "Ambos"] """Formatos de saída disponíveis.""" # ============================================================================= # LOGGING # ============================================================================= LOG_FILE: str = "docling_space.log" """Nome do arquivo de log.""" LOG_MAX_BYTES: int = 10 * 1024 * 1024 # 10MB """Tamanho máximo do arquivo de log antes de rotacionar.""" LOG_BACKUP_COUNT: int = 5 """Número de arquivos de backup de log a manter.""" LOG_FORMAT: str = "[%(asctime)s] [%(levelname)s] [%(module)s] %(message)s" """Formato das mensagens de log.""" LOG_DATE_FORMAT: str = "%Y-%m-%d %H:%M:%S" """Formato de data para logs.""" # ============================================================================= # CARACTERES PROIBIDOS EM NOMES DE ARQUIVO # ============================================================================= FORBIDDEN_FILENAME_CHARS: str = r'<>:"/\|?*' """Caracteres que devem ser removidos de nomes de arquivo.""" FILENAME_MAX_LENGTH: int = 255 """Comprimento máximo de nome de arquivo."""