# Configuración ## Archivos de Configuración La configuración está organizada en archivos separados por proyecto en `App/Config/`. ## GeneralConfig.py Configuraciones globales aplicables a todos los proyectos. ### Base de Datos ```python # SQL Server Connection SERVER = "sql.glmanalytics.com" DATABASES = { "pg": {"id": "00080001", "name": "glm_pg"}, "feduro": {"id": "00010007", "name": "IS001"} } USERNAME = "tu_usuario" PASSWORD = "tu_password" ``` ### Zonas Horarias ```python TIMEZONES = { "central": "America/El_Salvador", # UTC-6 "caribbean": "America/Santo_Domingo" # UTC-4 } ``` ### Notificaciones ```python WHATSAPP_WEBHOOK = "https://automation.glmanalytics.com/webhook/wsp-notifcation" EMAIL_CONFIG = { "smtp_server": "smtp.gmail.com", "port": 587, "username": "tu_email@gmail.com", "password": "tu_password" } ``` ### FTP Global ```python FTP_CONFIG = { "host": "rcomhost.com", "username": "tu_usuario", "password": "tu_password", "base_path": "/www/TranferData_APP_PYTHON" } ``` ## Configuración por Proyecto ### pgConfig.py Configuración específica para Pentagono Group. ```python class PGConfig: name = "pg" timezone = "central" reports = [ {"name": "Cobertura", "ftp": True, "sharepoint": True, "n8n": False}, {"name": "Checkout", "ftp": True, "sharepoint": False, "n8n": True}, # ... más reportes ] sharepoint_config = { "site_url": "https://pgone.sharepoint.com", "client_id": "tu_client_id", "tenant_id": "tu_tenant_id", "folder_mappings": { "Cobertura": "/sites/PGReports/Cobertura", "Checkout": "/sites/PGReports/Checkout" } } ``` ### feduroConfig.py Configuración para proyecto FEDURO. ```python class FeduroConfig: name = "feduro" timezone = "caribbean" reports = [ {"name": "Cobertura", "ftp": False, "sftp": True, "n8n": False}, # ... más reportes ] sftp_config = { "host": "tu-azure-container-instance", "username": "tu_usuario", "password": "tu_password", "port": 22, "path_mappings": { "Cobertura": "/feduro/reports/cobertura", "Checkout": "/feduro/reports/checkout" } } ``` ## Flags de Distribución Cada reporte puede configurarse para múltiples destinos: - **ftp:** Subida a servidor FTP - **sftp:** Subida a servidor SFTP (Azure) - **sharepoint:** Subida a SharePoint/OneDrive - **n8n:** Trigger de webhook N8N ## Credenciales Seguras ### Variables de Entorno (Recomendado) ```bash # Linux/macOS export DB_USER="usuario_seguro" export DB_PASSWORD="password_seguro" export SHAREPOINT_CLIENT_ID="client_id_seguro" # Windows set DB_USER=usuario_seguro set DB_PASSWORD=password_seguro ``` ### Modificar Código para Usar Variables ```python import os USERNAME = os.getenv("DB_USER", "default_user") PASSWORD = os.getenv("DB_PASSWORD", "default_password") ``` ## Configuración de Docker ### Dockerfile ```dockerfile FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . EXPOSE 5000 CMD ["python", "main.py"] ``` ### docker-compose.yml ```yaml version: '3.8' services: datatransfer: build: . ports: - "5000:5000" environment: - DB_USER=${DB_USER} - DB_PASSWORD=${DB_PASSWORD} volumes: - ./Reportes:/app/Reportes - ./Logs:/app/Logs ``` ## Validación de Configuración ### Verificar Conexiones ```python # Probar conexión DB from App.Utils.db_utils import DatabaseManager db = DatabaseManager() conn = db.get_connection("pg") # Debería conectar sin errores # Probar FTP from App.Utils.ftp_utils import FTPManager ftp = FTPManager() ftp.connect() # Debería conectar sin errores ``` ### Validar Reportes ```python # Verificar que todos los reportes tengan configuraciones válidas for config in [PGConfig, FeduroConfig]: for report in config.reports: assert "name" in report assert any([report.get("ftp"), report.get("sftp"), report.get("sharepoint"), report.get("n8n")]) ``` ## Configuración de Producción ### Variables de Entorno - `FLASK_ENV=production` - `SECRET_KEY=tu_clave_secreta` - `LOG_LEVEL=INFO` ### Configuración de Logging ```python LOGGING_CONFIG = { "version": 1, "formatters": { "detailed": { "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s" } }, "handlers": { "file": { "class": "logging.FileHandler", "filename": "Logs/app.log", "formatter": "detailed" } }, "root": { "level": "INFO", "handlers": ["file"] } } ``` ## Troubleshooting ### Problemas Comunes 1. **Conexión DB falla:** Verificar credenciales y firewall 2. **FTP timeout:** Revisar configuración de red y credenciales 3. **SharePoint error:** Validar client_id y permisos en Azure AD 4. **SFTP falla:** Confirmar host y puerto de Azure Container Instance ### Logs de Configuración Los errores de configuración se registran en `Logs/etl.log` con mensajes descriptivos.