first commit

This commit is contained in:
Eidan T.
2026-05-09 14:00:04 -04:00
commit e0ec11977c
42 changed files with 4596 additions and 0 deletions
+81
View File
@@ -0,0 +1,81 @@
# 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)