Ir al contenido

IA (Anthropic SDK)

CÉNIT usa el SDK de Anthropic (@anthropic-ai/sdk) en tres acciones server del dashboard. Modelo único: claude-haiku-4-5-20251001. Toda llamada vive en el servidor — la key nunca llega al browser. Una de las tres acciones (Risk Advisor) está gated a planes pro y enterprise; las otras dos están disponibles para todos.

CÉNIT no es una “AI-first” app: la IA es asistente en flujos específicos donde aporta valor real. Lo que efectivamente hace IA hoy:

  • Parser de PDFs de partidos — el PF carga un PDF de informe oficial y Claude extrae stats por jugador a JSON estructurado. Disponible en todos los planes.
  • Risk Advisor — recomendación IA — Claude redacta una recomendación de manejo de riesgo en base a ACWR, Hooper, dolor y lesiones del jugador. Solo pro y enterprise; en esencial el módulo entrega texto estático determinístico.
  • Predicción de carga multi-métrica — pese al nombre, es cálculo determinístico (chronic_28d / acute_7d / ACWR / recomendación parametrizada por métrica). No usa IA; se documenta acá porque el dashboard lo presenta junto al resto.

Lo que NO hace IA (pero está prometido en lib/plans.ts): ai_post_injury_analysis, ai_anomaly_detection, ai_natural_language_insights. Ver Plans y billing.

Parser de PDFs — app/dashboard/rendimiento/actions.ts

Sección titulada «Parser de PDFs — app/dashboard/rendimiento/actions.ts»

parseTextAction(pdfText, squadNames) recibe texto extraído del PDF (via pdfjs-dist / pdf-parse) y la lista de nombres del plantel. Claude devuelve JSON con métricas por jugador (distancia, HSR, pases, etc.). El staff revisa el JSON antes de persistir.

Risk Advisor — app/dashboard/riesgo/actions.ts

Sección titulada «Risk Advisor — app/dashboard/riesgo/actions.ts»

getRecommendation(playerRisk) resuelve el plan desde organizations.plan del usuario autenticado y bifurca:

  • esencial → función recommendation() con texto estático basado en thresholds.
  • pro / enterprise → llamada a Claude (max_tokens: 200) con el contexto del jugador. Devuelve una recomendación en lenguaje natural. Si Anthropic falla o ANTHROPIC_API_KEY no está configurada, cae al texto estático (degradación grácil).

Predicción multi-métrica — app/dashboard/carga/actions.ts

Sección titulada «Predicción multi-métrica — app/dashboard/carga/actions.ts»

getPredictionByMetric(metric) (sin IA) computa para distance, hsr, sprint o hmld: chronic_28d, acute_7d, ACWR y recomendación parametrizada. Distancia se hidrata server-side al cargar la página; las otras tres métricas se fetch on-demand al activar el tab.

ANTHROPIC_API_KEY en Workers Secrets. Si falta:

  • Parser de PDFs → falla con error visible al usuario.
  • Risk Advisor → cae al texto estático (degradación grácil).

claude-haiku-4-5-20251001 para las tres llamadas. Haiku está elegido por costo y latencia; el output esperado es estructurado (parser) o texto corto (Risk Advisor).

  • No se envían datos a Anthropic más allá del contexto necesario (stats del jugador para Risk Advisor, texto del PDF para parser).
  • Sentry filtra payloads de IA si llegan a logs (ver Sentry — scrubbing).
  • Plans y billing — gating de risk_advisor por plan.
  • Sentry — errores de la llamada IA se capturan con stack trace.
  • Sin streaming: el dashboard espera el response completo. Para Risk Advisor está bien (texto corto); para Parser puede tardar varios segundos en PDFs grandes.
  • 3 features de IA prometidas e inexistentesai_post_injury_analysis, ai_anomaly_detection, ai_natural_language_insights. Decisión de producto pendiente.
  • Costo no monitoreado en producto — no hay rate-limit por org ni dashboard de gasto IA. Lo controla Anthropic via el budget de la API key.