Docs: file di supporto in ARCHITECTURE e riga Codice nelle decisioni

Cita con percorso completo i 28 file di src/ che nessun documento nominava e
aggiunge la riga Codice a 21 decisioni, ricavata dai file che le citano.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
davideandClaude Sonnet 5.5 committed 2026-11-15 18:55:46 +01:00
1 parent f9c6263662
commit 4c8791fa2c
22 files changed
+47

No files matched your search

+26
View File
@@ -30,6 +30,32 @@ test/ suite di test (unit, integration, end-to-end)
docs/ documentazione ufficiale docs/ documentazione ufficiale
``` ```
### File di supporto
I file che i documenti dei moduli non citano, con il loro scopo:
| File | Cosa fa |
| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `src/routes/__root.tsx` | Radice delle route: meta, viewport (`viewport-fit=cover` per le safe area su iOS) e layout comune |
| `src/routes/benvenuto.tsx` | Ingresso dopo il login: si arriva solo da loggati e con uno slot collegato (DD-011) |
| `src/routes/api/public/keepalive.ts` | Lettura minima chiamata dal Cron di Vercel per evitare la pausa del progetto Supabase free tier |
| `src/routes/api/public/apri-sondaggio.ts` | Avviso «sondaggio pre-partita aperto», lanciato da un admin dalla pagina partita |
| `src/routes/api/public/notifica-personalizzata.ts` | Messaggio push libero a un giocatore o a tutti, con storico in-app (M17) |
| `src/routes/api/public/notifiche-attive.ts` | Elenco dei giocatori con almeno un dispositivo iscritto alle push (solo admin) |
| `src/lib/notifiche-attive.server.ts`, `src/lib/notifiche-admin.ts` | Lato server dell'elenco sopra; hook client dell'elenco e dell'invio push libero |
| `src/lib/eventi-visibili.ts` | Gli eventi che l'utente corrente può vedere (calendario, home, elenco) |
| `src/lib/presenze-mese-core.ts` | Calcolo puro della percentuale di presenze dell'ultimo mese, separato dagli hook |
| `src/lib/error-capture.ts`, `src/lib/error-page.ts` | Cattura dell'errore lato server e pagina di errore statica |
| `src/lib/utils.ts` | `cn()`: unisce classi CSS condizionali risolvendo i conflitti di Tailwind |
| `src/integrations/supabase/types.ts` | Tipi generati dallo schema: non si modificano a mano |
| `src/integrations/supabase/auth-attacher.ts`, `src/integrations/supabase/auth-middleware.ts`, `src/integrations/supabase/client.server.ts` | File generati: il browser allega il token alle chiamate server, il server le autentica; `client.server.ts` ha il client con service role. Non si modificano a mano |
| `src/integrations/supabase/client-nuove-tabelle.ts` | Accesso tipizzato alle tabelle che `types.ts` generato non include ancora |
| `src/components/crapp/Avatar.tsx`, `src/components/crapp/BottomNav.tsx`, `src/components/crapp/BarraSottosezioni.tsx` | Foto del giocatore (con ricarica forzata), barra di navigazione a 4 voci, sottosezioni con pannello animato |
| `src/components/crapp/ProfiloAmministrativo.tsx` | Campi del profilo condivisi tra giocatore e dashboard admin (DD-017) |
| `src/components/crapp/ScoutReport.tsx` | Lettura dello scout di una partita: squadra, set per set, dettaglio per giocatore |
| `src/components/motion/Barra.tsx`, `src/components/motion/Numero.tsx`, `src/components/motion/Reveal.tsx` | Barra di avanzamento a molla, contatore animato, comparsa graduale all'ingresso nel viewport |
| `src/components/ui/drawer.tsx`, `src/components/ui/sonner.tsx` | Le due primitive shadcn in uso (drawer di vaul e toast) |
## Punti fermi ## Punti fermi
- **Routing**: file-based in `src/routes/`. `src/routeTree.gen.ts` è **generato**, non si - **Routing**: file-based in `src/routes/`. `src/routeTree.gen.ts` è **generato**, non si
+1
View File
@@ -2,6 +2,7 @@
**Data:** origine progetto **Data:** origine progetto
**Stato:** Accettata **Stato:** Accettata
**Codice:** `src/lib/profili-core.ts`
**Contesto** **Contesto**
I badge dipendono da statistiche già disponibili (presenze, MVP, cacche, ecc.). Salvare ogni badge sbloccato nel database aggiungerebbe complessità senza beneficio immediato. I badge dipendono da statistiche già disponibili (presenze, MVP, cacche, ecc.). Salvare ogni badge sbloccato nel database aggiungerebbe complessità senza beneficio immediato.
+1
View File
@@ -2,6 +2,7 @@
**Data:** agosto 2026 **Data:** agosto 2026
**Stato:** Accettata **Stato:** Accettata
**Codice:** `src/lib/auth-route.server.ts`, `src/lib/auth.ts`, `src/lib/crapp-data.ts`, `src/lib/ruoli.ts`, `src/routes/__root.tsx`, `src/routes/benvenuto.tsx`, `supabase/migrations/20260831120000_m4_solo_autenticati.sql`, `supabase/migrations/20260901140000_m6_avatar_giocatori.sql`, `supabase/migrations/20260924120100_m21_ruolo_allenatore.sql`
**Contesto** **Contesto**
Oggi l’app identifica l’utente con la selezione del giocatore da una lista, senza login. Documenti, certificati e dati personali richiedono sapere _chi_ sta operando e impedire accessi non autorizzati. Oggi l’app identifica l’utente con la selezione del giocatore da una lista, senza login. Documenti, certificati e dati personali richiedono sapere _chi_ sta operando e impedire accessi non autorizzati.
+1
View File
@@ -2,6 +2,7 @@
**Data:** luglio 2026 **Data:** luglio 2026
**Stato:** Accettata **Stato:** Accettata
**Codice:** `src/integrations/supabase/client-nuove-tabelle.ts`
**Contesto** **Contesto**
La squadra potrebbe voler cambiare hosting, database o fornitore auth in futuro. La squadra potrebbe voler cambiare hosting, database o fornitore auth in futuro.
+1
View File
@@ -2,6 +2,7 @@
**Data:** agosto 2026 **Data:** agosto 2026
**Stato:** Accettata **Stato:** Accettata
**Codice:** `src/components/crapp/ProfiloAmministrativo.tsx`, `src/lib/giocatori-squadra.ts`, `src/routes/admin.tsx`, `supabase/migrations/20260831170000_correzione_schema_profili_giocatore.sql`, `supabase/migrations/20260906120000_m11_scritture_per_ruolo.sql`
**Contesto** **Contesto**
Il modulo Profilo Giocatore era costruito su un confine netto: ognuno scrive solo la propria riga, l'amministratore legge e scarica. Nella pratica quel confine blocca il lavoro che il modulo doveva togliere: se metà squadra non compila i propri dati, l'export per il tesseramento CSI resta incompleto e l'admin torna a chiedere le informazioni in chat — esattamente ciò che CrAPP deve eliminare. Inoltre le docs assegnavano già agli admin la gestione dei dati squadra (nome, cognome, numero, ruolo) e il reset del collegamento all'account (DD-016 regola 2), senza che esistesse una schermata per farlo. Il modulo Profilo Giocatore era costruito su un confine netto: ognuno scrive solo la propria riga, l'amministratore legge e scarica. Nella pratica quel confine blocca il lavoro che il modulo doveva togliere: se metà squadra non compila i propri dati, l'export per il tesseramento CSI resta incompleto e l'admin torna a chiedere le informazioni in chat — esattamente ciò che CrAPP deve eliminare. Inoltre le docs assegnavano già agli admin la gestione dei dati squadra (nome, cognome, numero, ruolo) e il reset del collegamento all'account (DD-016 regola 2), senza che esistesse una schermata per farlo.
+1
View File
@@ -2,6 +2,7 @@
**Data:** 6 settembre 2026 **Data:** 6 settembre 2026
**Stato:** Accettata **Stato:** Accettata
**Codice:** `src/lib/palloni-core.ts`, `src/routes/api/public/promemoria-palloni.ts`
**Contesto** **Contesto**
`promemoria-palloni` era disegnata per un cron quotidiano: calcolava chi è di turno **oggi** e `promemoria-palloni` era disegnata per un cron quotidiano: calcolava chi è di turno **oggi** e
+1
View File
@@ -2,6 +2,7 @@
**Data:** 9 settembre 2026 **Data:** 9 settembre 2026
**Stato:** Accettata **Stato:** Accettata
**Codice:** `src/lib/pagelle.ts`
**Contesto** **Contesto**
Un audit della sezione «Colpo d'occhio» in home (`index.tsx`, StatTile Presenze/Media Un audit della sezione «Colpo d'occhio» in home (`index.tsx`, StatTile Presenze/Media
+1
View File
@@ -2,6 +2,7 @@
**Data:** 24 settembre 2026 **Data:** 24 settembre 2026
**Stato:** Accettata (implementata con le migration M20 e M21) **Stato:** Accettata (implementata con le migration M20 e M21)
**Codice:** `src/components/crapp/EventoCard.tsx`, `src/components/crapp/Pagelle.tsx`, `src/components/crapp/ProfiloAmministrativo.tsx`, `src/components/crapp/PromemoriaPalloni.tsx`, `src/components/crapp/RosaPresenze.tsx`, `src/components/crapp/SondaggioCacche.tsx`, `src/components/crapp/VotazioneMvp.tsx`, `src/components/crapp/VotoSocial.tsx`, `src/lib/auth-route.server.ts`, `src/lib/cacche.ts`, `src/lib/giocatori-squadra.ts`, `src/lib/presenze.ts`, `src/lib/profili-core.ts`, `src/lib/rosa.ts`, `src/lib/ruoli.ts`, `src/lib/user-store.ts`, `src/routes/admin.tsx`, `src/routes/api/public/apri-sondaggio.ts`, `src/routes/eventi.tsx`, `src/routes/index.tsx`, `src/routes/partita.$id.tsx`, `src/routes/profilo.tsx`, `src/routes/squadra.tsx`, `supabase/migrations/20260924120000_m20_ruolo_allenatore_enum.sql`, `supabase/migrations/20260924120100_m21_ruolo_allenatore.sql`, `supabase/migrations/20260929180000_m25_promemoria_solo_giocatori.sql`
**Contesto** **Contesto**
Serve un account per l'allenatore: deve gestire gli eventi (oggi solo admin, `m11`) ma non è Serve un account per l'allenatore: deve gestire gli eventi (oggi solo admin, `m11`) ma non è
+1
View File
@@ -2,6 +2,7 @@
**Data:** 24 settembre 2026 **Data:** 24 settembre 2026
**Stato:** Accettata (implementata, versione 1.1.0). La soglia del giocatore è stata alzata a 30 giorni da [DD-041](DD-041.md); quella dello staff resta 7. [DD-046](DD-046.md) aggiunge l'avviso per chi non ha caricato il certificato. **Stato:** Accettata (implementata, versione 1.1.0). La soglia del giocatore è stata alzata a 30 giorni da [DD-041](DD-041.md); quella dello staff resta 7. [DD-046](DD-046.md) aggiunge l'avviso per chi non ha caricato il certificato.
**Codice:** `src/components/crapp/AvvisoCertificati.tsx`, `src/lib/profili-core.ts`, `src/lib/ruoli.ts`
**Contesto** **Contesto**
Il certificato medico ha una data di scadenza (`profili_giocatore.certificato_scadenza`), ma Il certificato medico ha una data di scadenza (`profili_giocatore.certificato_scadenza`), ma
+1
View File
@@ -2,6 +2,7 @@
**Data:** 29 settembre 2026 **Data:** 29 settembre 2026
**Stato:** Accettata **Stato:** Accettata
**Codice:** `mailer/mailer-core.ts`, `mailer/mailer.mjs`, `src/lib/preferenze-utente.ts`, `supabase/migrations/20260929120000_m22_notifiche_email.sql`
**Contesto** **Contesto**
Le notifiche di CrAPP arrivano solo con la push (che dipende da Chrome vivo in background, Le notifiche di CrAPP arrivano solo con la push (che dipende da Chrome vivo in background,
+1
View File
@@ -2,6 +2,7 @@
**Data:** 29 settembre 2026 **Data:** 29 settembre 2026
**Stato:** Accettata **Stato:** Accettata
**Codice:** `supabase/migrations/20260929180000_m25_promemoria_solo_giocatori.sql`
**Contesto** **Contesto**
DD-034 stabilì che l'allenatore riceve i promemoria a 24 e 3 ore prima di un evento, sempre, convocato DD-034 stabilì che l'allenatore riceve i promemoria a 24 e 3 ore prima di un evento, sempre, convocato
+1
View File
@@ -2,6 +2,7 @@
**Data:** 30 settembre 2026 **Data:** 30 settembre 2026
**Stato:** Accettata (implementata: migration `m26`, applicata in produzione il 30 settembre 2026, job, route e test). Il sollecito presenze è poi passato a un solo avviso a 24 ore da [DD-045](DD-045.md). Il turno palloni è poi passato a un solo avviso a 3 ore da [DD-042](DD-042.md). **Stato:** Accettata (implementata: migration `m26`, applicata in produzione il 30 settembre 2026, job, route e test). Il sollecito presenze è poi passato a un solo avviso a 24 ore da [DD-045](DD-045.md). Il turno palloni è poi passato a un solo avviso a 3 ore da [DD-042](DD-042.md).
**Codice:** `src/lib/palloni-core.ts`, `src/lib/presenze.ts`, `src/routes/api/public/sollecita-presenze.ts`, `supabase/migrations/20260930120000_m26_notifiche_automatiche.sql`
**Contesto** **Contesto**
Quattro notifiche su sei partivano da un pulsante premuto da un admin (DD-025 per i palloni): se nessuno Quattro notifiche su sei partivano da un pulsante premuto da un admin (DD-025 per i palloni): se nessuno
+1
View File
@@ -2,6 +2,7 @@
**Data:** 1 ottobre 2026 **Data:** 1 ottobre 2026
**Stato:** Accettata (modifica la soglia di [DD-035](DD-035.md) per il solo giocatore) **Stato:** Accettata (modifica la soglia di [DD-035](DD-035.md) per il solo giocatore)
**Codice:** `src/components/crapp/AvvisoCertificati.tsx`, `src/lib/profili-core.ts`
**Contesto** **Contesto**
Con DD-035 giocatore e admin vedono l'avviso negli stessi 7 giorni prima della scadenza. Per Con DD-035 giocatore e admin vedono l'avviso negli stessi 7 giorni prima della scadenza. Per
+1
View File
@@ -2,6 +2,7 @@
**Data:** 1 ottobre 2026 **Data:** 1 ottobre 2026
**Stato:** Accettata (migration `m27`, applicata in produzione il 1 ottobre 2026; modifica la parte «turno palloni» di [DD-040](DD-040.md)) **Stato:** Accettata (migration `m27`, applicata in produzione il 1 ottobre 2026; modifica la parte «turno palloni» di [DD-040](DD-040.md))
**Codice:** `supabase/migrations/20261001120000_m27_palloni_solo_3h.sql`
**Contesto** **Contesto**
DD-040 manda l'avviso del turno palloni a 12, 6 e 3 ore prima dell'evento: tre messaggi identici per DD-040 manda l'avviso del turno palloni a 12, 6 e 3 ore prima dell'evento: tre messaggi identici per
+1
View File
@@ -2,6 +2,7 @@
**Data:** 1 ottobre 2026 **Data:** 1 ottobre 2026
**Stato:** Accettata (migration `m28`, applicata in produzione il 1 ottobre 2026; sostituisce il promemoria di **Stato:** Accettata (migration `m28`, applicata in produzione il 1 ottobre 2026; sostituisce il promemoria di
**Codice:** `supabase/migrations/20261001150000_m28_niente_promemoria_evento.sql`
[DD-030](DD-030.md), [DD-037](DD-037.md) e [DD-040](DD-040.md)) [DD-030](DD-030.md), [DD-037](DD-037.md) e [DD-040](DD-040.md))
**Contesto** **Contesto**
+1
View File
@@ -2,6 +2,7 @@
**Data:** 1 ottobre 2026 **Data:** 1 ottobre 2026
**Stato:** Accettata (migration `m29`, applicata in produzione il 1 ottobre 2026) **Stato:** Accettata (migration `m29`, applicata in produzione il 1 ottobre 2026)
**Codice:** `supabase/migrations/20261001170000_m29_senza_foto_tessera.sql`
**Contesto** **Contesto**
Il profilo amministrativo chiedeva al giocatore una foto formato tessera (DD-016), per il Il profilo amministrativo chiedeva al giocatore una foto formato tessera (DD-016), per il
+1
View File
@@ -2,6 +2,7 @@
**Data:** 1 ottobre 2026 **Data:** 1 ottobre 2026
**Stato:** Accettata (migration `m30`, applicata in produzione il 1 ottobre 2026; modifica la parte «sollecito presenze» **Stato:** Accettata (migration `m30`, applicata in produzione il 1 ottobre 2026; modifica la parte «sollecito presenze»
**Codice:** `supabase/migrations/20261001190000_m30_sollecito_solo_24h.sql`
di [DD-040](DD-040.md)) di [DD-040](DD-040.md))
**Contesto** **Contesto**
+1
View File
@@ -2,6 +2,7 @@
**Data:** 4 ottobre 2026 **Data:** 4 ottobre 2026
**Stato:** Accettata (modifica [DD-035](DD-035.md): il certificato mancante non è più escluso dall'avviso) **Stato:** Accettata (modifica [DD-035](DD-035.md): il certificato mancante non è più escluso dall'avviso)
**Codice:** `src/components/crapp/AvvisoCertificati.tsx`, `src/lib/profili-core.ts`
**Contesto** **Contesto**
L'avviso certificati di DD-035 guarda solo la scadenza e salta chi non ha mai caricato il L'avviso certificati di DD-035 guarda solo la scadenza e salta chi non ha mai caricato il
+1
View File
@@ -2,6 +2,7 @@
**Data:** 6 ottobre 2026 **Data:** 6 ottobre 2026
**Stato:** Accettata (migration `m31`, non ancora applicata in produzione; nasce dalla issue #11 «notifica») **Stato:** Accettata (migration `m31`, non ancora applicata in produzione; nasce dalla issue #11 «notifica»)
**Codice:** `supabase/migrations/20261006120000_m31_notifica_compleanno.sql`
**Contesto** **Contesto**
I compleanni si vedono solo aprendo il Calendario, dove `compleanniEventi()` li calcola dalla data di I compleanni si vedono solo aprendo il Calendario, dove `compleanniEventi()` li calcola dalla data di
+1
View File
@@ -2,6 +2,7 @@
**Data:** 8 ottobre 2026 **Data:** 8 ottobre 2026
**Stato:** Implementata per admin e allenatori (migration `m32`, solo admin, applicata in produzione il 9 ottobre 2026; `m33`, anche allenatori) **Stato:** Implementata per admin e allenatori (migration `m32`, solo admin, applicata in produzione il 9 ottobre 2026; `m33`, anche allenatori)
**Codice:** `supabase/migrations/20261009120000_m32_presenza_modificata.sql`, `supabase/migrations/20261009150000_m33_presenza_modificata_allenatori.sql`
**Contesto** **Contesto**
Un giocatore può cambiare la risposta a un evento fino all'ultimo minuto. Chi organizza (admin e allenatore) Un giocatore può cambiare la risposta a un evento fino all'ultimo minuto. Chi organizza (admin e allenatore)
+1
View File
@@ -2,6 +2,7 @@
**Data:** 26 ottobre 2026 **Data:** 26 ottobre 2026
**Stato:** Accettata (migration `m35` e `m36`) **Stato:** Accettata (migration `m35` e `m36`)
**Codice:** `supabase/migrations/20261026150000_m35_voto_mvp_definitivo.sql`, `supabase/migrations/20261026160000_m36_voto_mvp_presenti_e_orario.sql`
**Contesto** **Contesto**
Il voto MVP si poteva cambiare senza limiti e senza storico (`mvp.md`), e una parità in testa non Il voto MVP si poteva cambiare senza limiti e senza storico (`mvp.md`), e una parità in testa non
+1
View File
@@ -2,6 +2,7 @@
**Data:** 26 ottobre 2026 **Data:** 26 ottobre 2026
**Stato:** Accettata (migration `m37` e `m38`) **Stato:** Accettata (migration `m37` e `m38`)
**Codice:** `src/lib/mvp-voti.ts`, `supabase/migrations/20261026170000_m37_voto_mvp_segreto_e_chiusura.sql`, `supabase/migrations/20261026180000_m38_nome_votato_badge_social.sql`
**Contesto** **Contesto**
Dopo DD-051 il voto è definitivo e controllato a database, ma restavano tre difetti: chiunque poteva Dopo DD-051 il voto è definitivo e controllato a database, ma restavano tre difetti: chiunque poteva