Files
mapo-core/Refactor_Plan.md
T
2026-05-28 18:49:10 +02:00

95 lines
2.8 KiB
Markdown

# Piano di Refactoring: Migrazione a FusionCache in `MpDataService.cs`
## Obiettivo
Migrare la logica di caching manuale (Redis + DB) verso l'utilizzo di `IFusionCache` per implementare un approccio multi-layer (Memory + Redis + DB), standardizzando l'accesso ai dati.
## Strategia di Migrazione
- **Metodo Standard**: `GetOrFetchAsync<T>(string operationName, string cacheKey, Func<Task<T>> fetchFunc, TimeSpan expiration, params string[] tagList)`.
- **Invalidazione**: Utilizzare i tag tramite `FlushCacheByTagsAsync`.
## Stato Avanzamento
### Fase 1: Analisi e Mapping (Completata)
### Fase 2: Refactoring Metodi di Lettura (Cache-aside)
#### ✅ Completati (Migrati con `GetOrFetchAsync`)
- `ActionGetReq`
- `AnagEventiGeneralAsync`
- `AnagStatiCommAsync`
- `AnagTipoArtLvAsync`
- `ArticleWithDossierAsync`
- `ArticoliGetByTipoAsync`
- `ArticoliGetSearchAsync`
- `ConfigGetAllAsync`
- `DossiersGetLastFiltAsync`
- `ElencoAziendeAsync`
- `ElencoGruppiFaseAsync`
- `ElencoLinkAsync`
- `FluxLogGetLastFiltAsync`
- `FluxLogParetoAsync`
- `OperatoriGetFiltAsync`
- `POdlGetByOdlAsync`
- `POdlListGetFiltAsync`
- `TksScoreAsync`
- `WipKitFiltAsync`
- `MacchineRecipeArchiveAsync`
- `MacchineRecipeConfAsync`
#### ⏳ In corso / Da Migrare
- `AnagEventiGetByMacch`
- `AnagKeyValGetAll`
- `ConfigGetAll` (Sincrono)
- `ConfigTryGet` (Sincrono)
- `ConfigTryGetAsync`
- `DbDedupStats`
- `ElencoRepartiDTO`
- `ExpiryReloadParamGet`
- `IobInfo`
- `ListPODL_ByCodArt`
- `MacchineGetFilt`
- `MachIobConf`
- `MachIobConfVal`
- `MseGetAll`
- `OdlByBatch`
- `OdlGetCurrentAsync`
- `OdlListGetFilt`
- `OperatoriGetFilt` (Sincrono)
- `ParametriGetFilt`
- `POdlGetByKey`
- `POdlListByKitParent`
- `ProcFLStats`
- `StatoMacchina`
- `TagConfGetKey`
- `VocabolarioGetAll`
### Fase 3: Refactoring Metodi di Scrittura e Invalidazione
- [ ] `AnagGruppiDelete`
- [ ] `AnagGruppiUpsert`
- [ ] `ArticoliDeleteRecord`
- [ ] `ArticoliUpdateRecord`
- [ ] `ConfigResetCache`
- [ ] `DossiersDeleteRecord`
- [ ] `DossiersTakeParamsSnapshotLast`
- [ ] `IstKitDelete`
- [ ] `IstKitInsertByWKS`
- [ ] `IstKitUpsert`
- [ ] `PodlIstKitDelete`
- [ ] `POdlDoSetup`
- [ ] `POdlUpdateRecipe`
- [ ] `POdlUpdateRecord`
- [ ] `RecipeSetByPODL`
- [ ] `TemplateKitDelete`
- [ ] `TemplateKitUpsert`
#### Fase 4: Verifica
- [ ] Verificare la compilazione della soluzione tramite script PowerShell.
- [ ] Controllare che i log (NLog) continuino a riflettere correttamente le operazioni.
## Rischi e Mitigazioni
- **Rischio**: Discrepanza nelle chiavi di cache tra vecchio e nuovo sistema.
- *Mitigazione*: Utilizzare rigorosamente le costanti in `Utils.redis...` per garantire che le chiavi siano identiche o gestite dal nuovo sistema.
- **Rischio**: Errori di serializzazione.
- *Mitigazione*: `FusionCache` gestisce la serializzazione, ma è necessario assicurarsi che i tipi di ritorno siano compatibili con le aspettative dei chiamanti.