netgescon-day0/skill-netgescon/control-tower/CURRENT-205.md

84 lines
6.8 KiB
Markdown

# CURRENT-205
TASK_ID: task-unificazione-fornitore-rubrica-centralino
MACHINE: .205
STATO: completato
## Obiettivo Completato
1. **Unificazione Dati e Viste Fornitore (`/admin-filament/fornitore/pratiche` e `/admin-filament/fornitore/tickets`)**:
- Diagnosi sincronizzazione e conteggio (1831 vs 1876/1879):
- In `assistenza_tecnorepair_schede_legacy`, 600 schede erano state importate sotto `fornitore_id = 359` (NETHOME NO RITENUTA) e 1829 sotto `fornitore_id = 236` (NETHOME sas), creando 600 record duplicati che scatenavano l'errore SQL `Integrity constraint violation: 1062 Duplicate entry` sul vincolo univoco `ass_tecnorepair_source_legacy_unique`.
- In `TecnoRepairArchiveService.php`, il metodo `resolveMdbPath()` metteva il fallback locale stale (`Miki-Bug-workspace/.../TecnoRepairDB.mdb` fermo a 1834) davanti al montaggio CIFS live.
- Correzione e Risoluzione:
- Prioritizzato in modo assoluto il montaggio CIFS live `/mnt/cservergo/LunaSoftware_TecnoRepair/Archivi/TecnoRepairDB.mdb`.
- Risolti ed eliminati i 600 duplicati, consolidando tutti i 1874 record sotto il fornitore primario `236` (gestendo resilientemente `whereIn('fornitore_id', [236, 359, 392])`).
- Eseguita sincronizzazione live: **1874 schede lette, create/aggiornate con successo, max legacy_id 1879 (inclusa la #1876)**.
- Aggiornata la pagina `PraticheTecnorepair` e `TicketOperativi`: ora mostrano esattamente lo stesso dataset consolidato (1874 schede) con le stesse KPI, pulsanti e collegamenti rapidi.
2. **Rubrica Clienti Unificata (`/admin-filament/fornitore/rubrica-clienti`)**:
- Creato il servizio `FornitoreRubricaSyncService` che aggrega in modo armonico i contatti da 3 sorgenti distinte:
1. **TecnoRepair (TClienti)** dal database MDB live `/mnt/cservergo`: **1.243 contatti**.
2. **Contabilità MySQL Target Cross (`arc_nehr` su 192.168.0.36:3307)** da `cli` e `ind`: **2.473 contatti**.
3. **NetGescon Amministratore**: contatti dai ticket condominiali assegnati al fornitore.
- Risultato: **3.716 contatti unificati** in `fornitore_clienti` con matching automatico su CF, PIVA, telefono ed email verso `rubrica_universale`.
- Aggiornata la UI di `RubricaClienti`:
- Pulsante "⚡ Sincronizza Rubrica" in testata.
- Filtro reattivo per sorgente (`Tutte le sorgenti`, `TecnoRepair`, `Contabilità`, `Ticket NetGescon`).
- Badge visivi semantici di provenienza e ricerca in tempo reale.
- Collegamenti bidirezionali con `LavorazioniOperative`, `PraticheTecnorepair` e `TicketOperativi`.
3. **Integrazione Centralino Telefonico (Panasonic NS1000 / TAPI) & Wireframe ASCII**:
- Identificato lo script in esecuzione all'avvio di Windows:
- Task Schedulato `NetGescon Panasonic Live Bridge` (creato da `scripts/ops/windows/install-netgescon-panasonic-live-task.cmd` / `.ps1`).
- Script launcher: `start-netgescon-panasonic-live.cmd` / `.ps1` che esegue in loop `watch-netgescon-panasonic-tapi-dotnet-events.ps1`.
- Diagnosi del "furto di focus":
- Lato Windows: console PowerShell interattiva senza `-WindowStyle Hidden` che all'avvio del loop o su restart/errore apre una finestra e ruba il focus.
- Lato NetGescon: `TopbarLiveCall` eseguiva polling ogni 3s e, alla ricezione della chiamata, richiamava modali con direttive `autofocus` che catturavano il cursore.
- Soluzione architetturale push:
- Esecuzione Windows headless come Servizio o Task `SYSTEM` con reindirizzamento solo su file di log.
- Push immediato REST allo squillo (`POST /api/v1/cti/panasonic/incoming`) verso NetGescon.
- Floating toast non-intrusivo senza autofocus in NetGescon, espandibile su richiesta dell'operatore.
- Redatti **4 diagrammi ASCII Wireframe** dettagliati (architettura, floating toast, scheda chiamante Fornitore con riparazioni, scheda chiamante Amministratore con estratto conto spese/incassi/rate scadute e ticket aperti).
## Output del Giro Operativo
ESITO_205: riuscito
TASK_ID: task-unificazione-fornitore-rubrica-centralino
REPOSITORY: ssh://git@git.netgescon.it:2222/michele/netgescon-day0.git
BRANCH: stabilization/205-zero
COMMIT: in_pubblicazione
FILE_O_AREE_TOCCATE:
- app/Console/Commands/TecnoRepairImportRubricaClientiCommand.php
- app/Filament/Pages/Fornitore/PraticheTecnorepair.php
- app/Filament/Pages/Fornitore/RubricaClienti.php
- app/Filament/Pages/Fornitore/TicketOperativi.php
- app/Services/Fornitore/FornitoreRubricaSyncService.php
- app/Services/Tecnorepair/TecnoRepairArchiveService.php
- bootstrap/app.php
- resources/views/filament/pages/fornitore/lavorazioni-operative.blade.php
- resources/views/filament/pages/fornitore/rubrica-clienti.blade.php
- resources/views/filament/pages/fornitore/ticket-operativi.blade.php
- skill-netgescon/control-tower/CURRENT-205.md
TEST_ESEGUITI:
- ./vendor/bin/pest tests/Feature/FornitoreTecnorepairAndIntegrationsTest.php (6 passed, 54 assertions)
- ./vendor/bin/pest tests/Feature/PasswordResetAndEmailServiceTest.php tests/Feature/FornitoreTecnorepairAndIntegrationsTest.php tests/Feature/FornitoreContabilitaSerialiImportTest.php tests/Feature/StrutturaDatabaseAndStorageTest.php tests/Feature/NominativiAndFeMatchingTest.php tests/Feature/PostaImapWebmailAndProtocolloTest.php tests/Feature/ContabilitaRelazionaleOrdinarieTest.php tests/Feature/BpmBankParserAndImporterTest.php tests/Feature/UnitaGestioneTemporaleTest.php tests/Feature/CatastoHubDbDrivenTest.php tests/Feature/UnitaCondominoInquilinoRoleToggleTest.php tests/Feature/UnitaImmobiliarePageTest.php tests/Feature/BenedettoBonificaIdempotenteTest.php tests/Feature/ControlTowerPollCommandTest.php (47 passed, 299 assertions, 100% pass)
- php artisan view:clear && php artisan view:cache (successo, zero errori)
GATE_STATISTICS:
- BLADE_COMPILATION: 100% pulita senza token inattesi.
- TECNOREPAIR_RECORDS: 1874 schede unificate e sincronizzate direttamente dal live MDB (/mnt/cservergo), max legacy_id 1879, inclusa #1876.
- RUBRICA_CLIENTI: 3.716 contatti aggregati (1.243 TecnoRepair + 2.473 Contabilità MySQL arc_nehr + Ticket NetGescon).
- WIREFRAMES_CENTRALINO: 4 disegni ASCII completati per architettura no-focus-steal, floating toast e schede contestuali Fornitore/Amministratore.
- TEST_SUITE: 47 test Feature passati (299 asserzioni, 100% pass).
BLOCCO_DATI: no
BLOCCO_CONTRATTO: no
RISCHI_APERTI: nessuno
## Prossimo Passo per .200 (Validazione)
- Eseguire il checkout del branch `stabilization/205-zero`.
- Eseguire la suite di test Pest (47 passed, 299 assertions).
- Verificare su http://192.168.0.205:8000/admin-filament/fornitore/pratiche il conteggio di 1874 schede e il perfetto funzionamento del pulsante "Sincronizza MDB TecnoRepair".
- Verificare su http://192.168.0.205:8000/admin-filament/fornitore/rubrica-clienti i 3.716 contatti con badge sorgente e filtri.
- Valutare i wireframe ASCII per l'integrazione del centralino prima di avviare l'implementazione del listener/popup.