diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 88ebaaa0..fb2f3d18 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,38 +10,9 @@ variables: # nota: cer creazione rules: https://docs.gitlab.com/ee/ci/jobs/job_control.html#common-if-clauses-for-rules # helper x fix pacchetti nuget da repo locale nexus.steamware.net -.nuget-fix: &nuget-fix - - | - echo "esecuzione Nuget FIX steps" - dotnet nuget list source - $hasSource = dotnet nuget list source | Select-String -Pattern "Steamware Nexus Proxy" - if (! [String]::IsNullOrWhiteSpace($hasSource)) { - dotnet nuget remove source "`"Steamware Nexus Proxy`"" - } - $hasSource = dotnet nuget list source | Select-String -Pattern "Steamware Nexus" - if (! [String]::IsNullOrWhiteSpace($hasSource)) { - dotnet nuget remove source "`"Steamware Nexus`"" - } - $hasSource = dotnet nuget list source | Select-String -Pattern "nexus-proxy-v3" - if (! [String]::IsNullOrWhiteSpace($hasSource)) { - dotnet nuget remove source nexus-proxy-v3 - } - $hasSource = dotnet nuget list source | Select-String -Pattern "nexus-hosted" - if (! [String]::IsNullOrWhiteSpace($hasSource)) { - dotnet nuget remove source nexus-hosted - } - $hasSource = dotnet nuget list source | Select-String -Pattern "Microsoft Visual Studio Offline Packages" - if (! [String]::IsNullOrWhiteSpace($hasSource)) { - dotnet nuget remove source 'Microsoft Visual Studio Offline Packages' - } - echo "Situazione sorgenti post remove:" - dotnet nuget list source - dotnet nuget add source https://nexus.steamware.net/repository/nuget-proxy-v3/index.json -n nexus-proxy-v3 -u nugetUser -p $NEXUS_PASSWD --store-password-in-clear-text - dotnet nuget add source https://nexus.steamware.net/repository/nuget-hosted/ -n nexus-hosted -u nugetUser -p $NEXUS_PASSWD --store-password-in-clear-text - $hasSource = dotnet nuget list source - echo "Situazione sorgenti FINALE:" - dotnet nuget list source - +13|.nuget-fix: &nuget-fix +14| - dotnet restore "$env:SOL_NAME.sln" +15| - echo "Restore completato per $env:SOL_NAME" # helper x fix appsettings config nei casi installer / office .appsettings-fix: &appsettings-fix @@ -940,7 +911,7 @@ RIOC:installer: rules: - if: $CI_COMMIT_BRANCH == 'master' - if: $CI_COMMIT_BRANCH == 'develop' - needs: ["IOC:build"] + needs: ["RIOC:build"] script: - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish -p:verbosity=quiet @@ -1154,7 +1125,7 @@ RIOC:release: - dotnet restore "$env:SOL_NAME.sln" rules: - if: $CI_COMMIT_TAG - needs: ["IOC:build"] + needs: ["RIOC:build"] artifacts: paths: - publish/ diff --git a/README.md b/README.md index 56279eb3..b925025b 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,99 @@ # MAPO-CORE -MAPO dotNet Core Web Project, repository progetti next gen su Blazor & co +Repository multi-soluzione per i progetti .NET Core Blazor Server di MAPO (MES - Manufacturing Execution System). -Applicazione multipiattaforma (gira su win, mac, linux), tramite IIS o altro. +Applicazione multipiattaforma (Windows, macOS, Linux), deployabile tramite IIS o altri web server. -## Installazione +## Architettura -Vedere pagina wiki x blazor: https://wiki.steamware.net/doku.php?id=blazor \ No newline at end of file +Il progetto è organizzato in **multiple soluzioni** indipendenti, ciascuna con il proprio dominio funzionale: + +### Soluzioni MAPO Core +| Soluzione | Dominio | +|-----------|---------| +| `MP.SPEC` | Gestione articoli, operatori, ODL, KIT, Dossier, Ricette, Parametri macchina | +| `MP.IOC` / `MP.RIOC` | Gestione ordini di produzione (UpdateProd) e interfaccia client | +| `MP.LAND` | Gestione Land/Zone | +| `MP.MON` | Monitoraggio produzione | +| `MP.TAB3` | Dashboard e reporting | +| `MP.Prog` | Programmazione produzione | +| `MP.Stats` | Statistiche e analytics | +| `MP.INVE` | Gestione inventario/magazzino | +| `IobConf.UI` / `IobConf.Core` | Configurazione IOB (Input/Output Board) | + +### Soluzioni IOB-WIN (Gateway Hardware) +| Soluzione | Dominio | +|-----------|---------| +| `IOB-WIN` | Gateway principale IOB | +| `IOB-WIN-FACADE` | Layer di astrazione per hardware | +| `IOB-WIN-BECKHOFF` | Driver Beckhoff | +| `IOB-WIN-FANUC` | Driver FANUC | +| `IOB-WIN-MITSUBISHI` | Driver Mitsubishi | +| `IOB-WIN-OMRON` | Driver OMRON | +| `IOB-WIN-SIEMENS` | Driver Siemens | +| `IOB-WIN-SHELLY` | Driver Shelly | +| `IOB-WIN-OSAI` | Driver OSAI | +| `IOB-WIN-PING` | Ping/monitoring hardware | +| `IOB-WIN-OPC-UA` | Comunicazione OPC-UA | +| `IOB-WIN-MTC` | Driver MTC | +| `IOB-WIN-KAWASAKI` | Driver Kawasaki | +| `IOB-WIN-FTP` | Scambio file FTP | +| `IOB-WIN-FILE` | Gestione file locale | +| `IOB-WIN-SQL` | Accesso database SQL | +| `IOB-WIN-WPS` | Interfaccia WPS | +| `IOB-WIN-NEXT` | Driver Next generation | +| `IOB-UT` / `IOB-UT-NEXT` | Unit tests IOB | + +### Soluzioni EgwCApp (Gateway Communication) +| Soluzione | Dominio | +|-----------|---------| +| `EgwCApp.Core` | Core comunicazione gateway | +| `EgwCApp.XmlProc` | Processing XML | +| `EgwCApp.ExcImport` | Importazione eccedenze | +| `EgwCApp.Testing` | Testing | +| `EgwCApp.XmlTesting` | Testing XML | + +### Altri Progetti +| Progetto | Dominio | +|----------|---------| +| `VersGen` | Generazione versioni | +| `Scratch` | Prototipi e sperimentazione | + +## Stack Tecnologico + +- **Frontend**: Blazor Server con componenti interattivi (`AddInteractiveServerComponents()`) +- **Backend**: ASP.NET Core Web API, Minimal APIs, Controllers tradizionali +- **Database**: SQL Server (4 DbContext: MoonProContext, MoonPro_VocContext, MoonPro_FluxContext, MoonPro_STATSContext) +- **NoSQL**: MongoDB per storage ricette +- **Caching**: FusionCache (Memory + Redis + DB) con invalidazione per tag +- **Autenticazione**: Windows Authentication (Negotiate/Kerberos) +- **Osservabilità**: OpenTelemetry tracing su Uptrace, MessagePipe per broadcasting real-time + +## Build & CI/CD + +```powershell +# Build tutte le soluzioni in parallelo +./build_all_par.ps1 --agent + +# Build singola soluzione +dotnet build MP-SPEC.sln +``` + +Il pipeline GitLab CI è configurato in `.gitlab-ci.yml` con supporto per NuGet restore e build multi-soluzione. + +## Documentazione Interna + +Ogni soluzione contiene il proprio `README.md` con dettagli specifici su funzionalità, architettura e stato del refactoring. + +## Stato Attuale (Luglio 2026) + +- Tutte le soluzioni compilano senza errori +- Migrazione FusionCache completata per MP.SPEC (48+ metodi migrati al pattern `GetOrFetchAsync`) +- Decomposizione MpSpecController in 8 repository specialistici +- Fix DI e gestione stato statico in MP.AppAuth +- Cache reset funzionale per InsEnabled da reload +- Spostamento ricerca ODL su Minimal API +- Fix navigazione filtri PODL KIT (ritorno pagina 1 al cambio filtro) +- Integrazione FusionCache su RIOC con test di reset +- Supporto multi-driver IOB-WIN per diversi hardware (Beckhoff, FANUC, Mitsubishi, OMRON, Siemens, Shelly, OSAI, Kawasaki, MTC, OPC-UA) +- Gateway comunicazione EgwCApp per scambio dati XML e importazione eccedenze diff --git a/nuget.config b/nuget.config new file mode 100644 index 00000000..64b8df04 --- /dev/null +++ b/nuget.config @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file