# 🧪 SOP: TEST DI IMPORTAZIONE MONO-STABILE E ASSIMILAZIONE PROGRESSIVA > **Istruzione per l'Agent:** Questo è un file di Livello 1 (Direttiva). Non modificare il codice esistente in `app/Console/Commands/` prima di aver completato la fase di ispezione. Tolleranza errore: ZERO. ## 1. Obiettivo del Test Effettuare un'importazione di test controllata per un **singolo stabile pilota** (es. `0021`), isolando i dati anagrafici (Condomini, Inquilini, Fornitori) nel database MySQL di staging per verificare la quadratura, senza sovrascrivere o alterare le strutture stabili già sviluppate in NetGescon. ## 2. Regola d'Oro: Idempotenza e Fallback (Non distruggere il passato) Per evitare che la correzione di un bug rompa funzionalità preesistenti, applica rigorosamente questo algoritmo deterministico di "Merge Sicuro": 1. **Controllo Preventivo:** Prima di un `insert`, verifica se la combinazione univoca del record esiste già (tramite il Codice Univoco Anagrafica o la chiave composta `Codice_Legacy + ID_Gestione`). 2. **Integrazione / Merge:** Se il dato esiste già nel database, esegui SOLO un aggiornamento dei campi mancanti o modificati (`update`/`merge`). Non rigenerare ID nativi, non duplicare le tabelle millesimali e non toccare i saldi storici consolidati. 3. **Log degli Errori Contabili:** Se mancano dati obbligatori nel legacy (es. un codice fiscale o una tabella millesimale orfana), lo script non deve inventare dati e non deve saltare il record silenziosamente. Deve registrare l'anomalia in un file di log (`storage/logs/migrazione_test.log`) per permettere all'utente di visionarlo graficamente a destra (DX). ## 3. Gestione dei Vecchi File di Documentazione (.md) L'utente caricherà progressivamente i vecchi file di spiegazione e i manuali accumulati nel tempo. Quando l'utente ti fornisce un vecchio file di documentazione: - **NON devi riscrivere o smontare l'applicazione** basandoti su logiche superate presenti nei vecchi file. - **DEVI estrarre solo le logiche di business contabili valide** (es. come calcolare una specifica lettura o come era strutturato un vecchio fondo). - **DEVI integrare** queste regole all'interno dei file della cartella `directives/` aggiornandoli come documenti vivi.