81 lines
3.1 KiB
Markdown
81 lines
3.1 KiB
Markdown
# 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) |