3.7 KiB
3.7 KiB
Uso
Modos de Ejecución
DataTransferV2 puede ejecutarse de tres formas principales: automática, interfaz web y API.
Ejecución Automática
Comando Principal
python main.py
Este comando procesa todos los proyectos activos (PG, FEDURO) con todos sus reportes en una ventana de 3 días (hoy, ayer, anteayer).
Salida Esperada
- Registros de progreso en consola
- Archivos Excel generados en
Reportes/<PROYECTO>/<REPORTE>/ - Notificación WhatsApp con resumen de ejecución
- Logs detallados en
Logs/etl.log
Ejemplo de Salida
Iniciando ETL para proyecto: PG
Procesando reporte: Cobertura - Fecha: 2024-01-15
✅ SUCCESS: Reporte generado y distribuido
...
Resumen PG: Total: 16, Éxito: 15, Errores: 1, Advertencias: 0
Interfaz Web
Iniciar la UI
cd App
python -m flask run
Accede a http://localhost:5000 en tu navegador.
Funcionalidades
- Selección de Proyecto: PG, FEDURO, Corripio
- Selección de Reporte: Lista desplegable con reportes disponibles
- Rango de Fechas: Selector de fecha inicio/fin
- Ejecución Manual: Botón para procesar la selección
Uso
- Selecciona proyecto y reporte
- Elige fechas de inicio y fin
- Haz clic en "Ejecutar ETL"
- Monitorea el progreso y resultados
API REST
Endpoint Principal
GET /api/download
Parámetros
project(requerido): Nombre del proyecto (pg, feduro)task(requerido): Nombre del reportestart_date(requerido): Fecha inicio (YYYY-MM-DD)end_date(requerido): Fecha fin (YYYY-MM-DD)
Ejemplo de Uso
curl "http://localhost:5000/api/download?project=pg&task=Cobertura&start_date=2024-01-01&end_date=2024-01-31"
Respuesta
{
"status": "success",
"data": [
{
"fecha": "2024-01-01",
"campo1": "valor1",
"campo2": "valor2"
}
],
"count": 100
}
Códigos de Estado
200: Éxito400: Parámetros inválidos404: Proyecto/reporte no encontrado500: Error interno
Programación Automática
Usando APScheduler
El código incluye APScheduler para ejecución programada. Para activarlo:
from apscheduler.schedulers.background import BackgroundScheduler
scheduler = BackgroundScheduler()
scheduler.add_job(run_etl_pipeline, 'interval', hours=2)
scheduler.start()
Usando Cron (Linux/macOS)
# Ejecutar cada 2 horas
0 */2 * * * /path/to/env/bin/python /path/to/main.py
Usando Task Scheduler (Windows)
- Crear tarea básica
- Programa:
python.exe - Argumentos:
main.py - Ejecutar cada 2 horas
Monitoreo y Logs
Archivos de Log
Logs/etl.log: Logs del proceso ETLLogs/api.log: Logs de la APILogs/reports.log: Logs de generación de reportes
Base de Datos de Auditoría
Todas las ejecuciones se registran en la tabla ExecutionLog de SQL Server con:
- ID de procedimiento
- Estado (SUCCESS, FAILED, WARNING)
- Mensajes de error
- Timestamps
Reportes Generados
Ubicación
Reportes/
├── FEDURO/
│ ├── Cobertura/
│ │ ├── Cobertura-20240115.xlsx
│ │ └── ...
│ └── ...
└── PG/
├── Checkout/
│ ├── Checkout-20240115.xlsx
│ └── ...
└── ...
Formato
- Tipo: Excel (.xlsx)
- Librería: Pandas + OpenPyXL
- Contenido: Datos tabulares de consultas SQL
Notificaciones
Después de cada proyecto, se envía un resumen via webhook:
✅ PG - Completado
Total: 16, Éxito: 15, Errores: 1
Tiempo: 45 minutos
Estados
- ✅ SUCCESS: Todo correcto
- ⚠️ COMPLETED_WITH_ERRORS: Errores no críticos
- ❌ FAILED: Fallo crítico
- ℹ️ WARNING: Sin datos (ignorados si domingo)