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>
60 lines
2.4 KiB
Markdown
60 lines
2.4 KiB
Markdown
# 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](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](badge.md) 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.
|