- Spezza il registro delle decisioni in docs/decisions/DD-XXX.md, con indice - Ripulisce DATABASE.md dalla storia delle migration e aggiunge la sezione Lettura - Riduce PROJECT_STATE.md a una pagina; la procedura di allestimento passa in OPERATIONS.md - Aggiunge OPERATIONS.md, GLOSSARIO.md, trappole note e checklist in ARCHITECTURE.md - Sintetizza la copertura test di badge.md e documenta docs/archive - Allinea AGENTS.md, README.md e la regola Cursor (tolto l'obbligo di develop, in contrasto con DD-019) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2.8 KiB
DD-028 — Soglia minima di campione per Media voto e MVP in home
Data: 9 settembre 2026
Stato: Accettata
Contesto
Un audit della sezione «Colpo d'occhio» in home (index.tsx, StatTile Presenze/Media
voto/MVP) ha trovato che due delle tre statistiche non avevano nessun minimo campionario:
mediePagelle() calcola una media aritmetica pura, così un giocatore con un solo voto da 10
mostrava "10" in home, più alto di un titolare con 40 voti e media 7.2 — lo stesso problema
che il badge Pagellone già risolve con VOTI_MINIMI_PAGELLA (badge.md), ma applicato solo al
badge, non alla StatTile home. Allo stesso modo mvpVintiPerGiocatore()/vincitoriMvp()
assegnavano un MVP di partita anche con un solo voto totale: bastava che un solo giocatore
votasse perché il votato "vincesse" nettamente, senza nessun quorum di partecipazione.
Decisione
- Media voto in home usa la stessa soglia del badge Pagellone: sotto
VOTI_MINIMI_PAGELLA(5) voti ricevuti, la StatTile mostra—invece della media, tramite la funzione puramediaVotoColpoDOcchio()(pagelle.ts), estratta dalla route per restare testabile (DD-020). La funzionemediePagelle()non cambia: il filtro resta lato chiamante, come già faceva il badge. - MVP:
conteggioPartita's aggregazione, tramitevincitoriMvp()emvpVintiPerGiocatore(), richiede ora un quorum minimo di voti totali sulla partita (VOTI_MINIMI_MVP = 2,mvp-voti.ts) prima di assegnare un vincitore, oltre alla regola già esistente del margine netto tra primo e secondo. Un solo voto non basta più a incoronare nessuno, nemmeno in assenza di concorrenza.
Alternative scartate
- Alzare la soglia MVP oltre 2 (es. metà dei convocati) → serve conoscere i convocati dell'evento dentro una funzione che oggi lavora solo sui voti; complessità non giustificata per il gap trovato in audit.
- Lasciare l'MVP senza quorum e limitarsi al fix della Media voto → il problema di fondo (un numero esiguo di voti che decide una statistica mostrata come solida) resterebbe aperto per l'MVP.
Conseguenze
- Alcuni MVP di partita già assegnati con un solo voto totale non contano più nel conteggio
mvpdel giocatore: è una modifica retroattiva al dato mostrato, non solo al calcolo futuro, perchémvpVintiPerGiocatore()deriva sempre il conteggio dai voti grezzi, senza storico persistito a parte. mediePagelle()resta invariata: chi la chiama altrove (profilo, squadra) senza applicare la soglia continua a mostrare la media grezza — non tocca questa decisione, resta il limite già noto in pagelle.md.
Riesame
Se la squadra segnala che il quorum di 2 voti per l'MVP è troppo permissivo o troppo severo, o
se si vuole applicare la stessa soglia di Media voto anche alle StatTile di profilo e squadra.