first commit
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user