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.
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
# 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](badge.md) e di un [obiettivo di squadra](obiettivi-squadra.md).
|
||||
|
||||
---
|
||||
|
||||
## 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.tsx` — `SerieGriglia` (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.
|
||||
Reference in New Issue
Block a user