feat: Refactor dataset management logic into a new SchemaDiscoveryService, removing it from the ReportsController.
This commit is contained in:
@@ -32,3 +32,7 @@ File riassuntivo dello stato di sviluppo di Zentral.
|
||||
- Correzione import path nel modulo Report Designer e registrazione modulo nel backend.
|
||||
- [2025-12-05 Rename Modules to Apps](./devlog/2025-12-05-194100_rename_modules_to_apps.md) - **Completato**
|
||||
- Rinomina terminologia "Modulo" in "Applicazione" (App) su Backend e Frontend.
|
||||
- [2025-12-05 Remove Warehouse Tabs](./devlog/2025-12-05-224000_remove_warehouse_tabs.md) - **Completato**
|
||||
- Rimozione tab interne e header dal modulo Magazzino per uniformità con la UI principale.
|
||||
- [2025-12-05 Live Data Alignment](./devlog/2025-12-05-230000_live_data_alignment.md) - **Completato**
|
||||
- Implementazione `SchemaDiscoveryService` per allineamento automatico dataset report con strutture dati live.
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
# Rimozione Tab Magazzino
|
||||
|
||||
## Obiettivo
|
||||
Rimuovere le tab di navigazione interne al modulo Magazzino (`WarehouseLayout`), in quanto ridondanti rispetto alle tab principali dell'applicazione.
|
||||
|
||||
## Modifiche Apportate
|
||||
- Modificato `src/frontend/src/apps/warehouse/components/WarehouseLayout.tsx`:
|
||||
- Rimossa la componente `Tabs` e la logica associata (`navItems`, `useState`, `useEffect`).
|
||||
- Rimosso l'header contenente il titolo "Gestione Magazzino" e i breadcrumbs.
|
||||
- Semplificato il layout per mostrare solo l'`Outlet` all'interno di un `Box`.
|
||||
- Aggiunto padding (`p: 3`) al contenitore del contenuto per garantire una spaziatura adeguata.
|
||||
|
||||
## Stato
|
||||
Completato.
|
||||
@@ -0,0 +1,35 @@
|
||||
# Live Data Alignment for Report Designer
|
||||
|
||||
## Obiettivo
|
||||
Garantire che i dataset utilizzati nel report designer siano sempre automaticamente allineati con le strutture dati vive del gestionale, leggendo le strutture live invece di affidarsi a dati pre-configurati.
|
||||
|
||||
## Modifiche Apportate
|
||||
|
||||
### Backend
|
||||
1. **Nuovo Servizio `SchemaDiscoveryService`**:
|
||||
* Creato un servizio che scansiona `ZentralDbContext` per trovare tutti i `DbSet` disponibili.
|
||||
* Genera dinamicamente gli schemi dei dati basandosi sulle proprietà delle entità.
|
||||
* Supporta il caricamento dinamico delle entità con eager loading delle proprietà di navigazione.
|
||||
* Include un dizionario di metadati per mantenere descrizioni e icone curate per i dataset principali (Evento, Cliente, ecc.), pur supportando nuovi dataset automaticamente.
|
||||
|
||||
2. **Refactoring `ReportsController`**:
|
||||
* Rimossi i metodi statici hardcoded per la generazione degli schemi (`GetEventoSchema`, ecc.).
|
||||
* Rimossa la lista hardcoded dei dataset disponibili.
|
||||
* Integrato `SchemaDiscoveryService` per ottenere la lista dei dataset, gli schemi e i dati.
|
||||
* Aggiornato `GetVirtualDatasetEntities` per usare il servizio di discovery.
|
||||
|
||||
### Miglioramenti UX
|
||||
1. **Etichette Leggibili**:
|
||||
* Aggiornato `SchemaDiscoveryService` per rilevare automaticamente la proprietà migliore da usare come etichetta (RagioneSociale, Nome, Descrizione, ecc.).
|
||||
* Implementato ordinamento alfabetico automatico basato sull'etichetta rilevata.
|
||||
|
||||
3. **Refactoring `VirtualDatasetsController`**:
|
||||
* Rimosso il metodo hardcoded `GetBaseDatasetSchema`.
|
||||
* Integrato `SchemaDiscoveryService` per la validazione e la generazione degli schemi dei dataset virtuali.
|
||||
* Risolto un TODO per la determinazione automatica del tipo di campo negli schemi virtuali.
|
||||
|
||||
4. **Registrazione Servizio**:
|
||||
* Registrato `SchemaDiscoveryService` in `Program.cs`.
|
||||
|
||||
## Risultato
|
||||
Il Report Designer ora riflette automaticamente qualsiasi modifica al modello dati (nuove entità, nuovi campi) senza richiedere modifiche manuali al codice del controller. I dataset "core" mantengono le loro descrizioni user-friendly, mentre i nuovi dataset vengono esposti con nomi e descrizioni generati automaticamente.
|
||||
Reference in New Issue
Block a user