Files
2026-05-09 14:00:04 -04:00

188 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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/<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
```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)