Files
TransferData-main/Documentacion/Uso.md
T
2026-05-09 14:00:04 -04:00

3.7 KiB
Raw Blame History

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

  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

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: É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:

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)

  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)