188 lines
3.7 KiB
Markdown
188 lines
3.7 KiB
Markdown
# 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) |