# Uso ## Modos de Ejecución DataTransferV2 puede ejecutarse de tres formas principales: automática, interfaz web y API. ## Ejecución Automática ### Comando Principal ```bash 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///` - 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 ```bash 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 1. Selecciona proyecto y reporte 2. Elige fechas de inicio y fin 3. Haz clic en "Ejecutar ETL" 4. 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 reporte - `start_date` (requerido): Fecha inicio (YYYY-MM-DD) - `end_date` (requerido): Fecha fin (YYYY-MM-DD) ### Ejemplo de Uso ```bash curl "http://localhost:5000/api/download?project=pg&task=Cobertura&start_date=2024-01-01&end_date=2024-01-31" ``` ### Respuesta ```json { "status": "success", "data": [ { "fecha": "2024-01-01", "campo1": "valor1", "campo2": "valor2" } ], "count": 100 } ``` ### Códigos de Estado - `200`: Éxito - `400`: Parámetros inválidos - `404`: Proyecto/reporte no encontrado - `500`: Error interno ## Programación Automática ### Usando APScheduler El código incluye APScheduler para ejecución programada. Para activarlo: ```python from apscheduler.schedulers.background import BackgroundScheduler scheduler = BackgroundScheduler() scheduler.add_job(run_etl_pipeline, 'interval', hours=2) scheduler.start() ``` ### Usando Cron (Linux/macOS) ```bash # Ejecutar cada 2 horas 0 */2 * * * /path/to/env/bin/python /path/to/main.py ``` ### Usando Task Scheduler (Windows) 1. Crear tarea básica 2. Programa: `python.exe` 3. Argumentos: `main.py` 4. Ejecutar cada 2 horas ## Monitoreo y Logs ### Archivos de Log - `Logs/etl.log`: Logs del proceso ETL - `Logs/api.log`: Logs de la API - `Logs/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 ### WhatsApp 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)