Files
2024-08-01 17:07:55 +02:00

173 lines
10 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
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