Files
mapo-core/MP.SPEC/refactor_repository.md
T
2026-06-01 13:56:14 +02:00

3.3 KiB

?? Proposta di Refactoring: Decomposizione MpSpecController

1. Situazione Attuale (AS-IS)

  • Componente: MpSpecController (situato in MP.Data\Controllers).
  • Pattern: "God Object" / Monolithic Repository.
  • Problemi identificati:
    • Violazione SRP: Gestisce entità eterogenee (Anagrafiche, Produzione, Dossier, Configurazione, Log).
    • Naming: Il suffisso Controller è fuorviante (indica un livello API, mentre il ruolo è di Repository).
    • Manutenibilità: Elevato rischio di regressioni durante le modifiche a causa dell'accorpamento di logiche diverse.
    • Testabilità: Difficoltà estrema nel mockare le dipendenze (molteplici DbContext e parametri di configurazione) in un unico oggetto.
    • Accoppiamento: MpDataService dipende da un unico, enorme oggetto per ogni operazione di persistenza.

2. Situazione Proposta (TO-BE)

  • Trasformazione: MpSpecController viene rinominato in MpSpecRepository (come fallback o hub centrale temporaneo) e poi progressivamente svuotato.
  • Nuova Architettura: Introduzione di Repository specializzati per Domini Logici, ognuno con la propria interfaccia (I...Repository).
  • Iniezione delle Dipendenze: MpDataService smetterà di iniettare un unico repository e inizierà a iniettare solo i moduli di cui ha realmente bisogno (es. IAnagRepository, IProductionRepository, ecc.).
  • Standardizzazione: Ogni repository gestirà esclusivamente il proprio DbContext di riferimento.

3. Elenco Repository da Creare (Domain Grouping)

Repository Responsabilità (entità/Modelli) Context Target
IAnagRepository AnagGruppi, AnagArticoli, AnagOperatori, AnagStatiComm, AnagTipoArtLv, Vocabolario, Parametri MoonProContext
IProductionRepository ODL, PODL, IstanzeKit, TemplateKit, WipKit, Macchine, Gruppi2Macc/Oper MoonProContext
IDossierRepository Dossier, DossierFluxLog MoonProContext
IFluxLogRepository FluxLog, StatDedupDTO, ParetoFluxLog MoonPro_FluxContext
ISystemRepository LinkMenu, Config, Manutenzione DB MoonProContext / MoonProAdminContext

4. Checklist Avanzamento Modifiche

Fase 1: Preparazione (Infrastruttura)

  • Creazione file efactor_repository.md.
  • Analisi delle interfacce necessarie per ogni dominio.
  • Rinomina MpSpecController \rightarrow MpSpecRepository (per allineamento naming).

Fase 2: Estrazione Modulare (Iterativa)

  • Modulo Anagrafica: Creazione AnagRepository \rightarrow Spostamento metodi \rightarrow Aggiornamento MpDataService.
  • Modulo Produzione: Creazione ProductionRepository \rightarrow Spostamento metodi \rightarrow Aggiornamento MpDataService.
  • Modulo Dossier: Creazione DossierRepository \rightarrow Spostamento metodi \rightarrow Aggiornamento MpDataService.
  • Modulo FluxLog: Creazione FluxLogRepository \rightarrow Spostamento metodi \rightarrow Aggiornamento MpDataService.
  • Modulo Sistema: Creazione SystemRepository \rightarrow Spostamento metodi \rightarrow Aggiornamento MpDataService.

Fase 3: Pulizia e Verifica

  • Rimozione del codice residuo da MpSpecRepository.
  • Verifica della compilazione della soluzione (./build_all_par.ps1 --agent).
  • Verifica della coerenza dei log e della persistenza dei dati.