++ Prima versione del designer piantine + Skill grafica
This commit is contained in:
42
HANDOFF.md
42
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: **30 luglio 2026**.
|
||||
Ultimo aggiornamento: **31 luglio 2026**.
|
||||
|
||||
---
|
||||
|
||||
@@ -31,6 +31,14 @@ confrontando l'impronta degli asset). `MAX_UPLOAD_MB=2048` è impostato **solo**
|
||||
su develop; la produzione non è stata toccata e resta sul suo deploy
|
||||
precedente, senza quella variabile.
|
||||
|
||||
**Il 31/07 è nata la sotto-app "Piantine"** (nuova voce nel menu
|
||||
Amministrazione): KML dell'area città, editor dei poligoni su OpenStreetMap,
|
||||
immagini HD dal container `map-renderer` e PDF sul modulo S-12 con storico
|
||||
versioni. Architettura e agganci sono descritti in [Decisioni
|
||||
architetturali](#le-piantine-sono-una-sotto-app-renderer-esterno-agganci-minimi).
|
||||
Al primo deploy il compose costruisce anche l'immagine del renderer; non
|
||||
servono variabili nuove in Dokploy.
|
||||
|
||||
Il 30/07 sono state fatte due cose.
|
||||
|
||||
**La suite di test, che prima non esisteva**: 79 test eseguibili con un comando,
|
||||
@@ -156,6 +164,38 @@ messaggio d'errore è più chiaro).
|
||||
Deliberato: un errore immediato è meglio di un database in produzione con
|
||||
password `secret`.
|
||||
|
||||
### Le piantine sono una sotto-app: renderer esterno, agganci minimi
|
||||
|
||||
La pagina **Piantine** (`/piantine`, solo amministratore) genera le mappe dei
|
||||
territori: si carica il KML dell'area della città, si disegnano i poligoni su
|
||||
OpenStreetMap (Leaflet), e da ogni poligono si ottiene un'immagine ad alta
|
||||
definizione e — a scelta — il PDF sul modulo ufficiale S-12
|
||||
(`resources/pdf/S-12_I.pdf`, importato con FPDI) che sostituisce quello del
|
||||
territorio. Il PDF precedente finisce nella tabella `territorio_pdf_versioni`
|
||||
ed è ripristinabile dalla stessa pagina.
|
||||
|
||||
Il rendering vero e proprio **non sta nell'applicazione**: lo fa il container
|
||||
`map-renderer` (`docker/renderer/`, Node + sharp), che scarica le tessere OSM
|
||||
(cache persistente nel volume `tile_cache`, User-Agent identificante,
|
||||
attribuzione impressa sull'immagine come da licenza), le cuce, disegna il
|
||||
confine e attenua l'esterno. L'app gli parla solo via HTTP sulla rete interna
|
||||
(`config/piantine.php`, default `http://map-renderer:3000`: nessuna variabile
|
||||
da aggiungere in Dokploy). Se il container è giù, l'unica cosa che smette di
|
||||
funzionare è la generazione delle immagini; il resto del gestionale non lo sa
|
||||
nemmeno.
|
||||
|
||||
Gli agganci al core sono deliberatamente pochi: la rotta nel gruppo
|
||||
`settings.manage`, la voce di menu, e l'aggiornamento di
|
||||
`pdf_path`/`thumbnail_path` sul territorio quando si sostituisce un PDF (stesso
|
||||
percorso `territori-pdf/` + `TerritorioThumbnailService` dell'upload manuale).
|
||||
Le geometrie vivono nella tabella separata `territorio_mappe`, l'area KML in
|
||||
`storage/app/piantine/`: rimuovere la sotto-app significa togliere questi
|
||||
pezzi, non disfare il gestionale.
|
||||
|
||||
La rigenerazione massiva (`Jobs/RigeneraPiantine`) usa lo stesso schema di
|
||||
avanzamento di backup e import PDF (`PiantineOperationState`, cache + poll
|
||||
della pagina, un'operazione alla volta).
|
||||
|
||||
### Modifica/cancellazione delle assegnazioni: solo amministratore
|
||||
|
||||
L'unico punto in cui un'assegnazione **esistente** si modifica o si cancella è
|
||||
|
||||
Reference in New Issue
Block a user