first commit
This commit is contained in:
@@ -0,0 +1,188 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user