3.1 KiB
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)