docs(control-tower): align CURRENT-205 with fornitore mysql serial import and tests

This commit is contained in:
michele 2026-09-11 16:17:02 +02:00
parent 85037aece1
commit fff604201a

View File

@ -1,45 +1,65 @@
# CURRENT-205
TASK_ID: task-db-structure-storage-erd
TASK_ID: task-fornitore-mysql-seriali-rma
MACHINE: .205
STATO: completato
## Obiettivo Completato
1. **Spiegazione Errore di Sessione & Risoluzione**:
- Chiarito che l'errore `Error ID: 8f74c6bf-bcca-475a-aba1-8dd6d35de514-3800` è una disconnessione temporanea/timeout dello stream SSE del client AI e non un problema dei database (MySQL/PostgreSQL) né del backend Laravel.
- Tutti i commit, file e test rimangono sempre salvi e integri.
1. **Connessione Read-Only a Contabilità MySQL Esterna (`192.168.0.36:3307`)**:
- Individuata porta MySQL attiva `3307` e autenticazione con credenziali fornite.
- Analizzato database contabile gestionale Target Cross `arc_nehr` (oltre 580.000 righe) collegato all'anagrafica aziende `arc.dit` (NETHOME sas di BARONE M. & C., P.IVA 10055221005).
- Configurato `contabilita_mysql` in `config/database.php` in sola lettura.
2. **Cruscotto Grafico Struttura Database & Storage (`/admin-filament/impostazioni/struttura-database`)**:
- Creata la pagina Filament dedicata `StrutturaDatabase` con 5 KPI Summary cards, calcolo ingombro in tempo reale (MB Dati, MB Indici, Numero Record), e raggruppamento per 10 Domini applicativi.
- Tab 1: Tabella interattiva con filtri istantanei per ricerca e dominio, commenti e link diretti ad Adminer per ogni singola tabella.
- Tab 2: Diagramma architetturale ERD e regole invarianti di business (`id_cond`, `cod_cond`, `cond_inquil`, `codice_fiscale`, `perc_diritto_reale`).
- Tab 3: Simulatore di ingombro hardware interattivo (calcolo proiezioni GB disco, RAM consigliata e volume backup per 10 - 1000 stabili).
- Tab 4: Guida all'uso di Adminer Schema ERD interattivo e query SQL personalizzate.
2. **Parser Deterministico e Importazione Seriali / Prodotti / Fornitore NCOM SRL**:
- Creato `ContabilitaMysqlSerialImportService` e comando Artisan `php artisan fornitore:import-mysql-serials`.
- Analizzate 171 fatture e 488 righe documento da `fet` e `fea` di `NCOMSRL`.
- Creato fornitore locale `NCOM SRL` (P.IVA `14001151001`) e collegato al catalogo operativo di Nethome (`merged_supplier_ids`).
- Importati **117 seriali**, **81 prodotti** e **89 SKU/identifier**, incluso il seriale richiesto **`8CG9454YMN`** (Fattura N. 3964, acquisto a 265,00 €).
3. **Integrazione Visualizzatore Adminer ERD**:
- Accesso automatico e diretto allo schema ERD completo di 256 tabelle (`/adminer.php?server=127.0.0.1&username=netgescon_user&db=netgescon&schema=`).
3. **Risoluzione Contesto Fornitore e Accesso Immediato (`/fornitore/*`)**:
- Risolto il blocco "Questa vista richiede un fornitore selezionato" su:
- `/admin-filament/fornitore/seriali` (`SerialiCatalogo`)
- `/admin-filament/fornitore/prodotti` (`ProdottiCatalogo`)
- `/admin-filament/fornitore/tickets` (`TicketOperativi`)
- `/admin-filament/fornitore/lavorazioni` (`LavorazioniOperative`)
- Aggiunto il fallback automatico su Nethome (P.IVA 10055221005, ID 236) in assenza di query param.
- Integrato il selettore fornitore interattivo (dropdown) in testata per gli amministratori.
- Agganciata l'email `michele@nethome.it` (User 33) in `fornitore_dipendenti`, `operational_config` e `ResolvesOperatoreContext` per l'accesso riservato ai dati fornitore.
4. **Architettura Prodotti Multi-Codice / Alias Fornitori**:
- Modellati i codici alternativi dei diversi fornitori tramite `ProductIdentifier` (con `normalized_code`, `code_type`, `fornitore_id`) e `ProductOffer` per confrontare prezzi d'acquisto sotto il medesimo `Product` canonico.
## Output del Giro Operativo
ESITO_205: riuscito
TASK_ID: task-db-structure-storage-erd
TASK_ID: task-fornitore-mysql-seriali-rma
REPOSITORY: ssh://git@git.netgescon.it:2222/michele/netgescon-day0.git
BRANCH: stabilization/205-zero
COMMIT: ea6353e
COMMIT: 85037ae
FILE_O_AREE_TOCCATE:
- app/Filament/Pages/SuperAdmin/StrutturaDatabase.php
- resources/views/filament/pages/super-admin/struttura-database.blade.php
- tests/Feature/StrutturaDatabaseAndStorageTest.php
- app/Console/Commands/ImportNcomSerialsCommand.php
- app/Services/Catalog/ContabilitaMysqlSerialImportService.php
- app/Filament/Pages/Fornitore/Concerns/ResolvesOperatoreContext.php
- app/Filament/Pages/Fornitore/SerialiCatalogo.php
- app/Filament/Pages/Fornitore/ProdottiCatalogo.php
- app/Filament/Pages/Fornitore/TicketOperativi.php
- app/Filament/Pages/Fornitore/LavorazioniOperative.php
- resources/views/filament/pages/fornitore/seriali-catalogo.blade.php
- resources/views/filament/pages/fornitore/prodotti-catalogo.blade.php
- resources/views/filament/pages/fornitore/ticket-operativi.blade.php
- resources/views/filament/pages/fornitore/lavorazioni-operative.blade.php
- tests/Feature/FornitoreContabilitaSerialiImportTest.php
- skill-netgescon/control-tower/CURRENT-205.md
TEST_ESEGUITI:
- ./vendor/bin/pest 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 (33 passed, 218 assertions)
- ./vendor/bin/pest 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 (36 passed, 230 assertions)
GATE_STATISTICS:
- STRUTTURA_DATABASE_PAGE: Pagina Filament attiva con KPI, storage e filtri domini.
- ERD_MERMAID_DOMAIN_MAP: Documentazione visuale e deterministica delle relazioni chiave.
- STORAGE_SIMULATION: Simulatore di ingombro e scalabilità hardware 10-1000 stabili.
- ADMINER_ERD_INTEGRATION: Accesso 1-click a schema ERD e console SQL.
- TEST_SUITE: 33 test Feature passati (218 asserzioni, 100% pass).
- FORNITORE_CONTABILITA_MYSQL_CONNECTION: Porta 3307, host 192.168.0.36, db arc_nehr funzionante.
- NCOM_SRL_IMPORT: 171 fatture, 488 righe analizzate, 117 seriali persistiti (incluso 8CG9454YMN).
- FORNITORE_UI_FIX: Risolto blocco admin context su 4 pagine fornitore con dropdown selettore e default Nethome.
- NETHOME_SUPPLIER_HOOK: Collegamento email michele@nethome.it e profilo Fornitore 236.
- MULTI_CODICE_ALIAS: ProductIdentifier + ProductOffer operativi per unificazione multi-fornitore.
- TEST_SUITE: 36 test Feature passati (230 asserzioni, 100% pass).
BLOCCO_DATI: no
BLOCCO_CONTRATTO: no
RISCHI_APERTI: nessuno
@ -47,5 +67,6 @@ ## Output del Giro Operativo
## Prossimo Passo per .200 (Validazione)
- Eseguire il checkout del branch `stabilization/205-zero`.
- Eseguire la suite di test Pest (33 passed, 218 assertions).
- Verificare la nuova pagina Struttura Database (`/admin-filament/impostazioni/struttura-database`) e il visualizzatore Adminer ERD (`/adminer.php?schema=`).
- Eseguire la suite di test Pest (36 passed, 230 assertions).
- Verificare la ricerca seriale su `/admin-filament/fornitore/seriali` (cercare `8CG9454YMN`).
- Verificare il catalogo prodotti unificato su `/admin-filament/fornitore/prodotti`.