Files
CRAPP/docs/modules/obiettivi-squadra.md
T
davideandClaude Sonnet 5 2b30dd4708 Rende dinamico il mese degli obiettivi di squadra invece di una costante fissa
"Presenze del mese" e "evento di squadra al mese" erano ancorati a una costante
MESE = "2026-08": passato agosto restavano congelati sul mese scorso invece di
azzerarsi a ogni cambio mese. Ora il mese di riferimento (e per il primo anche
titolo e scadenza) segue la data corrente, con un parametro `oggi` iniettabile
per test deterministici. Aggiunti unit test e un integration test end-to-end
contro il database locale.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-08 11:00:31 +02:00

3.7 KiB

Modulo — Obiettivi di squadra

Stato: implementato (v1.0), con target stagionali da aggiornare a mano (i mesi di riferimento sono ora dinamici) File principali: src/lib/obiettivi.ts, src/lib/rosa.ts (useObiettivi())


Obiettivo

Mostrare traguardi collettivi (non individuali) che avanzano con il contributo di tutta la rosa — presenze, risposte alle convocazioni, pagelle, risultati di campionato — per motivare comportamenti di squadra oltre alla singola prestazione.


Dati

Nessuna tabella dedicata: ogni obiettivo è una funzione pura in obiettivi.ts che legge dati già aggregati altrove (risposte_presenze, pagelle_voti, i risultati ufficiali CSI, le serie).


Obiettivi definiti

Obiettivo Calcolo Target Fonte
90% presenze del mese risposte presente/ritardo sugli eventi del mese corrente (dinamico) 90% risposte_presenze
Tutti rispondono alle convocazioni risposte totali / eventi possibili 90% risposte_presenze
250 presenze complessive somma presenze di tutta la rosa 250 aggregato da useRosa()
Media pagelle da 7.5 media di squadra 7.5 pagelle_voti
200 pagelle compilate conteggio voti 200 pagelle_voti
Continuità di squadra giocatori con ≥3 allenamenti consecutivi 12 serieAllenamenti
1 / 5 / 10 vittorie in campionato partite vinte da dati CSI ufficiali 1/5/10 modulo Collegamento CSI
1 evento di squadra al mese eventi di tipo "evento" nel mese corrente (dinamico) 1 eventi_app

Mostrati in squadra.tsx (elenco completo con barra di progresso) e in index.tsx (home: il primo obiettivo non completato). Un obiettivo che supera il 90% genera anche una notifica smart (notifiche-smart.ts).


Limiti noti

  • "Continuità di squadra" dipende da serieAllenamenti (vedi Serie di presenze), calcolato sui dati reali: un evento passato senza risposta vale come assenza e azzera la serie, quindi l'obiettivo misura anche quanto la squadra risponde alle convocazioni, non solo la presenza.
  • Le vittorie di campionato dipendono dal parsing HTML del portale CSI: se quel parsing si rompe, questi tre obiettivi restano a 0% anche a fronte di vittorie reali.
  • I target (250 presenze, 200 pagelle, ecc.) sono costanti fisse, da rivedere manualmente a ogni stagione.

Obiettivi mensili — mese dinamico

"90% presenze del mese" e "1 evento di squadra al mese" si azzerano automaticamente a ogni cambio mese: il mese di riferimento è calcolato dalla data corrente (fuso Europe/Rome), non più una costante fissa. Per il primo, titolo ("90% di presenze ad agosto" / "a settembre" / ...) e scadenza (ultimo giorno del mese) seguono di conseguenza. Per i test, obiettiviSquadra/ obiettiviOrdinati accettano un terzo parametro opzionale oggi: Date per iniettare una data deterministica. Coperti sia da unit test (test/unit/obiettivi.test.ts, funzione pura) sia da un integration test end-to-end (test/integration/obiettivi.test.ts, scrive/rilegge righe vere su eventi_app e risposte_presenze sullo stack Supabase locale).