# Bug risolti e validazioni ## Obiettivo Questa sezione tiene separato il materiale di fix dal manuale generale. Qui annotiamo: - bug corretti - fix applicato - stato della verifica - eventuali controlli ancora da fare su staging ## Registro sintetico ### Supporto > Modifiche in memory exhaustion su log grandi - Problema: la pagina `admin-filament/supporto/aggiornamento-nodo` poteva andare in `Allowed memory size exhausted` durante `loadRuntimeErrors()` quando `storage/logs/laravel.log` diventava molto grande. Sul nodo staging il caso reale era un `laravel.log` da circa `278 MB`. - Causa tecnica: `appendFromNdjson()` e `appendFromLaravelLog()` usavano `file(...)`, quindi caricavano l intero file in RAM anche se poi la UI mostrava solo gli ultimi eventi utili. - Fix applicato: in `app/Filament/Pages/Supporto/Modifiche.php` i lettori sono stati sostituiti con una lettura tail limitata per linee e byte (`readTailLines()`), mantenendo il comportamento della UI ma senza allocare l intero log. - Stato: [U] riprodotto e corretto sul nodo locale `/var/www/netgescon`; validazione eseguita via reflection su `loadRuntimeErrors()` con `laravel.log` grande, picco memoria rimasto intorno a `89 MB` e `39` righe BUG caricate correttamente. - Prevenzione: non usare aumento del `memory_limit` come rimedio principale; mantenere logrotate attivo e preferire sempre parsing incrementale o tail bounded per i file operativi letti dalla UI. ### Supporto > Modifiche con `ProgramAclService` assente su nodo staging - Problema: la pagina `admin-filament/supporto/aggiornamento-nodo` poteva andare in `BindingResolutionException` con `Target class [App\Services\ProgramAclService] does not exist` durante `canAccess()`. - Causa tecnica: sul nodo staging il checkout deployato non conteneva `app/Services/ProgramAclService.php`; la pagina supporto dipendeva in modo rigido da quel service anche per un semplice controllo accessi. - Fix applicato: `Modifiche::canAccess()` usa `ProgramAclService` solo se la classe esiste e si risolve correttamente; se manca, fa fallback ai ruoli amministrativi (`super-admin`, `admin`, `amministratore`) e non blocca la pagina tecnica. - Stato: [U] validato su `/var/www/netgescon` con service realmente assente; `App\Filament\Pages\Supporto\Modifiche::canAccess()` non genera piu eccezioni e ritorna correttamente `true` per un utente amministrativo. - Prevenzione: nelle pagine di supporto e deploy evitare dipendenze rigide da moduli opzionali o non ancora allineati sul nodo; il pannello di recupero deve sempre avere un percorso di fallback minimale. ### Ripristino bootstrap pannello admin - Problema: `AdminFilamentPanelProvider.php` era stato corrotto da una modifica incompleta e impediva il bootstrap corretto. - Fix applicato: ripristino struttura PHP e riallineamento del provider. - Stato: [U] risolto localmente, bootstrap Laravel nuovamente valido. ### Token CTI Panasonic e lettura configurazione piu robusta - Problema: il flusso staging poteva fallire per risoluzione non coerente del token CTI. - Fix applicato: `PanasonicCstaController` riallineato a `config/cti.php` con risoluzione piu robusta. - Stato: [P] implementato e verificato in locale; su staging resta da completare la validazione end-to-end del canale reale. ### Mismatch stabile/anno in Ordinarie - Problema: la pagina `gescon/ordinarie` poteva mostrare dati non coerenti con stabile e anno scelti nella topbar. - Fix applicato: default anno dal contesto condiviso e centralizzazione risoluzione codice legacy stabile. - Stato: [P] implementato e validato a livello codice; da verificare sul caso reale staging con dati utente specifici. ### Filtri acqua e servizi non coerenti con la gestione attiva - Problema: in `condomini/servizi-utenze` e archivio letture la selezione anno/stabile non era sempre rispettata in tutte le query. - Fix applicato: applicazione del filtro anno attivo e del contesto stabile ai blocchi acqua principali. - Stato: [P] implementato e testato sintatticamente; serve verifica funzionale con dati annuali reali su staging. ### Tracciato tecnico SMDR e CSTA mescolato - Problema: una sola vista tecnica rendeva meno chiaro distinguere fallback SMDR da eventi CTI/CSTA ricchi. - Fix applicato: nuovi tab distinti in `strumenti/post-it-gestione` e vista click-to-call dedicata. - Stato: [U] implementato; da usare come base per test operativi PBX e future integrazioni provider-agnostic. ## Validazioni eseguite nell ultimo ciclo - `php artisan list` eseguito con esito positivo dopo gli ultimi fix applicativi - controlli sintattici PHP sulle classi modificate senza errori - diagnostica editor senza errori sui file toccati - `Supporto > Modifiche`: validato il nuovo parsing tail-bounded dei log su nodo con `laravel.log` da `278 MB`, senza esaurimento memoria ## Validazioni ancora aperte - verificare su staging la nuova tab `CTI / CSTA e Click-to-Call` - verificare il caso reale di mismatch stabile/anno con dati staging - usare il filtro annuale acqua per l estrazione effettiva delle fatture e confermare il perimetro dati ## Regola di aggiornamento Ogni bug corretto va aggiornato qui in quattro righe: 1. problema osservato 2. fix applicato 3. stato verifica locale 4. stato verifica staging o nodi remoti