MagMan
Gestione magazzino per applicazioni BeamWall, integrato con EgtBeamWall.
Prerequisiti e versioni
Un prerequisito è il disaccoppiamento tra EgtB&W ed il componente MagMan: abbiamo che il sw EgtB&W è basato su netFramework 4.7.2 mentre l'applicazione, che deve girare su windows e linux e quindi dotNet Core 6.0 LTS o successivi, non può essere direttamente connessa tramite dll
In particoalre il problema c'è a livello delle librerie di accesso EntityFramework.
Per superare il problema il disaccoppiamento sarà svolto tramite chaimate REST che il client (applicazione EgtB&W) farà al server.
Inoltre la distribuzione della funzionalità, per essere semplificata, avverrà tramite apposito pacchetto nuget ospitato sul repository nexus aziendale.
Descrizione
Lo scopo principale dell'applicazione è fare da gestore del magazzino grezzi / scarti (remnant) che possono essere impiegati per i nesting e la gestione dei progetti di magazzino.
Insieme a questo, per completare in parte le funzionalità di tipo Industria 4.0, sono previste funzionalità di gestione dei dati di stato impianto, registrazione log e reportistica base di primo livello sull'impianto.
Il sofware è previsto in modalità multi-tenant, dove verrà generato un DB per ogni cliente nel quale andranno a confluire i dati di una o più macchine che il cliente possiede e gestite con EgtB&W; in questo modo è sempre possibile un upgrade dall'infrastruttura cloud di EgalWare verso il CUBE locale del cliente qualora desiderato.
Di base il sistema deve prevedere il riconoscimento degli utenti e/o dei software EgalWare licenziati e reindirizzare l'impiego delle funzionalità avanzate verso il DB dedicato al cliente.
Architettura
Il progetto è pensato in architettura multi-tenant per la versione online, ovvero un unico indirizzo web (tramite load balancers x reverse proxy) che fornisce l'applicazione a tutti i clienti.
Ogni cliente, facendo login, verrà riconosciuto e gli verrà fornita la partizione dati/DB di competenza del tenant secondo lo schema seguente:
Workflow
Di seguito lo schema di funzionamento:
flowchart TB
user(User Login\n web browser) --> ServerApp
egtbw(EgtB&W sw\n REST call) --> ServerApp
ServerApp{{magman.egalware.com}} --> multiTenant(Admin DB)
ServerApp --> clientData(Tenant DB Data)
multiTenant--> tenantMgmt(Clienti)
multiTenant--> MachMgmt(Macchine)
multiTenant--> KeyMgmt(Chiavi/Licenze)
multiTenant--> UserMgmt(Utenti)
clientData --> MagData(Dati Magazzino)
clientData --> MachineData(Stato Impianto)
clientData --> LogData(Log Impianto)
clientData --> CommData(Stato Commesse)
style ServerApp fill:#2239EF
style multiTenant fill:#CD1111
style clientData fill:#22AB19
In pratica le chiamate vengono inviate tutte al servizio web e da qui smistate per competenza e funzionalità verso i vari DB.
Chiavi/Licenze rappresentano le info associate ad ogni licenza software, che poi rappresenta una macchina tracciata.
A livello architetturale il progetto è separato tra la parte Data.Admin e Data.Tenant.
Oggetti di base
Gli oggetti di abse sono i seguenti:
- utenti (reali o associati al programma)
- anagrafica barre
- locazioni magazzino (inizialmente 1 sola, possibilità espansione futura locazioni)
- giancenze articoli
- progetti (prod), in particolare l'ultimo:
- dataora calcolo,
- impegno articoli stimato associato,
- inizio prima lavorazione,
- ultima lavorazionie registrata,
- chiusura (manuale/esplicita, opzionale)
Ruoli utente
Di seguito sono indicati e definiti i ruoli utente previsti, con indicazione esplicita se si tratta di ruoli INT (=amministrativi di Egalware) o di ruoli cliente
| Nome Ruolo | Int/Ext | Customer |
|---|---|---|
| SuperAdmin | Int | Ruolo amministrativo massimo, può creare nuovi clienti (e relativi DB) ed associare user a DB cliente |
| PowerReader | Int | Ruolo di base per ogni login con email @egalware, non può modificare o creare associazioni user/DB |
| BWUser | Ext | User implicito associato ad ogni chiave licenza di EgtB&W e di conseguenza ad uno specifico ClientID |
| RealUser | Ext | User esplicito, dotato di email univoca, associato in fase di creazione/primo accesso ad uno specifico ClientID |
Flusso operativo da programma
Quando è il programma EgtBW a impiegare il sistema, questo avverrà tramite procedure REST. Un programma di esempio (con relativa ddl di comunicazione) è incluso nel progetto.
In particolare sono previste le seguenti funzionalità
- riconoscimento di ogni chiave dato numero/codice (per determinare user/pwd)
- riconoscimento della singola macchina per cui il software è stato fornito (identica per macchina e pc ufficio)
- funzionalità di richiesta anagrafiche magazzino che restituisce tutto il set delle anagrafiche in magazzino, inteso come elenco articoli dato materiale, sezione, ...
- funzionalità di richiesta stato magazzino che restituisce tutto il set delle barre in magazzino (codice anagrafico, stato, valori giacenza)
- funzionalità di ricerca magazzino che restituisce il set delle barre in magazzino che rispondono ai criteri richiesti 8es solo barre di un certo materiale, materiale + sezione...
- funzionalità di impegno barre (ovvero viene registrato a sistema che un numero specifico di barre sono assocaite ad un ID progetto)
- funzionalità di consumo di una barra al momento dell'inizio della lavorazione della stessa
- funzionalità di versamento remnant a fine lavorazione barra
- funzionalità di registrazione eventi (log) per replica log locali
- funzionalità di registrazione stato impianto (tramite invio in particolari stati del processo)
Flusso operativo Egalware
Egalware potrà registrare i propri utenti con le email @egalware.com e questi verranno automaticamente riconosciuti come validi e in grado di operare con livello base nel sistema come PowerReader.
Verranno poi individuati i key user EgalWare di livello SuperAdmin, che potranno svolgere i seguenti compiti
- creare nuovi ClientID (quindi i relativi DB univoci) da poter inserire nelle configurazioni dei programmi EgtB&W
- creare nuovi utenti data email (che potranno poi sempre tramite email impostare autonomamente la loro password di accesso)
- verificare gli user (sia di programma che espliciti) e le relative associazioni ai ClientID
- effettuare associazione utenti e ClientID in caso di problemi in fase di registrazione
- accedere a tutti i dati dei singoli clienti e macchine
Gli utenti base Egalware di livello PowerReader potranno
- verificare le anagrafiche clienti
- verificare le anagrafiche utente
- verificare le informazioni di base associate allo stato impianto dei clienti e gli ultimi dati inviati/ricevuto dai sw EgtB&W
Flusso operativo utente
Ogni end user potrà registrare ed associare quanti utenti voglia a patto che siano dotati di un email univoca per il sistema (e abbia ovviamente almeno 1 macchina con relativo software EgtB&W intestata).
Ogni nuovo user dovrà poi essere associato al bucket del cliente tramite un codice univoco
Gestione Sync DB
E' stato implementato un nuovo set di tabelle sul DB (locale) di EgtBeamWall per gestire materiali e grezzi non tramite file ma tramite DB e così gettare la base per la gestione del sync locale/cloud.
Nello stesso tempo, il sito web, oltre a proporre pagine utente, implementa web API rest che, tramite apposita libreria di comuncazione SDK (messa sul repo nuget aziendale) permette di comuncare, sincronizzare e gestire i dati.
Revisione documento
| Versione | Data | Editor | Note |
|---|---|---|---|
| 1.0.2408.0100 | 2024.08.01 | S.E.Locatelli | Fix problema refresh al cambio tipo materiale in prod x update gestione redis in cluster |
| 1.0.2407.2400 | 2024.07.24 | S.E.Locatelli | Completato gestione con cluster sia MariaDB che Redis, ottimizzazioni comunicazione e sync |
| 1.0.2407.1100 | 2024.07.11 | S.E.Locatelli | Preparazione gestione con cluster sia MariaDB che Redis |
| 1.0.2407.0800 | 2024.07.08 | S.E.Locatelli | Modifica conteggio totali (non qty ma metri/aree), update e ottimizzazioni generali |
| 1.0.2407.0300 | 2024.07.03 | S.E.Locatelli | Ottimizazioni display x numeri decimali, miglioramento gestione cambio pagine, eventi non responsivi, ... |
| 1.0.2406.2900 | 2024.06.29 | S.E.Locatelli | Implementaizone perc avanzamento proj + nuove info progetto (update sync e SDK) |
| 1.0.2405.0700 | 2024.05.07 | S.E.Locatelli | Update gestione LogMacchina, gestione errori da dati negativi, stored varie |
| 1.0.2404.3000 | 2024.04.30 | S.E.Locatelli | Prima versione upload LogMacchina |
| 1.0.2404.2400 | 2024.04.24 | S.E.Locatelli | Vari fix e ottimizzazioni db, rimozione pacchetti nuget superati per riscritture varie, gestione logical delete info |
| 1.0.2402.2900 | 2024.02.29 | S.E.Locatelli | Completato fix dati mancanti descrizione, prima versione update display pagina su notifica redis pub/sub |
| 0.9.2402.2000 | 2024.02.20 | S.E.Locatelli | Completato sync x Alias, materiali, items, testing da prototipo DB locale |
| 0.8.2402.0200 | 2024.02.02 | S.E.Locatelli | Completata gestione utenti |
| 0.7.2401.3000 | 2024.01.30 | S.E.Locatelli | Consumi e stime ok, fix DTO syncro |
| 0.6.2401.2600 | 2024.01.26 | S.E.Locatelli | Prime versione magazzino (consumi, qrcode, display movimenti) |
| 0.5.2401.2400 | 2024.01.24 | S.E.Locatelli | Prime versione display progetti caricati |
| 0.4.2401.2000 | 2024.01.20 | S.E.Locatelli | Completamento funzionalità editing di base |
| 0.3.2401.1900 | 2024.01.19 | S.E.Locatelli | Completamento prima release SDK comunicazione |
| 0.2.2401.1800 | 2024.01.18 | S.E.Locatelli | Prime note sync DB online/locale |
| 0.2.2401.1000 | 2024.01.10 | S.E.Locatelli | Revisione modalità multi-tenant |
| 0.1.2401.0500 | 2024.01.05 | S.E.Locatelli | update ruoli e workflow |
| 0.1.2312.2800 | 2023.12.28 | S.E.Locatelli | Prima revisione documento |