Files
CRAPP/docs/modules/profilo-giocatore.md
T
davideandClaude Opus 5 822180bffc Riscrive AGENTS.md e riallinea la documentazione allo stato reale.
I riferimenti ai documenti in AGENTS.md erano rotti: una venticinquina di link
nella forma docs/[README.md](http://README.md), che spezzavano il nome del file
a meta e puntavano a domini inesistenti. Ora sono percorsi relativi verificati,
con CHANGELOG.md e DESIGN_DECISIONS.md sotto docs/ e PROJECT_STATE.md in root.

Tolte da AGENTS.md le sezioni Architettura, Documentazione e Struttura della
documentazione: duplicavano ARCHITECTURE.md e docs/README.md con uno stack ormai
parziale, contro la regola "ogni informazione ha una sola casa" che docs/README.md
stesso impone. Aggiunti invece i comandi, bun e la guardia minimumReleaseAge:
Codex e Cursor leggono solo AGENTS.md e non avevano modo di sapere come si
verifica una modifica. Scritta la checklist "Fine lavoro" che CLAUDE.md citava
senza che esistesse.

Nuova regola: chi aggiunge o modifica una funzione scrive o aggiorna il test nello
stesso lavoro, i test devono essere verdi e la doc del modulo va aggiornata se il
comportamento cambia (DD-020). Serve perche con main come branch di lavoro non
c'e piu un ambiente di prova tra il codice e i giocatori.

Il flusso git documentato non descriveva piu la realta: main e arrivato a 43
commit di vantaggio su develop, rimasto fermo. DD-003 e ora sostituita da DD-019:
il branch dei commit lo decide l'utente, l'assistente al massimo consiglia un
branch dedicato e non committa, non pusha e non apre PR di propria iniziativa.

Allineati di conseguenza ARCHITECTURE.md (sezione branch), README.md (flusso,
install con bun, comandi di test e lint), ROADMAP.md e TODO.md (le voci spuntate
sono in produzione, non su develop) e PROJECT_STATE.md (auth e profilo giocatore
in produzione, 20 migration fino a M9, passaggi 1-3 e 5 fatti).

Corretti poi sei disallineamenti tra documentazione e codice, ognuno verificato
sul sorgente:

- badge.md e obiettivi-squadra.md dicevano che le serie sono inerti e che
  serieAllenamenti e sempre 0, quindi badge e obiettivo "Continuita di squadra"
  non sbloccabili. Falso da 7237e8f: presenze.ts:48 le calcola e rosa.ts:64-67 le
  attacca al Giocatore. Il limite che resta e un altro, ora scritto: risposto_il
  non e ricostruibile prima di m9, quindi sulle risposte vecchie serieConferme e
  un'approssimazione.
- TODO.md e PROJECT_STATE.md davano il tracciamento tesseramento CSI come da
  fare, mentre ROADMAP, CHANGELOG e DATABASE lo davano per fatto. Lo e:
  admin.tsx:264-278 registra numero e data, :472 mostra Tesserato/Da tesserare,
  :676 il contatore.
- collegamento-csi.md indicava il check di parsing in src/lib/csi-core.test.ts;
  sta in test/unit/csi-core.test.ts, in src/lib non esiste nessun .test.ts.
- profilo-giocatore.md annunciava cinque aree del profilo e ne elencava sette.
- "Segnala un bug" e "Suggerisci una nuova funzionalita" (profilo.tsx:259-276,
  commit 72a9864) non erano documentati da nessuna parte, contro DD-002: ora
  stanno in profilo-giocatore.md e nel CHANGELOG.

npm run test: 28/28 file ok. npm run lint: 12 problemi, identici a prima di
questa modifica e tutti in src/, non toccato qui.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 23:24:22 +02:00

6.4 KiB

Modulo — Profilo Giocatore

Obiettivo

Il modulo "Profilo Giocatore" raccoglie tutte le informazioni personali, amministrative e documentali di ciascun membro della squadra.

L'obiettivo è centralizzare in un'unica schermata tutti i dati necessari sia al giocatore sia agli amministratori, eliminando la gestione tramite chat, documenti cartacei e fogli Excel.

Utenti

Giocatore

Può:

  • visualizzare il proprio profilo
  • modificare i propri dati personali
  • aggiornare il certificato medico
  • aggiornare i documenti
  • caricare le immagini richieste

Amministratore

Può:

  • visualizzare il profilo di tutti i giocatori
  • scaricare documenti e certificati
  • esportare i dati necessari al tesseramento CSI
  • verificare lo stato di completamento dei profili
  • modificare i dati squadra di qualsiasi giocatore (nome, cognome, numero, ruolo, email)
  • compilare e correggere i dati personali e del documento al posto di un giocatore (DD-017)
  • scollegare un account da un profilo, liberando lo slot
  • aggiungere un nuovo giocatore alla rosa (id, nome, cognome, numero, ruolo, email opzionale)
  • disattivare un giocatore che ha lasciato la squadra, e riattivarlo in caso di errore: la riga non viene eliminata, così presenze, voti, pagelle e badge della stagione restano agganciati al suo id

Non può caricare o sostituire i file altrui: documento, certificato e foto restano responsabilità del giocatore che li fornisce.

Flusso utente

Primo accesso

  1. Login tramite Google oppure Email. Implementato con il solo Google: la squadra ha tutti un account Google, e un secondo metodo è additivo (un bottone in più sulla stessa schermata) il giorno che serve.
  2. Collegamento automatico al proprio giocatore, confrontando l'email dell'account Google con l'email registrata in giocatori_squadra (DD-018). Nessuna scelta manuale: se l'email non corrisponde a nessun profilo, l'accesso si ferma con un messaggio che invita a contattare un amministratore.
  3. Accesso alla Home.

Se il profilo non è completo compare automaticamente un widget di completamento.

Home

Il giocatore visualizza un widget dedicato.

Completa il tuo profilo

Viene mostrata una barra di avanzamento (esempio: Profilo completato — 85%), composta dalle seguenti sezioni.

  • Dati personali
  • Documento di identità
  • Certificato medico
  • Foto tessera

Quando tutte le sezioni sono complete il widget scompare automaticamente.

Profilo

Il profilo viene suddiviso in sette aree.

Dati Giocatore

Dati squadra — solo lettura, gestiti esclusivamente dagli amministratori.

  • Nome
  • Cognome
  • Numero di maglia
  • Ruolo

Dati personali — modificabili dal giocatore.

  • Data di nascita
  • Luogo di nascita
  • Indirizzo di residenza
  • Telefono
  • Email

Documento di identità

Campi.

  • Tipo documento
  • Numero documento
  • Rilasciato da
  • Data emissione
  • Data scadenza

Upload.

  • Foto fronte
  • Foto retro

Certificato medico

Campi.

  • Data di scadenza

Upload.

  • Certificato medico

Il giocatore può aggiornare liberamente sia la data sia il file.

Lo storico non viene mantenuto nella prima versione.

Foto tessera

Upload di una fotografia formato tessera.

Utilizzata dagli amministratori per il tesseramento CSI.

Statistiche

Sezione già presente. Contiene.

  • Presenze
  • Voto medio
  • MVP
  • Serie
  • Altre statistiche disponibili

Badge

Sezione già presente.

Contiene tutti i badge ottenuti e quelli ancora da sbloccare.

Impostazioni

Contiene.

  • Logout
  • Preferenze notifiche
  • Impostazioni applicazione
  • Segnala un bug e Suggerisci una nuova funzionalità: due link che aprono una issue GitHub già impostata sul template giusto (.github/ISSUE_TEMPLATE/bug_report.yml e feature_request.yml). Nessun dato passa dall'app — la segnalazione vive interamente su GitHub, così non servono né una tabella né una schermata di gestione.

Dashboard amministratore

Gli amministratori dispongono di una schermata dedicata (/admin, raggiungibile da Profilo → Impostazioni).

Per ogni giocatore vengono mostrati.

  • Stato del profilo
  • Certificato medico
  • Documento di identità
  • Foto tessera
  • Stato tesseramento CSI (tesserato / da tesserare)

Azioni disponibili.

  • Visualizza profilo (la scheda si apre in linea nell'elenco: nessuna schermata separata)
  • Scarica certificato
  • Scarica documento
  • Scarica foto tessera
  • Modifica dati squadra e dati personali del giocatore (DD-017)
  • Registra numero e data della tessera CSI, una volta arrivata dal comitato
  • Scollega account, per liberare uno slot assegnato per errore
  • Aggiungi giocatore, per inserire un nuovo membro della squadra
  • Disattiva/Riattiva giocatore, per chi lascia la squadra (o rientra)

Esportazione CSI

Gli amministratori possono esportare un file CSV contenente esclusivamente i dati richiesti per il tesseramento.

Campi esportati.

  • Nome
  • Cognome
  • Data di nascita
  • Luogo di nascita
  • Indirizzo
  • Telefono
  • Email
  • Tipo documento
  • Numero documento
  • Rilasciato da
  • Data emissione
  • Data scadenza

Tracciamento tesseramento

Numero e data della tessera CSI non sono dati che il giocatore conosce in anticipo: arrivano dal comitato dopo l'iscrizione effettiva. Per questo, a differenza dei dati personali del profilo, li scrive solo un amministratore — come nome, cognome, numero di maglia e ruolo (DD-017), il trigger sulla tabella li rende non modificabili dal giocatore stesso. La dashboard mostra un badge "Tesserato"/"Da tesserare" su ogni scheda e il conteggio complessivo della squadra.

Completamento profilo

Ogni sezione contribuisce alla percentuale di completamento.

Sezione Peso
Dati personali 30%
Documento di identità 30%
Certificato medico 30%
Foto tessera 10%

Quando tutte le sezioni risultano complete il profilo raggiunge il 100%.

Permessi

Giocatore — può modificare esclusivamente il proprio profilo.

Amministratore — può visualizzare tutti i profili, scaricare tutti i documenti, esportare i dati, modificare dati squadra e dati personali di chiunque e scollegare un account (DD-017). Non carica file al posto di altri.

Versione 1

  • Profilo giocatore
  • Completamento profilo
  • Gestione dati personali
  • Documento di identità
  • Certificato medico
  • Foto tessera
  • Dashboard amministratore
  • Esportazione CSV CSI

Versioni future

  • Storico certificati medici
  • Gestione documenti aggiuntivi
  • Consensi privacy
  • Firma digitale
  • Verifica automatica documenti