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

2.0 KiB

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.