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