- Proclamatore::booted: reso non attivo, spostato nel cestino o
anonimizzato, il sorvegliante scioglie il gruppo (territori non dati in
reparto, membri liberi, utenza disattivata); il motivo va nel registro.
L'elenco chiede conferma, la modifica avvisa sotto "Attivo". Un membro
nel cestino esce dal gruppo.
- Scheda del proclamatore: gruppo guidato con membri, pacchetto, da dare,
assegnazioni dal gruppo, utenza e ultimo accesso; oppure gruppo di cui
e' membro; gruppi sciolti guidati in passato.
- Profilo del sorvegliante: il suo gruppo con gli stessi numeri.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Un ex sorvegliante puo' guidare un gruppo nuovo: si riattiva la sua
utenza. Il sorvegliante di un gruppo attivo non si cestina ne' si
anonimizza; anonimizzando un ex sorvegliante si anonimizza anche
l'utenza. Nel registro delle attivita' nome ed email dell'utenza del
sorvegliante diventano "proclamatore #id". La voce "Il mio gruppo"
dipende dal ruolo: l'amministratore passa ogni @can.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Il gruppo ha un sorvegliante (proclamatore con utenza: email e password
temporanea, senza conferma dell'email) e dei membri; l'amministratore
mette in blocco dei territori nel pacchetto del gruppo. Il pacchetto non
e' un'assegnazione e non tocca le statistiche; quando il sorvegliante da'
un territorio a un membro nasce un'assegnazione normale con
gruppo_servizio_id. Al rientro il territorio torna in reparto. Sciogliere
il gruppo libera pacchetto e membri e disattiva l'utenza.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Migrazione: tolte le colonne email e telefono dei proclamatori (vuote
in produzione). Tolti da form, scheda, elenco, XML (un file vecchio si
importa ignorandoli).
- Invio del link: solo "Copia link" e "Condividi…" (menu di condivisione
del telefono, navigator.share): il destinatario lo sceglie chi usa
l'app. Via WhatsApp diretto, canale email, notifica LinkTerritorio,
componente x-whatsapp.
- Elenco assegnati: "Condividi" al posto di WhatsApp; a condivisione
fatta il link risulta inviato.
- Informativa privacy, README, HANDOFF e test aggiornati.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Al posto delle tendine (Assegna, Registro, editor delle piantine) un
campo in cui si scrive e compaiono le proposte più vicine: uguale, inizia
con, contiene, errore di battitura ("forse cercavi"); parole in qualsiasi
ordine, senza badare a maiuscole e accenti. Campo vuoto: la tendina
completa. Fatto anche per il telefono (16px, voci da 44px, scelta al tocco).
- Logica pura in resources/js/scelta.js con test node (tests/js).
- Opzioni dal server: Territorio/Proclamatore::opzioneScelta(); i
territori già assegnati si trovano ("già assegnato a …") ma non si
scelgono. Nomi cifrati ordinati e cercati decifrati, mai in SQL.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Server di posta in Impostazioni (password cifrata, email di prova): se
compilato prende il posto del .env; non si esporta e l'import XML non lo
cancella. MAIL_SCHEME=tls nel .env.example non era valido per Laravel 11.
- Proclamatori con email e telefono facoltativi, cifrati, nell'XML e
cancellati dall'anonimizzazione; il numero apre WhatsApp.
- Dopo l'assegnazione un riquadro in evidenza con il link del PDF,
"Invia su WhatsApp" con il messaggio pronto e la scelta "inviato /
non ancora", che resta finché non si sceglie.
- Conferma dell'email obbligatoria per tutti gli utenti, anche esistenti:
email in italiano, link valido senza login, nuova conferma a ogni cambio
di indirizzo, "Reinvia conferma" in Utenti. Senza conferma restano
raggiungibili profilo, cambio password e, per l'admin, il server di
posta; comando utenti:conferma-email per l'emergenza.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>