# DPass — Patch 61C1
## Branding delle strutture e gruppi del menu Configurazioni

Base richiesta: progetto locale aggiornato con **61C**, dopo **61B v2**.
Questa è la prima delle due patch concordate: **NON contiene ancora la 61D**
(prenotazione strutture, limite giornaliero, borsellino e pagamento diretto).

### Modifiche

- Dashboard Strutture ed Elenco strutture: colore primario del tenant per intestazioni,
  pulsanti, contatori e collegamenti; sfondi neutri o derivati dal branding.
- Registro verifiche accesso: stesso branding, mantenendo i colori semantici degli esiti.
- Dashboard generale: la scheda Strutture usa il colore degli altri moduli.
- Configurazioni > Aree e strutture: etichetta Struttura in colore branding.
- Menu Configurazioni: Gestione API dopo Notifiche email; Gestione Utenti dopo
  Registro chiamate; Gestione Branding dopo Utenti amministrativi.
  Le intestazioni si generano dopo il filtro dei permessi: nessun gruppo vuoto.
- Piccola correzione responsive: i pulsanti dei filtri Strutture vanno a capo su mobile,
  evitando lo scorrimento orizzontale dell'intera pagina.

Non introduce un nuovo colore configurabile. Usa `tenant->branding->primary_color`,
come gli altri moduli, conservando il fallback preesistente solo in assenza di branding.
Non cambia la configurazione già salvata in Identità e Branding.

### Applicazione locale — blocco completo in WSL

Scaricare lo ZIP in `C:\Users\massi\Downloads`, poi:

```bash
(
  set -e
  cd ~/progetti/dpass
  PATCH_DIR="$(mktemp -d /tmp/dpass_patch_61C1.XXXXXX)"
  unzip -q \
    /mnt/c/Users/massi/Downloads/dpass_patch_61C1_branding_menu.zip \
    -d "$PATCH_DIR"
  bash "$PATCH_DIR/apply_patch.sh" "$PWD"
)
```

Le parentesi circoscrivono `set -e` al blocco: un errore non chiude il terminale chiamante.
L'installer verifica l'integrità del pacchetto e gli hash della base, salva un backup,
applica i file, esegue 46 controlli isolati e pulisce soltanto le viste compilate.
Un errore nei test attiva un tentativo di ripristino automatico. Se il ripristino non
può essere completato, il percorso del backup e l'errore vengono mostrati.
Non forzare il preflight in presenza di modifiche non riconosciute.

Esito atteso:

```text
[61C1] PATCH 61C1 APPLICATA E VERIFICATA.
```

Nessuna migration, SQL, modifica `.env`, Composer, NPM, cron, API, tariffe o pagamenti.
Non è necessario installare SQLite: i controlli del menu usano risposte simulate,
non un database. Il test non avvia worker e non chiama servizi esterni.

Preflight senza applicazione:

```bash
bash /percorso/patch_estratta/apply_patch.sh "$HOME/progetti/dpass" --check
```

Ripristino dell'ultimo backup 61C1, solo se non vi sono modifiche successive:

```bash
bash /percorso/patch_estratta/rollback.sh "$HOME/progetti/dpass"
```

Il marcatore `storage/app/patches/dpass_patch_61C1.json` contiene il percorso del backup.
Il rollback non tocca il database e non rimuove la 61C.

### Collaudo locale

Aprire dashboard generale, dashboard Strutture, elenco Strutture e registro accessi.
Il colore deve corrispondere a Identità e Branding. Verificare i tre nuovi divisori
nel menu Configurazioni e il funzionamento del menu mobile.

### Produzione: attendere il rilascio cumulativo

L'utente dispone soltanto di cPanel/File Manager/FTP e phpMyAdmin, senza Terminal/SSH.
Lo SQL 61B allegato dall'utente non è stato ancora eseguito in produzione.
È conservato byte per byte nel progetto, in:

`docs/strutture/rilascio/database_riferimento/dpass_patch_61B_database_phpmyadmin.sql`

**È materiale di riferimento: NON eseguirlo adesso. Non è il cumulativo definitivo.**
Lo stato delle modifiche pendenti è in `docs/strutture/rilascio/stato_database_produzione.json`.
La 61C e la 61C1 non aggiungono modifiche al database. Per pubblicare l'intera gestione
strutture occorre il cumulativo finale, comprendente 61B e le migration della 61D,
oltre alla verifica dello stato della 61A in ciascuna installazione.

`FILES_PRODUZIONE.txt` elenca i soli file applicativi di questa patch e non è una lista
completa per pubblicare tutte le strutture. Non caricare ora soltanto la 61C1 su una
produzione ancora priva dei relativi aggiornamenti. La sorgente del futuro caricamento
resta sempre `~/progetti/dpass` già collaudato, non un pacchetto separato solo produzione.

Vedere `PIANO_RILASCIO_CPANEL.md` e `VERIFICHE_E_LIMITI.md`.
