contaInfortuni()/contaRitardi() leggevano tutta la mappa presenze senza guardare la data dell'evento: un giocatore può segnarsi infortunato o in ritardo anche su un evento non ancora avvenuto (l'UI lo permette finché l'evento non è passato), e quel conteggio arrivava subito ai badge segreti "Infermeria" e "Ritardi". Ora filtrano su data < oggi, come già fa eventiContanoPresenze() per le statistiche di presenza: con l'avanzare della data reale l'evento prima futuro entra da solo nel conteggio. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2.4 KiB
Modulo — Infortuni
Stato: implementato in forma minima (solo conteggio)
File principali: src/lib/infortuni.ts
Obiettivo
Tracciare quanti eventi (allenamenti o partite) un giocatore ha saltato per infortunio,
riusando lo stato di presenza infortunato già registrato per le convocazioni — nessun
modulo di gestione infortuni a sé stante.
Dati
Nessuna tabella dedicata: il dato vive interamente dentro risposte_presenze, come uno dei
valori possibili dell'enum Stato (presente, assente, forse, ritardo, infortunato).
Implementazione
contaStato()/contaInfortuni() (infortuni.ts) contano, per ciascun giocatore, quante
volte compare lo stato infortunato nella mappa presenze già in cache (nessuna query
aggiuntiva). Lo stesso meccanismo, con contaRitardi(), conta i ritardi. Il risultato
alimenta il campo infortuni del Giocatore in useRosa().
Un evento con data futura o odierna non viene contato, anche se la risposta è già registrata
(l'UI permette di segnarsi infortunato o in ritardo su un evento non ancora passato): il
conteggio filtra su data < oggi, come già fa eventiContanoPresenze() in
presenze.md, e cresce da solo con l'avanzare della data reale senza bisogno di
altro codice.
Visibile in UI solo indirettamente, tramite il badge segreto "Cliente VIP dell'Infermeria" (sbloccato con almeno 3 infortuni): non esiste uno StatTile dedicato nel profilo che mostri il numero di infortuni come statistica di superficie.
Limiti noti
- Nessuna durata o periodo tracciato: è solo un conteggio di eventi con quello stato, non un inizio/fine infortunio.
- Il conteggio dipende dal fatto che qualcuno imposti correttamente lo stato "infortunato"
invece di "assente": nessuna validazione o promemoria lo garantisce. Sulle card degli
eventi extra-campo (
tipo: "evento") l'opzione non è proposta in UI. - Poco visibile per valori bassi (1-2), perché emerge solo tramite un badge a soglia 3.
conInfortuni(), una funzione di merge alternativa nello stesso file, non risulta usata da nessuna parte del codice attuale — probabile residuo non collegato.
Evoluzioni possibili
- Uno StatTile dedicato nel profilo, oltre al badge segreto.
- Se servisse un vero tracciamento (durata, tipo di infortunio), servirebbe una tabella dedicata: oggi il modulo copre solo il conteggio.