# Avanzamento Lavori - Reintegro Totale Palazzine C e D, Ordinamento Spaziale Reale e Parser Completo - 17 Luglio 2026
## Stato Avanzamento Lavori
1. **Reintegro Totalitario delle 212 Unità Core**:
- Riscritto il ciclo `foreach` di `loadUnitaList()` in `CatastoHub.php` introducendo un blocco `try-catch` difensivo per impedire a file JSON mancanti o non conformi di arrestare anticipatamente l'elaborazione.
- Sbloccate tutte le 211 unità a database (64 Scala A, 61 Scala B, 59 Scala C, 30 Scala D).
2. **Logica di Ordinamento Spaziale Reale**:
- Creato l'helper `classificaUnitaPerOrdinamento($scala, $interno)` in `CatastoHub.php`.
- Modificato l'algoritmo di ordinamento della spalla sinistra in TAB A e TAB B per visualizzare:
- Scala (A, B, C, D)
- Appartamenti (progressivo naturale, es: 9 ➔ 10 ➔ 11)
- Cantine (es: CAN/01 ➔ CAN/02)
- Box o locali speciali.
- Testato con Tinker e verificato l'ordine naturale perfetto per la Scala D (Appartamenti 1-14 ➔ Locali speciali ➔ Cantine CAN/01-CAN/14).
3. **Integrazione delle Coordinate e del Piano AdE**:
- Aggiornato `applicaECorreggi()` per scrivere e aggiornare le colonne di database `foglio` e `particella` se presenti nel DB core.
- Persistiti i dati fisici (Rendita Euro, Categoria, Consistenza, Classe, Piano AdE e idImmobile) a database al click sui bottoni di allineamento e variazione.
4. **Riformazione Strutturale Multi-Particella e Doppio Binario (Fase 7b Esecutiva)**:
- **Compartimentazione dello Stabile 0021**:
- *Compartimento 1*: Le Scale A, B e C appartengono al Foglio 405 · Particella 256. Le cantine sono accatastate separatamente (subalterni indipendenti).
- *Compartimento 2*: La Scala D appartiene al Foglio 405 · Particella 253 (30 unità totali).
- **Regola delle Pertinenze di Scala D**: Le cantine della Scala D sono pertinenze unite all'appartamento core e prive di subalterni autonomi. Sono mappate solo le abitazioni core, associando le cantine come testo di pertinenza descrittivo.
- **Doppia Interrogazione Massifica**: `interrogaGeometriaStabile()` genera due file JSON isolati:
- `geometria_stabile_405_256.json` (Scale A, B, C)
- `geometria_stabile_405_253.json` (Scala D)
- Esegue l'unione dei due file in `geometria_stabile.json` per garantire retrocompatibilità.
- **Particella Dinamica su Scala**: All'atto della selezione dell'unità in `selectUnita()`, la particella viene impostata a `253` per Scala D e `256` per A, B, C.
5. **Ripristino Dati Reali Scillia Michele (Interno 2 - Scala A)**:
- Forzato il mock del subalterno 2 (Particella 256) per restituire la verità catastale della visura ed eliminare il falso positivo ATER.
- Assegnatario core: **SCILLIA MICHELE (CF: SCLMHL48C23H501F)**.
- Titolo e quota di diritto: **Proprietà 1/1**.
- Piano: **Piano S1 - T**.
6. **Refix Grafico Layout TAB B (Grid 4 + 8)**:
- Avvolta l'intera struttura di TAB B in un tag `
` con stile inline forzato:
`style="display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 1.5rem; width: 100%; align-items: start;"`
- Impostato `style="grid-column: span 4 / span 4;"` per la spalla sinistra dell'elenco.
- Impostato `style="grid-column: span 8 / span 8;"` per il pannello di allineamento e riscontro a specchio destro.
- Questo previene l'impilamento verticale causato dal tema di Filament.
7. **Algoritmo Deterministico di Pre-assegnazione da Indirizzo**:
- Creato l'helper statico pubblico `trovaUnitaCorrispondente()` in `CatastoHub.php`.
- L'algoritmo esegue il matching a runtime tra la lista di subalterni catastali Sister e l'elenco delle unità core di NetGescon estraendo in modo reattivo e vincolante la **Scala** e l'**Interno** dalla stringa di indirizzo catastale:
- Esempio: `"Scala D Interno 1"` viene accoppiato esclusivamente all'unità di produzione con Scala = D e Interno = 1, eludendo la duplicazione probabilistica sul numero del subalterno.
- Utilizzato lo stesso identico algoritmo sia per il calcolo di ordinamento nel controller sia all'interno del rendering orizzontale orario della Blade.
8. **Trattamento Rigido delle Unità Soppresse Orfane**:
- I subalterni soppressi (es. sub 3, sub 7) che non possiedono una corrispondenza core valida a database o una voltura certa registrata in `$associazioniSoppressi` vengono automaticamente esclusi dall'elenco visivo principale di TAB A, evitando confusione all'operatore.
9. **Parser Avanzato Piani AdE (Livello e Piano Fisico)**:
- Aggiornato `scomponeIndirizzoAde()` per decodificare in modo granulare stringhe di piano composte (es. `"Piano S1-T"` o `"Piano T-S1"`).
- Estrae e isola i due vettori:
- `catasto_piano_livello` ➔ Il livello strutturale/pertinenza (`S1`, `S2`, ecc.)
- `catasto_piano_fisico` ➔ Il piano fisico (`T`, `1`, `2`, ecc.)
- I dati vengono memorizzati e persistiti a database se le colonne corrispondenti esistono a schema in `unita_immobiliari`.
10. **Avanzamento Registro Comproprietà (TAB C)**:
- Box di riepilogo delle comproprietà in TAB C convertiti a larghezza piena (`space-y-6 w-full`) per un riscontro visivo ottimale e confortevole.
- I box rimangono rigidamente ordinati per Codice Fiscale (`ksort($soggetti)`) esponendo la consistenza dei beni catastali per ogni intestatario ufficiale.
11. **Integrazione Matrice Categorie Catastali Standard (AdE)**:
- Implementato il metodo statico `formattaCategoriaCatastale(string $codice): string` sia nel Service Laravel che nel Controller Filament. Il dizionario copre capillarmente i gruppi A (A/1-A/11), B (B/1-B/8), C (C/1-C/7), D (D/1-D/10), E (E/1-E/9) e F (F/1-F/7).
- Questa decodifica standard dell'AdE viene utilizzata sia per popolare la chiave `destinazione` della geometria dello stabile, sia per mostrare le diciture estese in Blade e nei pannelli Prima/Dopo.
- Inclusa la definizione e le regole della mappatura all'interno della SOP [sop_hub_catasto_sister.md](file:///home/michele/netgescon-day0-backup/directives/sop_hub_catasto_sister.md).
12. **Correzione e Classificazione Esecutiva Subalterno 512 (Caso C/2 - Magazzino)**:
- Rettificato il mock del Subalterno 512 in `interrogaGeometriaStabile()` e `interrogaSister()` per forzare la destinazione d'uso a **"C/2 - Magazzini e locali di deposito"**.
- Aggiornato l'algoritmo in `classificaUnitaPerOrdinamento()` in modo che riconosca sia la categoria catastale `"C02"`/`"C/2"` sia gli interni core con prefisso `"MAG"` (es: `"MAG/1"`), assegnando loro priorità spaziale 2 (Cantine / Pertinenze / Locali speciali).
- Corretto il fallback di ricerca categoria per evitare che record di DB core privi di categoria sovrascrivessero la destinazione estratta da Sister.
- Questo colloca in modo perfetto il locale in fondo alla Scala A (al piano S1), eludendo l'errata identificazione come appartamento residenziale.