# 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)