Files
VoxPopuli/METRICS_INTEGRATION_SUMMARY.md
2026-05-04 17:37:08 -06:00

59 lines
2.0 KiB
Markdown

# API de Métricas y Analítica - Resumen de Implementación
## ✅ Integración Completada
### Estructura Creada
**Dominio:**
- `src/domain/metrics.py` - Modelos: `Metric`, `DailyStats`, `AnalyticsReport`, `EventType`
**Aplicación:**
- `src/application/ports/metrics_repository.py` - Interfaz del repositorio
- `src/application/services/metrics_services.py` - Lógica de negocio
**Infraestructura:**
- `src/infrastructure/adapters/persistence/metrics_repository_postgres.py` - Implementación PostgreSQL
- `src/infrastructure/api/metrics/` - API REST FastAPI
- `app.py` - Factory de la aplicación
- `router.py` - Endpoints
- `schemas.py` - Modelos Pydantic
**Consumidor:**
- `src/consumers/metrics_consumer.py` - Listener RabbitMQ para todos los eventos
### Base de Datos
**PostgreSQL añadido al docker-compose:**
- Host: localhost:5432
- DB: voxpopuli_metrics
- Usuario: voxpopuli / voxpopuli_pass
- Tabla `metrics` creada automáticamente
### Integración sin Cambios Significativos
**main.py** - Añadida API y consumer de métricas sin modificar APIs existentes
**docker-compose.yaml** - PostgreSQL añadido sin cambiar servicios existentes
**requirements.txt** - Añadido psycopg2-binary
✅ RabbitMQ NO añadido al docker-compose (usa instancias previas)
### Endpoints API (Puerto 8004)
```
POST /metrics/record - Registrar métrica
GET /metrics/report - Reporte de últimos N días
GET /metrics/daily-stats - Estadísticas diarias
GET /metrics/summary - Resumen de eventos por rango
GET /metrics/health - Health check
GET /docs - Swagger UI
```
### Eventos Automáticos Capturados
El consumer escucha automáticamente:
- `users_queue` → user_created, user_updated, user_deleted
- `reports_queue` → report_created, report_resolved
- `notifications_queue` → notification_sent
- `moderations_queue` → moderation_completed
Cada evento genera una métrica en PostgreSQL con timestamp, usuario_id, metadata y tipo de evento.