"""
Configuraciones del Sistema - MVP v1.0
"""

import os
import logging
from datetime import datetime
from dotenv import load_dotenv

# Cargar variables de entorno desde .env
load_dotenv('.env')

# Configuración de Base de Datos
DB_CONFIG = {
    'host': os.getenv('DB_HOST', 'localhost'),
    'port': int(os.getenv('DB_PORT', 3306)),
    'user': os.getenv('DB_USER'),
    'password': os.getenv('DB_PASSWORD'),
    'retry_attempts': int(os.getenv('DB_RETRY_ATTEMPTS', 3)),
    'retry_delay': int(os.getenv('DB_RETRY_DELAY', 5))
}

# Niveles de Log
LOG_LEVEL = os.getenv('LOG_LEVEL', 'INFO')
LOG_FORMAT = '%(asctime)s [%(levelname)s] %(message)s'

# Configuración de procesamiento
PROCESS_INTERVAL = 15  # minutos
DATA_RETENTION_DAYS = 90  # días
MAINTENANCE_HOUR = 3  # hora del día para mantenimiento

# Configuración de Performance
REALTIME_BATCH_SIZE = int(os.getenv('REALTIME_BATCH_SIZE', 1000))
STATISTICS_BATCH_SIZE = int(os.getenv('STATISTICS_BATCH_SIZE', 2000))
DB_POOL_SIZE = int(os.getenv('DB_POOL_SIZE', 5))
DB_POOL_MAX_OVERFLOW = int(os.getenv('DB_POOL_MAX_OVERFLOW', 10))

# Timeouts y reintentos
DB_OPERATION_TIMEOUT = 30  # segundos
PROCESS_TIMEOUT = 300  # segundos
MAX_RETRY_ATTEMPTS = 3

# Paths
LOG_DIR = os.getenv('LOG_DIR', 'logs')
DATA_DIR = os.getenv('DATA_DIR', 'data')

# Asegurar que existan los directorios necesarios
for directory in [LOG_DIR, DATA_DIR]:
    if not os.path.exists(directory):
        os.makedirs(directory)

# Verificar credenciales requeridas
if not all([DB_CONFIG['user'], DB_CONFIG['password']]):
    raise ValueError("DB_USER y DB_PASSWORD deben estar configurados en .env")

# Configurar logging
logging.basicConfig(
    level=getattr(logging, LOG_LEVEL),
    format=LOG_FORMAT,
    handlers=[
        logging.StreamHandler(),
        logging.FileHandler(
            os.path.join(LOG_DIR, f"{datetime.now():%Y%m%d}_app.log")
        )
    ]
) 