Files
2026-05-09 14:00:04 -04:00

3.1 KiB

Arquitectura

Descripción General

DataTransferV2 sigue una arquitectura modular basada en el patrón ETL (Extract-Transform-Load), con separación clara de responsabilidades en capas.

Tecnologías Principales

  • Backend: Python 3.x con Flask
  • Base de Datos: SQL Server (pyodbc)
  • Procesamiento de Datos: Pandas, OpenPyXL
  • Distribución: FTP (ftplib), SFTP (paramiko), SharePoint (office365), N8N webhooks
  • Notificaciones: WhatsApp via webhooks
  • Programación: APScheduler
  • Contenedorización: Docker, Docker Compose

Estructura de Directorios

DataTransferV2/
├── main.py                 # Punto de entrada principal
├── main2.py                # Versión alternativa
├── App/
│   ├── Config/            # Configuraciones por proyecto
│   ├── Services/          # Servicios core (ETL, API, UI)
│   ├── Utils/             # Utilidades (DB, FTP, SFTP, etc.)
│   ├── Models/            # Modelos de datos (vacío actualmente)
│   ├── Static/            # Recursos estáticos para UI
│   └── Templates/         # Plantillas HTML para UI
├── requirements.txt       # Dependencias Python
├── Dockerfile             # Configuración Docker
├── docker-compose.yml     # Orquestación de contenedores
├── Tests/                 # Pruebas
├── Logs/                  # Archivos de log
└── Reportes/              # Reportes generados

Componentes Principales

Capa de Configuración

  • GeneralConfig.py: Configuraciones globales (DB, notificaciones, zonas horarias)
  • pgConfig.py: Configuración específica para proyecto PG
  • feduroConfig.py: Configuración para proyecto FEDURO
  • corripioConfig.py: Plantilla para proyecto Corripio

Capa de Servicios

  • etl_service.py: Motor de orquestación ETL
  • api_service.py: Endpoints REST API
  • ui_service.py: Interfaz web Flask

Capa de Utilidades

  • db_utils.py: Gestor de conexiones y consultas SQL Server
  • report_utils.py: Generador de reportes Excel
  • ftp_utils.py: Cliente FTP con reintentos
  • sftp_utils.py: Cliente SFTP para Azure
  • sharepoint_utils.py: Integración con SharePoint
  • notification_utils.py: Envío de notificaciones WhatsApp

Patrón de Diseño

Patrón Manager

Cada utilidad sigue el patrón Manager (DatabaseManager, FTPManager, etc.) para encapsular lógica específica.

Patrón Pipeline

El flujo ETL sigue un pipeline claro: Extract → Transform → Load, con manejo de errores resiliente.

Configuración Centralizada

Configuraciones separadas por proyecto permiten aislamiento y escalabilidad.

Escalabilidad y Rendimiento

  • Procesamiento Paralelo: Múltiples reportes procesados en secuencia
  • Conexiones Pooling: Reutilización de conexiones DB
  • Reintentos Automáticos: Para fallos en transferencias
  • Logging Estructurado: Para monitoreo y debugging

Seguridad

  • Autenticación Bearer tokens
  • Credenciales en configuración (considerar variables de entorno)
  • Conexiones encriptadas (SFTP, HTTPS)