5.1 KiB
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=productionSECRET_KEY=tu_clave_secretaLOG_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
- Conexión DB falla: Verificar credenciales y firewall
- FTP timeout: Revisar configuración de red y credenciales
- SharePoint error: Validar client_id y permisos en Azure AD
- 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.