Files
magman/README.md
T
2024-01-22 18:46:11 +01:00

156 lines
8.2 KiB
Markdown

# 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.
<div style="page-break-after: always; visibility: hidden"></div>
## 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:
```mermaid
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**.
<div style="page-break-after: always; visibility: hidden"></div>
## 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
<div style="page-break-after: always; visibility: hidden"></div>
## 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)
<div style="page-break-after: always; visibility: hidden"></div>
## 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
<div style="page-break-after: always; visibility: hidden"></div>
## 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.
<div style="page-break-after: always; visibility: hidden"></div>
## Revisione documento
Version | Date | Editor | Note
:--: |----------|----- | ----:
0.5 | 2024.01.18 | S.E. Locatelli | Prime note sync DB online/locale
0.3 | 2024.01.10 | S.E. Locatelli | Revisione modalità multi-tenant
0.2 | 2024.01.05 | S.E. Locatelli | update ruoli e workflow
0.1 | 2023.12.28 | S.E. Locatelli | Prima revisione documento