Files
TransferData-main/Documentacion/Configuracion.md
T
2026-05-09 14:00:04 -04:00

5.1 KiB

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

# 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

TIMEZONES = {
    "central": "America/El_Salvador",      # UTC-6
    "caribbean": "America/Santo_Domingo"   # UTC-4
}

Notificaciones

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

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.

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.

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)

# 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

import os

USERNAME = os.getenv("DB_USER", "default_user")
PASSWORD = os.getenv("DB_PASSWORD", "default_password")

Configuración de Docker

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

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

# 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

# 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

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.