# 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.