++ pagina Assegna più leggera; "Vedi tutti" in testata nella Home
Assegna pesava 387 KB e Livewire li rimandava a ogni interazione. - Elenco dei territori assegnati in un componente lazy a sé (ElencoAssegnati): il form compare subito e non lo ridisegna. - Ricerca nell'elenco e anteprima della miniatura nel browser: nessuna richiesta al server mentre si scrive o si sceglie il territorio. - Icone SVG come simboli richiamati con <use>. - Assegnazione::giorni: cast a int (Carbon 3 restituisce un float). Home: "Vedi tutti" diventa un pulsante nella testata dei riquadri. README e HANDOFF aggiornati. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
44
README.md
44
README.md
@@ -338,6 +338,16 @@ Cosa serve sapere:
|
||||
`CAST(... AS UNSIGNED)` nell'ordinamento del Registro — e che quindi va
|
||||
provato sullo stack vero, non qui.
|
||||
|
||||
La logica JavaScript senza DOM (la ricerca nei campi di scelta,
|
||||
`resources/js/scelta.js`) ha i suoi test in `tests/js/`, con il test runner di
|
||||
Node:
|
||||
|
||||
```bash
|
||||
npm run test:js
|
||||
# oppure, senza Node installato:
|
||||
docker run --rm -v "$PWD":/app -w /app node:20-alpine node --test tests/js/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Variabili d'ambiente
|
||||
@@ -678,11 +688,15 @@ docker compose --profile dev up -d --build
|
||||
- Media mensile di percorrenza e durata media delle assegnazioni
|
||||
- Campagna attiva con barra di progresso
|
||||
- Tre liste rapide con azione diretta: **da assegnare**, **prioritari**,
|
||||
**da rientrare**
|
||||
**da rientrare**; quando l'elenco è troncato, **"Vedi tutti"** è un pulsante
|
||||
in testata che apre l'elenco territori già filtrato
|
||||
|
||||
### Territori
|
||||
- CRUD completo con upload PDF e miniatura generata automaticamente
|
||||
- Filtri per zona, tipologia e stato
|
||||
- **"Nuovo territorio"** apre il designer delle piantine già in disegno: il
|
||||
territorio si crea dal confine disegnato (per chi non è amministratore resta
|
||||
il form)
|
||||
- Filtri per zona, tipologia e stato, conservati nell'indirizzo della pagina
|
||||
- Badge di stato colorati e indicatore di priorità (manuale o automatica)
|
||||
- Dettaglio con visualizzatore PDF e storico assegnazioni per anno teocratico
|
||||
- Link PDF pubblico condivisibile, a scadenza configurabile
|
||||
@@ -696,12 +710,28 @@ docker compose --profile dev up -d --build
|
||||
- Soft delete con cestino
|
||||
|
||||
### Assegnazione e rientro
|
||||
- Selezione territorio disponibile e proclamatore attivo
|
||||
- **Scelta con ricerca** di territorio e proclamatore (anche nel Registro e nel
|
||||
designer delle piantine): si scrive e compaiono le proposte più vicine —
|
||||
uguale, inizia con, contiene, errore di battitura ("forse cercavi") — con
|
||||
le parole in qualsiasi ordine, senza badare a maiuscole e accenti. Campo
|
||||
vuoto: l'elenco completo. Pensata anche per il telefono
|
||||
- I territori già assegnati si trovano cercando ("già assegnato a …") ma non
|
||||
si possono scegliere; l'anteprima della miniatura segue la scelta
|
||||
- Anno teocratico rilevato automaticamente dalla data
|
||||
- Validazione: territorio non già assegnato, entrambi attivi
|
||||
- **Invio del link dopo l'assegnazione**: una finestra chiede il canale —
|
||||
*Copia link* sempre, *WhatsApp* se il proclamatore ha un numero, *Email* se
|
||||
ha un indirizzo e la posta è configurata (la manda l'app) — e se il link è
|
||||
stato inviato. Solo dopo la risposta si va avanti; altrimenti l'assegnazione
|
||||
resta segnalata **"Link ancora da inviare"**, con "Invia link" per riprendere
|
||||
- L'elenco dei territori assegnati si carica subito dopo la pagina e si filtra
|
||||
nel browser, senza attese
|
||||
- Rientro con calcolo automatico dei giorni
|
||||
- **Prompt campagna**: se il rientro ricade nel periodo di una campagna, viene
|
||||
chiesto se conteggiarlo
|
||||
- **Prompt campagna**: se il territorio era fuori durante una campagna viene
|
||||
chiesto se è stato percorso per la campagna; oltre la soglia "da rientrare"
|
||||
compare un avviso di tempo di percorrenza molto alto
|
||||
- **Dopo una conferma o un annulla si torna alla pagina di partenza**, con i
|
||||
suoi filtri, ricerca, ordinamento e pagina (aperta dal menu: come prima)
|
||||
|
||||
### Campagne
|
||||
- CRUD con date di inizio e fine
|
||||
@@ -799,11 +829,11 @@ una revoca ha effetto immediato senza bisogno di ricaricare la pagina.
|
||||
| `settings` | Configurazione singleton |
|
||||
| `zone` | Zone territoriali |
|
||||
| `tipologie` | Tipologie di territorio |
|
||||
| `proclamatori` | Assegnatari, con nome/cognome cifrati e soft delete |
|
||||
| `proclamatori` | Assegnatari, con nome/cognome e i facoltativi email/telefono cifrati, soft delete |
|
||||
| `territori` | Cartoline con zona, tipologia, PDF, miniatura, soft delete |
|
||||
| `anni_teocratici` | Periodi settembre → agosto |
|
||||
| `campagne` | Periodi speciali con date e descrizione |
|
||||
| `assegnazioni` | Territorio ↔ proclamatore, con date, anno e campagna |
|
||||
| `assegnazioni` | Territorio ↔ proclamatore, con date, anno e campagna; stato dell'invio del link (`link_sent`, `link_da_inviare`, `link_canale`) |
|
||||
| `activity_log` | Audit trail |
|
||||
|
||||
**Vincoli e indici principali**
|
||||
|
||||
Reference in New Issue
Block a user