59 lines
2.0 KiB
Markdown
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.
|