Guida Funzionale Completa — Release S3 · Marzo 2026
| Tecnologia | Componente | Versione | Uso |
|---|---|---|---|
| PHP | Slim 4 + Composer | 8.4+ | Tutti i microservizi |
| MySQL | InnoDB, utf8mb4 | 8.0 | 7 database separati |
| Redis | Cache | 7.x | Sessioni, rate limiting (predisposto) |
| RabbitMQ | EventBus | 3.x | Messaging asincrono (predisposto) |
| Frontend | Vanilla JS / SPA | — | No framework — API.js + DataLoader pattern |
| Auth | JWT HS256 | — | Access token 8h, multi-tenant isolation |
| AI | Claude Sonnet 4.6 | — | Chat SSE, function calling, Vision |
| Docker | 1 container/servizio | — | 10 container, network wms-network |
I pick_tasks (outbound-ms) e i putaway_tasks (inbound-ms) sono i task fisici da completare. Le missioni warehouse-ms sono l'assegnazione operatore + il routing ottimizzato. Il collegamento si crea via MissionPlanner:
OUTBOUND ORDER
MISSIONE WAREHOUSE
Creazione ordini di acquisto con fornitore, data attesa, righe prodotto (SKU + qty). Supporta import da EDI, CSV e webhook e-commerce.
Ricezione riga per riga con scansione barcode, quantità ricevuta, quantità danneggiata, numero lotto, data scadenza. Traccia chi ha ricevuto.
receiveOrder() — modale completa di ricevimento con QC per-riga: ogni riga ordine mostra quantità attesa, quantità ricevuta, esito QC (pass/fail) e note danno. Il supervisore conferma o rifiuta ogni riga singolarmente prima del putaway.
Ispezione opzionale con esito pass / fail / conditional. In caso di fail → ordine in quarantena. Genera automaticamente NCR (Non Conformità). Il QC per-riga integrato nella modale receiveOrder() permette di accettare parte della merce e rifiutare il resto in un'unica operazione.
Dopo ricezione, vengono generati task di stoccaggio per ogni riga. L'operatore riceve il bin di destinazione suggerito dal sistema (FEFO-aware).
Endpoint pubblico compatibile con WooCommerce, Shopify, Magento. Autenticazione HMAC SHA-256. Crea automaticamente ordini inbound da nuovi ordini.
Gestione resi clienti come inbound speciale. Tipo ordine "return" con motivo reso, condizione merce e destinazione (stock / quarantena / scarto).
Ordini di vendita con cliente, data consegna richiesta, linee (SKU + qty). Numerazione automatica OUT-YYYYMMDD-XXXX. Priorità SLA configurabile.
Raggruppamento di N ordini confermati in un'unica ondata di picking. Crea automaticamente i pick_tasks per ogni riga degli ordini inclusi nella wave.
newWave() — modale di creazione wave con selezione ordini (checkbox multi-select tra gli ordini confirmed), scelta strategia di picking (zone, cluster, single) e conferma. Il sistema genera automaticamente i task e li assegna via MissionPlanner.
Completamento task di prelievo con bin sorgente, quantità prelevata, operatore. Trigger automatico: quando tutti i task della wave sono completati → ordine in "picking".
Imballaggio fisico con registrazione colli, peso lordo, dimensioni (L×W×H). Integrazione con sistema UOM packaging per calcolo automatico colli per ordine.
Assegnazione carrier (BRT, NCR, DHL, ecc.), generazione numero tracking TRK-XXXXXX, conferma spedizione. Notifica automatica al cliente.
Monitoraggio deadline per ogni ordine. Alert proattivo SSE quando un ordine rischia di sforare la data di consegna. Pannello SLA nella dashboard.
| Tipo | Trigger | Descrizione | Task tipici |
|---|---|---|---|
| picking | Wave outbound | Prelievo prodotti da bin per ordine cliente | pick (bin → staging area) |
| putaway | Ricezione inbound | Stoccaggio prodotti ricevuti nel bin corretto | put (banchina → bin storage) |
| transfer | Manuale / ripristino | Spostamento prodotti tra zone/bin interni | pick + put |
| counting | Inventario periodico | Conteggio fisico prodotti in un'area | count (bin per bin) |
| replenishment | Stock sotto soglia | Rifornimento corsie di picking da bulk | pick bulk + put picking lane |
| return | Reso cliente | Gestione resi — ispezione, stoccaggio o scarto | inspect + put / scrap |
SSE (Server-Sent Events) continuo. Aggiornamento ogni 4 secondi con: missioni attive, conteggio alert per severità, stato equipment. Max 30 tick (120s), poi riconnessione automatica.
Emessi solo quando cambiano: batteria equipment <20%, missioni in ritardo (>150% tempo stimato), stock sotto soglia riordino. Trigger email automatica (max 1 per sessione SSE).
App mobile /operator.html — 3 tab: Ricezione, Picking, Spedizione. Step-by-step task, scansione barcode, auto-refresh 30s. Dark theme ottimizzato per palmari e tablet.
Percorre le corsie che contengono almeno un pick a serpentina. Corsia con pick = traversata completa; corsia senza pick = saltata. Ottimale per alta densità pick.
Per ogni corsia calcola il "gap" più ampio tra due pick consecutivi e decide se è più conveniente entrare da un'estremità o dall'altra (o attraversare). Riduce backtracking.
Ibrido S-Shape + Largest Gap. Usa S-Shape per corsie centrali e Largest Gap per le corsie alle estremità del magazzino. Bilanciamento dinamico.
Algoritmo del Nearest Neighbor (approssimazione TSP). Per magazzini piccoli o picking molto sparsi. Complessità O(n²) — adatto fino a ~50 pick per missione.
Seleziona un ordine "seme" e aggiunge iterativamente ordini con massima sovrapposizione di bin (saving = riduzione distanza totale rispetto a prelevare separatamente).
Raggruppa ordini in base alla distanza geografica tra le loro pick locations. Usa centroide del cluster come punto di riferimento. Efficace per ordini multi-zona.
Raggruppa ordini con deadline di consegna simile (finestra temporale). Garantisce che tutti gli ordini del batch rispettino il SLA più stringente del gruppo.
| Endpoint | Input | Output |
|---|---|---|
POST /api/missions/plan-route |
lines[], algorithm, options | route ottimizzata, distanza_m, estimated_min |
POST /api/missions/batch-orders |
orders[], batch_size, method | batches[], batches_count, algorithm |
POST /api/missions/plan-wave |
warehouse_id, options{max_operators, sla_horizon_min} | wave{operator_queues, stats} |
POST /api/missions/assign-operators |
warehouse_id | assignments[], applied (DB update), stats |
Anagrafica prodotti con codice SKU univoco, nome, categoria, unità misura, temperatura richiesta, classe ABC, punti di riordino. Supporta attributi custom (certificazioni, allergeni, hazmat, impilabilità).
searchProducts() — Campo ricerca con debounce 300ms. Filtra su SKU, nome e categoria in tempo reale aggiornando la tabella senza ricaricare la pagina.
Importazione prodotti in blocco da file CSV. Formato: SKU, Nome, Categoria, UdM, Punto Riordino, Classe ABC. Template scaricabile dal tab Import.
Esportazione completa del catalogo prodotti in CSV per elaborazioni offline con Excel o sistemi BI. Include tutti i campi e la classe ABC calcolata.
Stock_levels tracciato per (product_id, bin_code, lot). Quantità disponibile = quantità - riservata (campo GENERATED). Evidenziazione automatica prodotti sotto ROP.
Tracking completo lot number + data scadenza. FEFO: il lotto con scadenza più vicina viene selezionato automaticamente nel picking. Conformità food/pharma.
Audit trail completo. recordMovement(): form con tipo (ingresso/uscita/trasferimento/rettifica), SKU, bin origine/destinazione, quantità, lotto, motivo. POST a /api/stock/movement.
Conteggio fisico delle merci. Tipi: Totale, Parziale (per zona), Spot (singolo bin). Frequenza basata su classe ABC: A=settimanale, B=mensile, C=trimestrale. Gestione varianze con causale.
Aggiustamenti manuali con workflow: creazione → approvazione supervisore → applicazione. Traccia motivo, operatore e chi ha approvato.
Rifornimento automatico zone PICK da zone BULK quando le giacenze scendono sotto soglia. Genera missioni di tipo replenishment per operatori o AGV.
Per ogni livello UOM: peso lordo, peso netto, lunghezza × larghezza × altezza (cm). Volume calcolato automaticamente. Usato per pianificazione spedizioni e carrier selection.
EAN-13 per unità EA, GTIN-14 (ITF-14) per case/pallet, prefisso SSCC per pallet serializzati. Lookup per barcode via GET /api/packaging/barcode/{code}.
Calcola automaticamente il fattore cumulativo da EA: es. 1 CASE = 24 INNER × 6 EA = 144 EA. Endpoint dedicato per conversioni con resto in EA.
Dati 1000 EA → calcola N pallet necessari, fill rate %, peso totale. Considera sia il vincolo volumetrico (120×80×144 cm) che il vincolo di peso (1000 kg pallet EUR-1).
| API | Descrizione |
|---|---|
GET /api/packaging/product/{id} | Albero UOM completo con fattori di conversione cumulativi da EA |
POST /api/packaging | Upsert livello UOM (crea o aggiorna per tenant+product+uom_code) |
GET /api/packaging/barcode/{code} | Lookup prodotto da EAN-13 o GTIN-14 |
POST /api/packaging/convert | Conversione quantità tra due UOM dello stesso prodotto |
POST /api/packaging/palletize | Calcolo pallet, fill rate e peso totale per qty EA |
Anagrafica carrier (BRT, NCR, DHL, FedEx, GLS, Bartolini). Gestione autisti con patente, telefono, disponibilità. Associazione autista ↔ carrier.
Pianificazione giri con data, autista, carrier, note. Aggiunta colli al giro con numero tracking. Aggiornamento stato collo (consegnato, fallito, reso).
Portale pubblico /tracking/?n=TRK-.... Ricerca per numero tracking senza login. Timeline eventi con stato, timestamp, luogo. QR code su etichetta collo.
Visualizzazione e stampa del manifest completo: tutti i colli del giro con stato, peso, destinazione. Stampa via @media print nativa.
Tracciamento spedizioni end-to-end con portale pubblico e timeline eventi in tempo reale.
Pagina /tracking/?n=TRK-... accessibile senza login. Il destinatario riceve il link via email/SMS e consulta lo stato della spedizione con timeline visuale degli eventi.
Ogni collo ha una sequenza di eventi: creato, in transito, in consegna, consegnato, fallito, reso. Timestamp e luogo per ogni step. Aggiornamento automatico da webhook carrier.
Generazione QR code con URL tracking diretto stampato sull'etichetta del collo. Scansione rapida per verifica stato in qualsiasi punto della filiera.
Gestione delle risorse umane e degli equipment operativi del magazzino.
Anagrafica operatori: codice, nome, badge, ruolo, turno, device_id, telefono. Associazione a utente sistema (opzionale). Statistiche individuali: missioni completate, tempo medio, errori.
Flotta equipment: carrelli elevatori, transpallet, AGV. Stato batteria, zona corrente, OEE. Alert automatici per manutenzione preventiva e batteria bassa.
Pianificazione turni operatori integrata con calendario. Il MissionPlanner usa la disponibilità per bilanciare il carico di lavoro e assegnare missioni solo agli operatori in turno.
KPI per operatore: pick rate (righe/ora), accuratezza, tempo medio missione. Classifica team con gamification opzionale. I dati alimentano il pannello Risorse nella dashboard.
Dashboard KPI, analytics avanzati, export e strumenti di analisi strategica. Include Analisi ABC e Forecast ROP (precedentemente nella sezione inventario).
KPI operativi in tempo reale: throughput giornaliero, SLA compliance %, fill rate, ordini aperti, missioni attive. Chart.js 4.4.7 con aggiornamento live via SSE. Vista manager con drill-down per zona, turno, operatore.
Classificazione prodotti secondo la curva di Pareto: A (top 20% = 80% valore), B (30% = 15% valore), C (50% = 5% valore). Calcolo automatico su base movimenti o valore. Determina le frequenze di inventario ciclico e la strategia di slotting.
Previsione del punto di riordino (Reorder Point) basata su consumo medio, lead time fornitore e safety stock. Formula: ROP = (domanda media giornaliera x lead time) + safety stock. Alert automatico quando lo stock scende sotto ROP.
Esportazione report in CSV per elaborazione con Excel o sistemi BI, e in PDF per documentazione. Report schedulabili con invio automatico via email a destinatari configurabili.
Storico operativo consultabile per periodo: movimenti, throughput, errori, SLA. Confronto tra periodi (mese corrente vs precedente). Grafici trend con baseline e anomalie evidenziate.
Report dedicati per ogni tenant 4PL: movimenti, SLA compliance, throughput, costi. Vista aggregata manager + drill-down per singolo cliente. Base per la fatturazione 4PL.
Ogni tabella ha tenant_id. Tutte le query filtrano per tenant. Un utente appartiene a un tenant. Nessuna cross-contaminazione dati tra tenant diversi.
Accumulo costi per tenant: handling fee, storage, spedizioni. Ciclo di fatturazione mensile. Pannello 4PL con breakdown per azienda cliente e categoria servizio.
Zone del magazzino assegnabili a più operatori logistici con percentuale di utilizzo dedicata. Un'area può essere condivisa tra più clienti (es. zona fredda condivisa).
Export CSV per fatturazione. Report per tenant: movimenti, SLA compliance, throughput. Pannello manager con vista aggregata + vista drill-down per singolo cliente.
Codice univoco, nome, tipo (GDO, HORECA, E-commerce, Retail, Pharma, Ospedale, Distributore, Marketplace, Export), priorita, SLA ore, corriere default, P.IVA, contatto email/telefono, indirizzo spedizione.
Lo SLA definisce le ore massime dalla conferma ordine alla spedizione. La priorita (urgente/alta/normale/bassa) influenza l'ordine di processing nelle wave di picking. Alert automatici per SLA in scadenza.
Ogni cliente ha un corriere preferito. Alla creazione ordine outbound il sistema suggerisce il corriere associato. Mapping tipici: GDO→BRT, Hospital→DHL GDP, E-commerce→TNT Express.
Nel form ordine outbound il campo "Cliente" usa autocomplete dall'anagrafica. SLA e corriere vengono pre-compilati dal profilo cliente. Il tipo cliente determina le regole di imballaggio e documenti di trasporto.
Codice, nome, categoria merceologica (Food, Pharma, Tech, Cosmetics), lead time medio (giorni), affidabilita (0-100%), probabilita ritardo, paese di origine, contatti, P.IVA.
Il lead time alimenta il calcolo del punto di riordino automatico (ROP) e le previsioni di disponibilita. Formula: ROP = domanda_media x lead_time + safety_stock.
Score 0.00-1.00 basato su percentuale consegne puntuali. Usato dal simulatore per generare eventi supplier_delay. Fornitore con 0.95 = 5% probabilita ritardo su ogni ordine.
Tabella supplier_products: associa prodotti specifici a ogni fornitore con lead time personalizzato, costo unitario, quantita minima d'ordine e flag "fornitore primario".
Costo calcolato: Base + (Peso x €/kg). Esempio BRT Standard: €15 + €0.30/kg → 20kg = €21. Tariffe configurabili per tenant in modalita 4PL.
GDP Certificato per trasporti farmaceutici (Good Distribution Practice). Cold Capable per mezzi refrigerati. Solo corrieri certificati proposti per prodotti a temperatura controllata.
URL tracking con template {tracking_number} per link automatico al cliente. Endpoint API per integrazioni (booking, label printing, proof of delivery).
Ogni cliente ha un corriere default. Il sistema propone automaticamente il corriere compatibile con tipo merce (cold chain, hazmat) e tipo servizio richiesto dal cliente.
Tipo stoccaggio (ambient/cool/refrigerated/frozen/deep_frozen/hazmat), range temperatura accettabile, flag hazmat con classe UN, FEFO/FIFO obbligatorio, handling (guanti, mascherina, doppio operatore).
Ambiente (8 tipi), range temperatura monitorato da sensori IoT, hazmat abilitata, tipo operatore (dedicata/condivisa/mista). Le zone a temperatura controllata mostrano gauge in tempo reale.
SKU Dedicato: assegna un bin esclusivamente a un prodotto (es. "solo cioccolatini Ferrero in A1"). Mix lotti on/off, FIFO/FEFO enforced, tipo accesso (forklift, AGV, manuale), dimensioni fisiche e portata max.
Regole automatiche: criteri di match (categoria, prefisso SKU, richiede freddo, classe ABC, azienda 3PL) → destinazione (zona preferita, strategia: nearest_empty, same_sku, zone_affinity, abc_velocity).
Validazione automatica durante putaway: prodotto refrigerato non accettato in zona ambient. Sensori IoT monitorano temperatura e generano alert/NCR per deviazioni. Tracciabilita GDP completa.
Chat conversazionale con streaming in tempo reale. L'AI risponde token per token. Contesto multi-turn: ricorda la conversazione precedente nella stessa sessione.
Strumenti: cerca_prodotto, verifica_stock, lista_missioni, stato_alert, piano_wave, previsione_stock, FEFO_check, lista_equipment, analisi_KPI, genera_report...
Screenshot automatici del cockpit simulator su eventi critici. L'AI analizza le immagini in chat (Claude Vision). Fino a 200 snapshot per sessione con audit trail.
L'interfaccia supporta: IT, EN, DE, ES, PT, FR, ZH, RU, JA, KO, AR (RTL), NL, PL, TR, UK, SV. Cambio lingua in tempo reale con data-i18n attribute system.
Da 1× (real time) a 50× (1 giorno simulato in ~30 minuti). Gira in Web Worker → nessun throttling Chrome in background tab.
SimRecorder event-driven: 1 frame per ogni evento engine. Slider replay per navigare nella storia. Sparklines KPI, istogramma frequenza eventi, log clickabile.
Resi, guasti equipment, flash sale, blocchi doganali, quality hold, pickup carrier, verifica SLA, ciclo billing, inventario, ritardo fornitore. Layer di complessità su S1.
SLA compliance %, OEE equipment %, billing 4PL €, guasti attivi, resi, carrier. Gauge temperatura PHARM-A (15-25°C) e PHARM-C (2-8°C GDP). 5 tab facility.
Invia al Claude la timeline campionata + istogramma eventi. L'AI produce un'analisi narrativa della sessione di simulazione. Attivabile dal pannello Replay.
Mappa interattiva del magazzino: zone colorate per tipo, bin con stato stock in tempo reale, equipment in movimento, missioni attive evidenziate.
| Funzionalità | 👑 Admin | 🔵 Supervisor | 🟢 Operator | 👁 Viewer |
|---|---|---|---|---|
| Dashboard & KPI | ✓ | ✓ | ✓ | ✓ |
| Missioni (visualizza) | ✓ | ✓ | ✓ | — |
| Missioni (crea/assegna) | ✓ | ✓ | — | — |
| Inbound & Ricezione | ✓ | ✓ | ✓ | — |
| Outbound & Spedizione | ✓ | ✓ | ✓ | — |
| Inventario & Stock | ✓ | ✓ | ✓ | — |
| Packaging UOM | ✓ | ✓ | read | — |
| Magazzino (zone/bin) | ✓ | ✓ | — | — |
| NCR Conformità | ✓ | ✓ | crea | — |
| TMS & Carrier | ✓ | ✓ | — | — |
| 4PL Billing | ✓ | ✓ | — | — |
| Calendario | ✓ | ✓ | — | — |
| Report & Analytics | ✓ | ✓ | — | ✓ |
| Gestione Utenti | ✓ | — | — | — |
| Notifiche & Config | ✓ | — | — | — |
| AI Chat | ✓ | ✓ | ✓ | — |
| Simulatore | ✓ | ✓ | — | — |
| PWA Mobile Operatore | ✓ | ✓ | ✓ | — |
| Mission Planner API | ✓ | ✓ | — | — |
Il sistema RAG (Retrieval-Augmented Generation) arricchisce l'AI con conoscenza specifica del tuo magazzino. Usa Voyage AI per generare embeddings vettoriali (512 dimensioni) e Qdrant come vector store per la ricerca semantica.
Ogni notte alle 03:00 UTC un cron job genera automaticamente 5 snapshot dai dati live del database e li indicizza in Qdrant:
Top 15 prodotti per quantità + prodotti sotto punto di riordino con dettaglio SKU, nome, quantità e soglia.
Alert attivi per severity (emergency/critical/warning/info) + alert risolti nelle ultime 48h per contesto storico.
Struttura magazzino: zone con conteggio bin e movimenti, operatori attivi per turno, missioni in corso.
Stato fatturazione 4PL: fatture per status (draft/issued/paid/cancelled) con totali in EUR.
Non conformità aperte: tipo, severity, zona, data segnalazione e stato workflow.
Dall'interfaccia AI / RAG (admin) puoi indicizzare documenti personalizzati: SOP, procedure interne, manuali equipment. Il sistema chunka i testi in blocchi di ~250 parole con overlap di 40 e genera embeddings per ogni chunk. I documenti vengono upsertati (idempotenti): reindicizzando lo stesso doc_id si sovrascrive la versione precedente.
Un click su "Indicizza Documentazione WMS" lancia il seeder che indicizza 15 moduli predefiniti del sistema (dashboard, inbound, outbound, AI, simulatore, etc.). Richiede ~30 secondi per il rate limiting Voyage AI (3 RPM free tier, 22s tra batch).
wms_kb_{tenant_id}.
Il modulo NCR (Non-Conformity Report) gestisce le segnalazioni di qualità con un workflow strutturato dalla creazione alla risoluzione.
4 livelli: info (nota), warning (attenzione), critical (blocca bin), blocking (blocca zona intera). La severity determina la priorità di gestione e gli alert automatici.
open → investigating → resolved / escalated. Ogni cambio stato viene registrato con timestamp e operatore. Le NCR blocking impediscono il prelievo dalla zona fino a risoluzione.
Alla chiusura di una NCR con danno/perdita, il sistema propone automaticamente una rettifica stock (stock adjustment) con la causale collegata alla NCR. La rettifica aggiorna i livelli di stock e genera un movimento di inventario tracciato.
Le NCR possono essere generate automaticamente durante il quality check in fase di ricevimento (inbound). Se un prodotto non supera il controllo, viene creata una NCR e il prodotto va in zona quarantena.
L'inventario ciclico permette di verificare lo stock in modo continuativo senza fermare le operazioni, garantendo l'accuratezza dei dati senza un inventario fisico completo.
Conta tutti i bin di tutte le zone del magazzino. Genera un piano di conteggio che assegna automaticamente i bin agli operatori disponibili. Tipicamente programmato una volta al mese o al trimestre.
Conta solo i bin di una zona specifica (es. solo zona picking, solo zona farmaceutica GDP). Utile per zone ad alta rotazione che richiedono verifiche più frequenti.
Conteggio singolo bin o SKU specifico. L'operatore scansiona il bin, conta i pezzi e il sistema registra immediatamente la variazione. Ideale per verifiche spot post-picking.
Il calendario mostra la copertura degli inventari: quali zone sono state contate e quando. Frequenze configurabili per zona:
Ogni conteggio genera un record con: operatore, data/ora, quantità attesa (sistema) vs quantità rilevata (conteggio). Le discrepanze vengono codificate automaticamente e generano:
Il microservizio calendar-ms gestisce festività multi-country, pianificazione eventi e calcolo giorni lavorativi.
Database festività per Italia, Germania, Francia, Spagna, UK e altri 10+ paesi. Calcolo automatico dei giorni lavorativi per le date di consegna previste, tenendo conto del paese del destinatario.
Vista giornaliera, settimanale e mensile degli eventi operativi: ricevimenti programmati, spedizioni, inventari ciclici, manutenzioni equipment, turni operatori.
Il calendario si incrocia con gli ordini inbound previsti per mostrare la capacità di ricezione disponibile per ogni giorno. Utile per bilanciare il carico di lavoro tra i turni.
Il sistema di notifiche usa Server-Sent Events (SSE) per push real-time verso il browser. Ogni alert ha una severity e genera notifiche su più canali.
Connessione persistente dal browser verso /api/realtime. Gli eventi arrivano istantaneamente: stock basso, ordine in ritardo, equipment guasto, temperatura fuori range. La topbar mostra il badge con il conteggio notifiche non lette.
4 livelli: info, warning, critical, emergency. Gli alert critical/emergency generano toast automatici anche se l'utente è in un'altra sezione.
In-app (sempre attivo) + Email (configurabile per severity) + SMS/Webhook (per emergency, via NotificationService). Ogni canale è configurabile per utente e per severity.
Dalla sezione Magazzino → Alert Sistema: filtra per severity, risolvi alert, ignora. Gli alert risolti restano nello storico per audit. Le statistiche alert alimentano i KPI del dashboard.
La mappa SVG del magazzino offre una visualizzazione real-time della struttura fisica con zone colorate, occupazione bin e movimenti AGV.
Ogni zona è rappresentata con un colore specifico per tipo: receiving (verde), storage (blu), picking (arancione), packing (viola), shipping (rosso), quarantine (giallo). Click sulla zona per il dettaglio bin.
Visualizzazione gradiente dell'occupazione: i bin pieni sono rossi, quelli vuoti verdi. La heatmap si aggiorna in tempo reale con ogni movimento di stock e aiuta a identificare colli di bottiglia.
I robot AGV appaiono sulla mappa con posizione e stato in tempo reale (via MQTT Mosquitto). Le linee tratteggiate mostrano il percorso della missione assegnata.
La planimetria può essere esportata in PDF o PNG per documentazione, audit o analisi offline. Include la legenda delle zone e le statistiche di occupazione correnti.
Il bridge WCS (Warehouse Control System) collega WMS Agile ai sistemi automatici tramite il protocollo MQTT (Mosquitto). Il microservizio wcs-ms traduce le missioni WMS in comandi robot e viceversa.
Gestione flotta robot: stato batteria, zona corrente, missione assegnata, OEE (Overall Equipment Effectiveness). Il sistema seleziona automaticamente il robot più vicino con batteria sufficiente per ogni nuova missione.
Comunicazione publish/subscribe: wms/agv/{id}/status (stato robot), wms/agv/{id}/mission (assegnazione missione), wms/agv/{id}/position (posizione per mappa SVG). QoS 1 garantisce la consegna.
Sorter automatici, nastri trasportatori, sistemi pick-to-light: il WCS bridge invia comandi e riceve conferme. Supporta protocolli custom via adapter configurabili per ogni tipo di equipment.
KPI per ogni equipment: disponibilità, performance, qualità. Il sistema segnala automaticamente quando la batteria scende sotto soglia o quando è necessaria manutenzione preventiva basata sulle ore di funzionamento.
L'app mobile operatore è una Progressive Web App (PWA) installabile su qualsiasi smartphone o tablet, ottimizzata per l'uso in magazzino con una mano.
Portale completo con 5 tab: Picking (lista missioni assegnate), Ricezione (conferma pezzi ricevuti), Scan (scanner barcode con riconoscimento automatico bin vs SKU), Stock (verifica giacenze), Missioni (storico completato). KPI personali in header.
Interfaccia ultraleggera (118 righe) per terminali RF da magazzino (Zebra, Honeywell): 4 tab essenziali (Tasks, Scan, Mission, Stock). Ottimizzata per schermi piccoli e connessioni lente. Simulazione livello batteria.
Cache-first strategy per la shell dell'app: funziona anche offline per le schermate principali. Le chiamate API usano network-only e sincronizzano quando la connessione torna disponibile.
Su Android: Chrome → menù → "Aggiungi a Home". Su iOS: Safari → Condividi → "Aggiungi a Home". L'app si comporta come un'app nativa con icona, splash screen e navigazione fullscreen.