Definisci requisiti fondanti FlyWMS Core
This commit is contained in:
@@ -16,6 +16,9 @@ Questo repository nasce come riprogettazione del prototipo `ware_house`, con l'o
|
|||||||
- Rendere configurabili gli aspetti che cambiano da cliente a cliente, senza costruire un sistema eccessivamente teorico.
|
- Rendere configurabili gli aspetti che cambiano da cliente a cliente, senza costruire un sistema eccessivamente teorico.
|
||||||
- Preparare un modello location compatibile con FlyWMS Mapper e con la futura mappatura tramite drone.
|
- Preparare un modello location compatibile con FlyWMS Mapper e con la futura mappatura tramite drone.
|
||||||
- Integrare ERP esterni, inizialmente con forte attenzione a SQL Server e a scenari legacy.
|
- Integrare ERP esterni, inizialmente con forte attenzione a SQL Server e a scenari legacy.
|
||||||
|
- Ridurre il client barcode a due operazioni elementari: prelievo e versamento, con il contesto gestito dal sistema.
|
||||||
|
- Rendere visibili nel WMS le unita' di carico fin dal momento in cui nascono nell'ERP.
|
||||||
|
- Guidare l'installazione con un wizard che costruisce configurazione, magazzini, celle, location virtuali e parametri operativi.
|
||||||
|
|
||||||
## Documentazione iniziale
|
## Documentazione iniziale
|
||||||
|
|
||||||
@@ -24,4 +27,4 @@ Questo repository nasce come riprogettazione del prototipo `ware_house`, con l'o
|
|||||||
- [Modello concettuale iniziale](docs/specs/03_modello_concettuale.md)
|
- [Modello concettuale iniziale](docs/specs/03_modello_concettuale.md)
|
||||||
- [Configurabilita' iniziale](docs/specs/04_configurabilita_iniziale.md)
|
- [Configurabilita' iniziale](docs/specs/04_configurabilita_iniziale.md)
|
||||||
- [Roadmap pragmatica](docs/specs/05_roadmap.md)
|
- [Roadmap pragmatica](docs/specs/05_roadmap.md)
|
||||||
|
- [Wizard di installazione](docs/specs/06_wizard_installazione.md)
|
||||||
|
|||||||
@@ -28,7 +28,48 @@ Questo consente di distinguere:
|
|||||||
- UDC spedite;
|
- UDC spedite;
|
||||||
- anomalie rilevate da operatori o da FlyWMS Mapper.
|
- anomalie rilevate da operatori o da FlyWMS Mapper.
|
||||||
|
|
||||||
|
## Requisiti fondanti rispetto al prototipo ware_house
|
||||||
|
|
||||||
|
### Barcode essenziale
|
||||||
|
|
||||||
|
Il client barcode deve permettere il minor numero possibile di azioni esplicite.
|
||||||
|
|
||||||
|
La teoria operativa iniziale e':
|
||||||
|
|
||||||
|
- prelievo;
|
||||||
|
- versamento.
|
||||||
|
|
||||||
|
Carico, scarico, picking, spedizione, riallocazione e presa in carico sono interpretazioni di contesto intorno a queste due operazioni elementari.
|
||||||
|
|
||||||
|
Il barcode non deve chiedere all'operatore di ragionare sul modello dati. Deve guidarlo con messaggi minimi e stati chiari.
|
||||||
|
|
||||||
|
### UDC visibili dalla nascita ERP
|
||||||
|
|
||||||
|
Una unita' di carico deve essere visibile in FlyWMS Core dal momento in cui nasce nell'ERP, anche se non e' ancora stata letta o movimentata in magazzino.
|
||||||
|
|
||||||
|
Se l'ERP dichiara una UDC prodotta, FlyWMS Core deve poterla mostrare come disponibile in una location virtuale iniziale, normalmente:
|
||||||
|
|
||||||
|
- NON_SHELVED;
|
||||||
|
- "Non scaff.";
|
||||||
|
- barcode convenzionale configurabile, ad esempio 9001000.
|
||||||
|
|
||||||
|
Questo supera il limite legacy in cui una UDC entra nel WMS solo alla prima lettura barcode o alla prima registrazione in una tabella movimenti.
|
||||||
|
|
||||||
|
### Installazione configurabile
|
||||||
|
|
||||||
|
FlyWMS Core deve essere installabile in aziende diverse mediante un wizard guidato.
|
||||||
|
|
||||||
|
Il wizard deve raccogliere le risposte operative del cliente e generare:
|
||||||
|
|
||||||
|
- configurazione applicativa;
|
||||||
|
- struttura magazzini;
|
||||||
|
- struttura location;
|
||||||
|
- tipologie UDC;
|
||||||
|
- location virtuali;
|
||||||
|
- regole minime di movimento;
|
||||||
|
- mappature ERP;
|
||||||
|
- tabelle e dati iniziali necessari.
|
||||||
|
|
||||||
## Obiettivo commerciale
|
## Obiettivo commerciale
|
||||||
|
|
||||||
FlyWMS Core deve essere anche un prodotto-vetrina: abbastanza concreto da dimostrare valore operativo, abbastanza configurabile da adattarsi a piu' clienti, abbastanza semplice da poter essere realmente completato e mantenuto.
|
FlyWMS Core deve essere anche un prodotto-vetrina: abbastanza concreto da dimostrare valore operativo, abbastanza configurabile da adattarsi a piu' clienti, abbastanza semplice da poter essere realmente completato e mantenuto.
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,10 @@ Attributi iniziali:
|
|||||||
- origine dati;
|
- origine dati;
|
||||||
- riferimento ERP.
|
- riferimento ERP.
|
||||||
|
|
||||||
|
Una LogisticUnit puo' esistere in FlyWMS Core anche prima del primo movimento fisico registrato nel WMS.
|
||||||
|
|
||||||
|
In questo caso la sua origine e' ERP e la sua posizione iniziale e' una location virtuale di ingresso, normalmente NON_SHELVED.
|
||||||
|
|
||||||
### LogisticUnitContent
|
### LogisticUnitContent
|
||||||
|
|
||||||
Descrive il contenuto di una unita' logistica.
|
Descrive il contenuto di una unita' logistica.
|
||||||
@@ -60,15 +64,20 @@ Tipi iniziali:
|
|||||||
|
|
||||||
Le location virtuali sostituiscono i codici convenzionali legacy.
|
Le location virtuali sostituiscono i codici convenzionali legacy.
|
||||||
|
|
||||||
Esempi:
|
Location virtuali obbligatorie nella prima versione:
|
||||||
|
|
||||||
- NON_SHELVED;
|
- NON_SHELVED;
|
||||||
- SHIPPED;
|
- SHIPPED.
|
||||||
|
|
||||||
|
Location virtuali opzionali o future:
|
||||||
|
|
||||||
- RECEIVING;
|
- RECEIVING;
|
||||||
- QUALITY_HOLD;
|
- QUALITY_HOLD;
|
||||||
- DAMAGED;
|
- DAMAGED;
|
||||||
- STAGING.
|
- STAGING.
|
||||||
|
|
||||||
|
Ogni location virtuale deve avere codice interno, label utente e, se necessario, barcode convenzionale configurabile.
|
||||||
|
|
||||||
### InventoryMovement
|
### InventoryMovement
|
||||||
|
|
||||||
Registra ogni movimento.
|
Registra ogni movimento.
|
||||||
@@ -85,6 +94,19 @@ Campi concettuali:
|
|||||||
- origine del movimento;
|
- origine del movimento;
|
||||||
- transazione.
|
- transazione.
|
||||||
|
|
||||||
|
Il movimento deve essere espresso sempre come trasferimento:
|
||||||
|
|
||||||
|
```text
|
||||||
|
from_location -> to_location
|
||||||
|
```
|
||||||
|
|
||||||
|
Le due operazioni elementari esposte al barcode sono:
|
||||||
|
|
||||||
|
- prelievo: rimozione da una location sorgente;
|
||||||
|
- versamento: inserimento in una location destinazione.
|
||||||
|
|
||||||
|
Nel modello applicativo un'azione operativa puo' combinare prelievo e versamento in una sola transazione.
|
||||||
|
|
||||||
### CurrentInventory
|
### CurrentInventory
|
||||||
|
|
||||||
Rappresenta la giacenza corrente materializzata.
|
Rappresenta la giacenza corrente materializzata.
|
||||||
@@ -102,3 +124,20 @@ Puo' essere calcolata dai movimenti oppure mantenuta come tabella aggiornata per
|
|||||||
- BLOCKED;
|
- BLOCKED;
|
||||||
- UNKNOWN.
|
- UNKNOWN.
|
||||||
|
|
||||||
|
## Relazione con ERP
|
||||||
|
|
||||||
|
Il modello deve prevedere una fonte ERP per le LogisticUnit.
|
||||||
|
|
||||||
|
Il primo obiettivo non e' importare tutto l'ERP, ma creare una vista o tabella di staging che dica:
|
||||||
|
|
||||||
|
- codice UDC;
|
||||||
|
- data creazione;
|
||||||
|
- articolo o articoli;
|
||||||
|
- lotto o lotti;
|
||||||
|
- quantita';
|
||||||
|
- peso;
|
||||||
|
- dimensioni;
|
||||||
|
- documento o contesto di origine;
|
||||||
|
- stato ERP rilevante.
|
||||||
|
|
||||||
|
Le UDC presenti nello staging ERP ma non ancora movimentate nel WMS devono risultare in CurrentInventory come NON_SHELVED logiche.
|
||||||
|
|||||||
@@ -9,6 +9,15 @@ L'obiettivo non e' creare subito un motore universale, ma rendere configurabili
|
|||||||
- connessione ERP;
|
- connessione ERP;
|
||||||
- mappatura campi ERP verso FlyWMS;
|
- mappatura campi ERP verso FlyWMS;
|
||||||
- tipi di unita' logistica;
|
- tipi di unita' logistica;
|
||||||
|
- struttura del contenuto UDC;
|
||||||
|
- peso, dimensioni, volume e unita' di misura;
|
||||||
|
- numero di magazzini;
|
||||||
|
- struttura fisica dei magazzini;
|
||||||
|
- numero scaffali;
|
||||||
|
- numero campate;
|
||||||
|
- numero livelli;
|
||||||
|
- numero celle per campata/livello;
|
||||||
|
- dimensioni scaffali e celle;
|
||||||
- location virtuali;
|
- location virtuali;
|
||||||
- codici barcode convenzionali;
|
- codici barcode convenzionali;
|
||||||
- regole base di movimento;
|
- regole base di movimento;
|
||||||
@@ -34,3 +43,21 @@ Ogni configurazione deve risolvere un caso reale.
|
|||||||
|
|
||||||
Se una configurazione non ha ancora un caso reale, va documentata come possibilita' futura ma non implementata subito.
|
Se una configurazione non ha ancora un caso reale, va documentata come possibilita' futura ma non implementata subito.
|
||||||
|
|
||||||
|
## Configurazione tramite wizard
|
||||||
|
|
||||||
|
La configurazione iniziale non deve essere solo un file tecnico.
|
||||||
|
|
||||||
|
Deve esistere un wizard di installazione che ponga domande consequenziali e generi la configurazione iniziale.
|
||||||
|
|
||||||
|
Il wizard deve consentire almeno:
|
||||||
|
|
||||||
|
- definizione magazzini;
|
||||||
|
- definizione struttura scaffali;
|
||||||
|
- definizione celle;
|
||||||
|
- definizione location virtuali;
|
||||||
|
- definizione tipi UDC;
|
||||||
|
- definizione mappatura ERP;
|
||||||
|
- definizione soglie operative;
|
||||||
|
- generazione tabelle o dati iniziali.
|
||||||
|
|
||||||
|
La logica di generazione deve essere ripetibile e versionata, cosi' da poter ricostruire una installazione o migrare un cliente.
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
- definire layer servizi;
|
- definire layer servizi;
|
||||||
- definire API interne;
|
- definire API interne;
|
||||||
- creare configurazione connessione ERP/WMS;
|
- creare configurazione connessione ERP/WMS;
|
||||||
|
- progettare wizard installazione;
|
||||||
|
- progettare generazione struttura magazzino;
|
||||||
- creare logging e audit robusti;
|
- creare logging e audit robusti;
|
||||||
- creare struttura test.
|
- creare struttura test.
|
||||||
|
|
||||||
@@ -24,7 +26,7 @@
|
|||||||
- movimenti UDC;
|
- movimenti UDC;
|
||||||
- giacenza corrente;
|
- giacenza corrente;
|
||||||
- storico movimenti;
|
- storico movimenti;
|
||||||
- client barcode minimale;
|
- client barcode minimale basato su prelievo e versamento;
|
||||||
- picking list base.
|
- picking list base.
|
||||||
|
|
||||||
## Fase 3 - Integrazione ERP
|
## Fase 3 - Integrazione ERP
|
||||||
@@ -35,6 +37,16 @@
|
|||||||
- stato UDC prodotta ma non presa in carico;
|
- stato UDC prodotta ma non presa in carico;
|
||||||
- dashboard UDC da stoccare.
|
- dashboard UDC da stoccare.
|
||||||
|
|
||||||
|
## Fase 3.bis - Wizard cliente
|
||||||
|
|
||||||
|
- flusso domande installazione;
|
||||||
|
- generazione magazzini;
|
||||||
|
- generazione scaffali/celle;
|
||||||
|
- generazione location virtuali;
|
||||||
|
- generazione tipi UDC;
|
||||||
|
- validazione configurazione;
|
||||||
|
- esportazione/importazione configurazione.
|
||||||
|
|
||||||
## Fase 4 - Collegamento Mapper
|
## Fase 4 - Collegamento Mapper
|
||||||
|
|
||||||
- modello coordinate location;
|
- modello coordinate location;
|
||||||
@@ -51,4 +63,3 @@
|
|||||||
- scenario picking;
|
- scenario picking;
|
||||||
- scenario mappa/drone simulata;
|
- scenario mappa/drone simulata;
|
||||||
- documentazione commerciale e tecnica.
|
- documentazione commerciale e tecnica.
|
||||||
|
|
||||||
|
|||||||
168
docs/specs/06_wizard_installazione.md
Normal file
168
docs/specs/06_wizard_installazione.md
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
# Wizard di installazione
|
||||||
|
|
||||||
|
Il wizard di installazione e' un requisito fondante di FlyWMS Core.
|
||||||
|
|
||||||
|
Lo scopo e' trasformare il prodotto da applicazione rigida a pacchetto installabile in aziende diverse.
|
||||||
|
|
||||||
|
Il wizard deve raccogliere informazioni operative e generare una configurazione coerente.
|
||||||
|
|
||||||
|
## Principi
|
||||||
|
|
||||||
|
- Il wizard deve porre domande consequenziali.
|
||||||
|
- Ogni risposta deve influenzare solo le domande successive rilevanti.
|
||||||
|
- La configurazione generata deve essere salvabile, esportabile e versionata.
|
||||||
|
- La generazione del database deve essere ripetibile.
|
||||||
|
- Le tabelle di sistema non devono essere create in modo casuale, ma tramite migrazioni o generatori controllati.
|
||||||
|
|
||||||
|
## Flusso iniziale proposto
|
||||||
|
|
||||||
|
### 1. Identita' installazione
|
||||||
|
|
||||||
|
Domande:
|
||||||
|
|
||||||
|
- nome azienda;
|
||||||
|
- nome sito;
|
||||||
|
- lingua principale;
|
||||||
|
- timezone;
|
||||||
|
- database target;
|
||||||
|
- ambiente: test, produzione, demo.
|
||||||
|
|
||||||
|
Output:
|
||||||
|
|
||||||
|
- configurazione installazione;
|
||||||
|
- prefissi e label principali.
|
||||||
|
|
||||||
|
### 2. Connessione ERP
|
||||||
|
|
||||||
|
Domande:
|
||||||
|
|
||||||
|
- ERP presente;
|
||||||
|
- tipo database ERP;
|
||||||
|
- connessione;
|
||||||
|
- schema/database sorgente;
|
||||||
|
- vista o query UDC prodotte;
|
||||||
|
- vista o query articoli;
|
||||||
|
- vista o query lotti;
|
||||||
|
- vista o query documenti/picking.
|
||||||
|
|
||||||
|
Output:
|
||||||
|
|
||||||
|
- connettore ERP;
|
||||||
|
- mappatura iniziale campi;
|
||||||
|
- query di test.
|
||||||
|
|
||||||
|
### 3. Unita' di carico
|
||||||
|
|
||||||
|
Domande:
|
||||||
|
|
||||||
|
- quali tipi di UDC esistono;
|
||||||
|
- il contenuto e' mono-articolo o multi-articolo;
|
||||||
|
- il contenuto e' mono-lotto o multi-lotto;
|
||||||
|
- peso e dimensioni arrivano dall'ERP o sono calcolati;
|
||||||
|
- barcode UDC e' generato dall'ERP o da FlyWMS;
|
||||||
|
- quali attributi sono obbligatori.
|
||||||
|
|
||||||
|
Output:
|
||||||
|
|
||||||
|
- tipi UDC;
|
||||||
|
- schema contenuto;
|
||||||
|
- regole di validazione;
|
||||||
|
- mapping ERP verso LogisticUnit e LogisticUnitContent.
|
||||||
|
|
||||||
|
### 4. Location virtuali
|
||||||
|
|
||||||
|
Location obbligatorie:
|
||||||
|
|
||||||
|
- NON_SHELVED;
|
||||||
|
- SHIPPED.
|
||||||
|
|
||||||
|
Domande:
|
||||||
|
|
||||||
|
- label utente;
|
||||||
|
- barcode convenzionale;
|
||||||
|
- significato operativo;
|
||||||
|
- visibilita' nelle dashboard;
|
||||||
|
- uso nei movimenti barcode.
|
||||||
|
|
||||||
|
Output:
|
||||||
|
|
||||||
|
- location virtuali iniziali;
|
||||||
|
- codici convenzionali;
|
||||||
|
- regole di movimento base.
|
||||||
|
|
||||||
|
### 5. Struttura magazzino
|
||||||
|
|
||||||
|
Domande:
|
||||||
|
|
||||||
|
- numero magazzini;
|
||||||
|
- per ogni magazzino: nome, codice, descrizione;
|
||||||
|
- numero aree;
|
||||||
|
- numero scaffali;
|
||||||
|
- numero corsie;
|
||||||
|
- numero campate;
|
||||||
|
- numero livelli;
|
||||||
|
- numero celle per campata/livello;
|
||||||
|
- dimensioni fisiche;
|
||||||
|
- capacita' stimata;
|
||||||
|
- barcode location.
|
||||||
|
|
||||||
|
Output:
|
||||||
|
|
||||||
|
- gerarchia location;
|
||||||
|
- celle generate;
|
||||||
|
- codici location;
|
||||||
|
- dati utili a FlyWMS Mapper.
|
||||||
|
|
||||||
|
### 6. Barcode e terminali
|
||||||
|
|
||||||
|
Domande:
|
||||||
|
|
||||||
|
- risoluzione terminale;
|
||||||
|
- input con enter automatico;
|
||||||
|
- tasti funzione disponibili;
|
||||||
|
- modalita' RDP o locale;
|
||||||
|
- operazioni abilitate.
|
||||||
|
|
||||||
|
Regola iniziale:
|
||||||
|
|
||||||
|
Il barcode espone due operazioni elementari:
|
||||||
|
|
||||||
|
- prelievo;
|
||||||
|
- versamento.
|
||||||
|
|
||||||
|
Il contesto applicativo decide se l'operazione vale come carico, scarico, picking o spedizione.
|
||||||
|
|
||||||
|
### 7. Regole operative
|
||||||
|
|
||||||
|
Domande:
|
||||||
|
|
||||||
|
- soglia UDC non scaffalate;
|
||||||
|
- soglia UDC prodotte ma non prese in carico;
|
||||||
|
- autorizzazioni operatori;
|
||||||
|
- blocchi su incongruenze;
|
||||||
|
- movimenti consentiti;
|
||||||
|
- audit obbligatorio.
|
||||||
|
|
||||||
|
Output:
|
||||||
|
|
||||||
|
- regole base;
|
||||||
|
- messaggi utente;
|
||||||
|
- controlli runtime.
|
||||||
|
|
||||||
|
## Output tecnico del wizard
|
||||||
|
|
||||||
|
Il wizard deve generare:
|
||||||
|
|
||||||
|
- file configurazione installazione;
|
||||||
|
- script/migrazioni database;
|
||||||
|
- dati iniziali;
|
||||||
|
- mapping ERP;
|
||||||
|
- eventuali viste di staging;
|
||||||
|
- report riepilogo installazione.
|
||||||
|
|
||||||
|
## Nota architetturale
|
||||||
|
|
||||||
|
La configurazione non deve generare codice applicativo diverso per ogni cliente.
|
||||||
|
|
||||||
|
Deve generare dati e parametri usati da un motore applicativo comune.
|
||||||
|
|
||||||
Reference in New Issue
Block a user