Ir al contenido

Historial de riesgo

La sub-página /dashboard/riesgo/historial muestra una tarjeta por lesión registrada en los últimos 6 meses, con sparkline de los 14 días previos y los indicadores el día exacto de la lesión. Sirve para validar retrospectivamente si el Risk Advisor anticipó cada lesión y para auditar la calibración de los thresholds.

  • Problema: “¿el Risk Advisor sirve o es ruido?” — el club necesita ver casos reales con datos.
  • Casos de uso: revisión semanal por el HoP, justificación al cuerpo técnico cuando se discute por qué se bajó la carga.
  • Diferenciador: integra automáticamente lesiones + snapshots de riesgo, sin que el PF tenga que cruzar planillas.
  • Ruta /dashboard/riesgo/historial. Disponible para roles que ya acceden al Risk Advisor.
  • Bajo plan esencial la sub-página es visible pero con datos limitados — el análisis post-lesión guiado en pesos sigue gated.
  • Al entrar, el sistema busca todas las lesiones de los últimos 180 días (max 30 cards).
  • Por cada lesión, traer los snapshots risk_snapshots desde injury_date - 14d hasta injury_date.
  • Renderiza una card por lesión con:
    • Header: nombre, fecha, parte del cuerpo, severidad.
    • Sparkline SVG del score total en la ventana de 14 días. Punto rojo al final indica el día de la lesión.
    • Chips KPI con valor + nivel (verde/amarillo/rojo) de ACWR distancia, ACWR HSR, Hooper, dolor y score total el día de la lesión.
    • Badge “Alerta roja” si alguno de los indicadores arriba estaba en rojo ese día — útil para auditar verdaderos positivos.
  • La retención de risk_snapshots depende del cron compute_daily_risk_snapshots (06:00 UTC). Si el cron no corrió, faltan días en el sparkline y aparece “Sin datos de riesgo para este período”.
  • Card sin sparkline: menos de 2 snapshots en la ventana — o bien el jugador estaba inactivo, o el cron no corrió, o la lesión es muy reciente sin historial GPS.
  • Card sin chips: la lesión cayó en día sin snapshot — no se pudo capturar el estado exacto.

Player surface: N/A. Staff-only.

Una fila por jugador por día. Columnas leídas en esta página:

  • snapshot_date, total_score — para la curva.
  • acwr_dt_value/level, acwr_hsr_value/level — distancia y alta intensidad.
  • hooper_value/level, pain_value/level — wellness.
  • Desde migration-103 se persisten también acwr_sprint_value/level y acwr_hmld_value/level (no rendereados en historial por ahora, sí en breakdown del score).

compute_daily_risk_snapshots() (función SQL, SECURITY DEFINER) corre por pg_cron a las 06:00 UTC. Itera todos los jugadores activos, llama a las RPCs ACWR centralizadas (distancia, HSR, sprint, HMLD), a get_vmax_pct_batch, y persiste el snapshot del día con thresholds dinámicos leídos de organizations.risk_*.

  • Lesiones (injuries) — fuente de las cards. Solo lesiones con injury_date no nulo entran al análisis.
  • Risk Advisor principal — comparte tablas y RPCs.
  • Solo muestra lesiones, no enfermedades ni indisponibilidades por otra causa.
  • No hay filtro por jugador, posición o tipo de lesión — vista agregada solamente.
  • No exporta a PDF — vista pantalla únicamente.