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 da7237e8f: 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, commit72a9864) 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>
246 lines
6.4 KiB
Markdown
246 lines
6.4 KiB
Markdown
# 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
|