first commit

This commit is contained in:
Eidan T.
2026-05-09 14:00:04 -04:00
commit e0ec11977c
42 changed files with 4596 additions and 0 deletions
+188
View File
@@ -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)