Files
CRAPP/docs/modules/serie-presenze.md
T
davide f70430e1bf Retro-documenta i moduli v1.0 mancanti in docs/modules/
Presenze, Serie di presenze, Scout Live, Pagelle, MVP, Badge, Palloni,
Obiettivi di squadra, Infortuni, Notifiche: chiudono il debito di
documentazione tracciato in TODO.md (DD-002). Le sei route API
pubbliche vengono descritte dentro il modulo a cui appartengono.
2026-09-03 15:10:18 +02:00

2.6 KiB

Modulo — Serie di presenze

Stato: implementato solo lato definizione/UI — non calcola valori reali (vedi Limiti noti) File principali: src/lib/serie.ts, src/components/crapp/SerieCard.tsx


Obiettivo

Motivare la costanza dei giocatori mostrando "serie" (streak) di comportamenti positivi consecutivi — presenza agli allenamenti, presenza alle partite, risposta entro 24 ore alla convocazione — con traguardi progressivi, sullo stile delle app fitness. È anche uno dei requisiti di sblocco di alcuni badge e di un obiettivo di squadra.


Dati

Non esiste una tabella dedicata: le serie sono campi (serieAllenamenti, seriePartite, serieConferme) del tipo Giocatore assemblato da useRosa() (src/lib/rosa.ts).


Implementazione

  • src/lib/serie.ts — definizione dei 3 tipi di serie (serieDefs, con label, descrizione e 4 traguardi crescenti ciascuna), funzione pura aggiornaSerie(valore, onorato) (regola: +1 se onorato, altrimenti azzeramento solo di quella serie), statoSerie() (progresso e messaggio verso il prossimo traguardo), serieGiocatore()/serieMigliore() (aggregatori per la UI).
  • src/components/crapp/SerieCard.tsxSerieGriglia (vista completa nel profilo) e SerieHome (riepilogo compatto in home, solo la serie più alta).
  • src/routes/profilo.tsx — monta SerieGriglia nella sezione "Serie di presenze".

Limiti noti

La funzione aggiornaSerie() non è invocata da nessun punto del codice. I tre campi che alimentano la UI (serieAllenamenti, seriePartite, serieConferme, oltre a streak) sono impostati a 0 fisso in useRosa() (src/lib/rosa.ts) e nel seed storico di crapp-data.ts. Di conseguenza, con i dati reali della rosa:

  • le card in SerieGriglia mostrano sempre progresso 0;
  • i badge che dipendono dalle serie ("Sempre in palestra", "Risposta lampo", il segreto "Mai un forfait") non possono mai sbloccarsi;
  • l'obiettivo di squadra "Continuità di squadra" (≥3 allenamenti consecutivi per almeno 12 giocatori) resta permanentemente a 0/12.

Il modulo è quindi completo lato definizione e UI, ma funzionalmente inerte: manca il collegamento che calcoli le serie da risposte_presenze e le derivi per ogni giocatore.


Evoluzioni possibili

  • Calcolare le tre serie a partire da risposte_presenze (ordinando gli eventi per data e applicando aggiornaSerie() in sequenza), lato client in useRosa() o come valore derivato lato server.
  • Una volta corretto, verificare che i badge e l'obiettivo collegati si sblocchino davvero.