"""Constantes globales de la aplicación.""" from pathlib import Path # Rutas base APP_DIR = Path(__file__).parent.parent DATA_DIR = APP_DIR / "data" LOGS_DIR = APP_DIR / "logs" # Base de datos DB_PATH = DATA_DIR / "app.db" # Estados de jobs class JobStatus: QUEUED = "queued" EXTRACTING = "extracting" RESTORING = "restoring" CLEANING = "cleaning" COMPLETED = "completed" FAILED = "failed" FAILED_RESTART = "failed_restart" CANCELLED = "cancelled" # Niveles de log class LogLevel: DEBUG = "DEBUG" INFO = "INFO" WARNING = "WARNING" ERROR = "ERROR" CRITICAL = "CRITICAL" # Tipos de paso de job class StepType: STABILITY_CHECK = "stability_check" NODE_MAPPING = "node_mapping" EXTRACT = "extract" LOCATE_BAK = "locate_bak" SQL_CONNECT = "sql_connect" FILELIST = "filelist" RESTORE = "restore" CLEANUP = "cleanup" # Configuración por defecto DEFAULT_CONFIG = { "paths": { "input_folder": "", "processed_folder": "", "failed_folder": "", "extract_folder": "", "data_sql_folder": "", "seven_zip_exe": "" }, "sql": { "server": "localhost", "use_windows_auth": True, "username": "", "password_encrypted": "" }, "concurrency": { "extract_workers": 1, "restore_workers": 1 }, "stability": { "check_enabled": True, "check_interval_seconds": 5, "stable_duration_seconds": 10, "use_ready_marker": False }, "timeouts": { "extract_minutes": 30, "restore_minutes": 60 }, "retries": { "max_attempts": 3, "retry_delay_seconds": 60 }, "features": { "dry_run_mode": False, "auto_scan_enabled": True, "scan_interval_seconds": 30 } }