# Decisions & Architecture ## Gestione Firebase Sync e Tipizzazione - **Problema**: Firebase trasforma dizionari con chiavi numeriche sequenziali (come le 17 circostanze del CID) in List, causando crash a runtime. - **Soluzione**: Introdotta e adottata la funzione helper `fixCircostanze` in `CidDataManager` per fare un parsing dinamico sicuro sia da List che da Map. ## Coordinate PDF - **Decisione (Blindata)**: Il motore PDF utilizza un posizionamento assoluto (`pw.Stack`) con coordinate fisse (es. Box 12 Y=575.0, Font 8pt Bold) per garantire una stampa pixel-perfect identica al modulo cartaceo ufficiale. Non rompere mai il layout per testo in overflow. ## Mappatura Payload - Si utilizzano nomi brevi (minificati) per il payload JSON (es. `cog` per Cognome, `cf` per Codice Fiscale, `circ` per Circostanze) per ridurre le dimensioni dei pacchetti e ottimizzare i codici QR. ## Sincronizzazione Dati Condivisi - Il "Cassetto 1" (Grafico Incidente con auto e strade) viene gestito **esclusivamente dal Conducente A** e sincronizzato in sovrascrittura su B per evitare conflitti logici. - Le Firme ("Cassetto 2") restano indipendenti (A non sovrascrive B).