++ Richieste dal modulo pubblico, territori cartacei, S-13 mensile per email
- /richiesta: modulo pubblico (nuovo territorio o riconsegna) con campo trappola, tempo minimo e limite orario; nome e note cifrati, avviso per email a chi ha richieste.gestisci (amministratore, assistente) - Home: riquadro Richieste con i proclamatori dal nome simile; porta su Assegna/Rientra già esistenti, che chiudono la richiesta; Scarta - Cartaceo sull'assegnazione (Assegna e Il mio gruppo), etichetta nell'elenco degli assegnati, pagina Cartacei, passa per l'XML - registro:invia-s13 agli amministratori l'ultima domenica del mese; richieste:pulizia dopo 90 giorni dalla gestione - Privacy, README e HANDOFF aggiornati; test in RichiesteTest Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
65
HANDOFF.md
65
HANDOFF.md
@@ -4,7 +4,7 @@ Stato del progetto per chi ci mette mano dopo. Per installazione, deploy e uso
|
||||
quotidiano vedi [README.md](README.md); qui c'è il contesto che il README non
|
||||
può dare: perché le cose sono come sono, e cosa resta aperto.
|
||||
|
||||
Ultimo aggiornamento: **20 ottobre 2026** — si riprende da [Stato attuale](#stato-attuale).
|
||||
Ultimo aggiornamento: **21 ottobre 2026** — si riprende da [Stato attuale](#stato-attuale).
|
||||
|
||||
---
|
||||
|
||||
@@ -34,14 +34,18 @@ produzione** — l'utente ha chiesto di aspettare il suo ok:
|
||||
- pulsante **Rientro** nell'elenco dei territori assegnati;
|
||||
- storico assegnazioni in una tabella sola, con le colonne in linea;
|
||||
- *Assegna* aperta da "Assegna →" della Home senza l'elenco dei territori
|
||||
assegnati.
|
||||
assegnati;
|
||||
- password del sorvegliante dal pannello *Utenti*, anteprima dal numero in "Il
|
||||
mio gruppo";
|
||||
- [modulo pubblico delle richieste, cartacei, S-13 per email](#richieste-dal-modulo-pubblico-cartacei-s-13-per-email-21-ottobre-2026-solo-su-dev)
|
||||
(migrazione `2026_10_21_000010`).
|
||||
|
||||
**Per portarli in produzione**: backup del database di produzione, merge di
|
||||
`dev` in `main` (dopo il rilascio di sicurezza del 21/10 non è più un
|
||||
fast-forward), deploy (l'autodeploy non parte: vedi
|
||||
[Dove gira davvero](#dove-gira-davvero)), poi controllo di migrazioni e
|
||||
conteggi. In produzione non ci sono gruppi: le quattro migrazioni non hanno
|
||||
dati da convertire.
|
||||
conteggi. In produzione non ci sono gruppi né richieste: le migrazioni non
|
||||
hanno dati da convertire.
|
||||
|
||||
| Aspetto | Stato |
|
||||
|-----------------------------|-------|
|
||||
@@ -63,7 +67,58 @@ sistema visivo, prima suite di test) è in [Da dove veniamo](#da-dove-veniamo).
|
||||
## Lavori recenti — ottobre 2026
|
||||
|
||||
Dal più recente. Le sezioni del 12-19 ottobre sono in produzione; quelle del
|
||||
20 ottobre e i gruppi di servizio solo sulla demo.
|
||||
20-21 ottobre e i gruppi di servizio solo sulla demo.
|
||||
|
||||
### Richieste dal modulo pubblico, cartacei, S-13 per email (21 ottobre 2026, solo su dev)
|
||||
|
||||
Dal documento `_ARCHIVE/ATTIVITA sviluppo Territori Manager 2.0.docx`
|
||||
(attività per la versione 2): analizzato con l'utente, che ha deciso così.
|
||||
|
||||
- **Modulo pubblico** `/richiesta` (rotta `richiesta`, fuori dal login,
|
||||
`throttle:60,1`; componente `Richieste\ModuloRichiesta`, layout guest):
|
||||
nome e cognome, *nuovo territorio* o *riconsegna* (con numero), nota. Non
|
||||
mostra dati esistenti. Anti-spam: campo trappola `sito` (classe
|
||||
`.tm-trappola`), tempo minimo `SECONDI_MINIMI` = 3 s (in questi due casi
|
||||
risponde "inviata" senza salvare), `MASSIMO_ORA` = 5 per IP (chiave del
|
||||
RateLimiter con lo sha1 dell'IP). Il tempo si legge con `now()`, così i
|
||||
test possono viaggiare nel tempo.
|
||||
- **Tabella `richieste`** (migrazione `2026_10_21_000010`, che crea anche il
|
||||
permesso `richieste.gestisci` per amministratore e assistente e la colonna
|
||||
`assegnazioni.cartaceo`): nome e note cifrati; nel registro delle attività
|
||||
solo tipo, stato, numero (`richiesta_ricevuta` all'arrivo, poi i cambi di
|
||||
stato). `RichiesteServizio`: `registra()`, `destinatari()`, `nomiSimili()`,
|
||||
`assegnazioneAperta()`.
|
||||
- **Email di avviso** (`Notifications\RichiestaRicevuta`) a chi ha
|
||||
`richieste.gestisci` con l'email confermata, solo se la posta funziona
|
||||
(`ConfigurazionePosta::funzionante()`). Non in coda: contiene il nome.
|
||||
- **Conferma dalla Home** (riquadro *Richieste*, solo con il permesso):
|
||||
scelta dell'utente, "così non si modifica troppo il codice del form
|
||||
precompilato". Per un nuovo territorio la Home propone i proclamatori attivi
|
||||
con un nome simile (punteggio per parola: uguale 3, iniziale 2, una lettera
|
||||
di differenza 1; serve almeno 2) e ognuno apre *Assegna* con
|
||||
`?proclamatore=&richiesta=&dalla_home=1`; per una riconsegna, *Rientra* con
|
||||
`?richiesta=`. I due moduli leggono `richiesta` solo se aperta e se l'utente
|
||||
ha il permesso (`#[Locked] richiestaId`), la mostrano sopra il form e, fatta
|
||||
l'operazione, la segnano **evasa** (`Richiesta::evadi()`). Altrimenti
|
||||
*Scarta*. La Home "messaggi" del documento sono solo queste richieste.
|
||||
- **Pulizia**: `richieste:pulizia` ogni notte cancella le richieste gestite da
|
||||
più di `PuliziaRichieste::GIORNI` = 90 giorni. Le richieste non sono
|
||||
nell'XML né nel `.zip` (un ripristino non le tocca); l'azzeramento le
|
||||
cancella (passo "Richieste" di `ResetApplication`, ora 12 passi).
|
||||
- **Cartaceo sull'assegnazione** (scelta dell'utente: "va sull'assegnazione"):
|
||||
spunta su *Assegna* e in "Il mio gruppo" (`GruppiServizio::assegna(...,
|
||||
cartaceo:)`), etichetta "cartaceo" nell'elenco degli assegnati (solo dove è
|
||||
vera: la riga resta sotto i 2,6 KB) e in "Il mio gruppo", pagina
|
||||
**Cartacei** (`assegnazioni/cartacei`, `territori.assign`, voce di menu sotto
|
||||
*Assegnazioni*) con i territori cartacei fuori. Passa per l'XML.
|
||||
- **S-13 per email**: `registro:invia-s13 {--anno=}` manda
|
||||
`Mail\ModuloS13Mail` (PDF allegato, non in coda) agli amministratori con
|
||||
l'email confermata; nello scheduler `weeklyOn(0, '08:00')` con
|
||||
`when(settimana dopo in un altro mese)` = **ultima domenica del mese**. Senza
|
||||
posta non parte e lo dice. Nel registro `s13_inviato` con anno e quanti.
|
||||
- Informativa privacy aggiornata (dati, conteggi, posta, conservazione;
|
||||
revisione 21 ottobre 2026). Test in `tests/Feature/RichiesteTest.php` e
|
||||
`GruppiServizioTest` (cartaceo dal sorvegliante, cartaceo nell'XML).
|
||||
|
||||
### Sicurezza: PHP CVE-2026-109618 / CVE-2026-109619 (21 ottobre 2026)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user