Case study
ODP settimanali automatici nel MES: zero attività manuali
Automazione della creazione degli ordini di produzione per una pianificazione lun–ven: plugin esterno al MES, logica idempotente, scheduler e recovery.
Contesto
Un’azienda nel settore del recupero e lavorazione di pneumatici usati lavora su una pianificazione produttiva settimanale (lun–ven).
La creazione degli ordini di produzione (ODP) era un’attività manuale, con diversi rischi: dimenticanze, duplicazioni, incoerenza nei dati (codici, cicli, articoli).
Inoltre, il processo dipendeva dalla presenza operativa (persona o sistema attivo nel momento giusto).
Sfida
L’obiettivo non era solo automatizzare.
Serviva un sistema che fosse:
- affidabile nel tempo
- allineato al MES esistente
- resistente a interruzioni (server spento, manutenzione, ecc.)
- senza duplicazioni o errori
Approccio
È stata progettata una soluzione deterministica e modulare, basata su un plugin esterno al core MES.
Principi chiave:
- nessuna modifica invasiva al sistema
- generazione basata su regole prevedibili (settimana/anno)
- logica idempotente (mai duplicare)
- resilienza tramite meccanismi di recovery (catch-up)
Soluzione
È stato sviluppato un plugin custom basato su:
- Next.js (Node.js)
- integrazione via API e SQL diretto
- database Microsoft SQL Server

Funzionamento (in sintesi)
All’avvio del server
- creazione automatica tabella di log (se assente)
- esecuzione catch-up: se l’ODP della settimana non esiste, viene generato
- se è domenica, non anticipa
Scheduler
- esecuzione automatica ogni lunedì alle 01:00
- fuso Europe/Rome
- configurabile via file
Pipeline di generazione (una sola volta per settimana)
- Articolo: generato automaticamente se non configurato; formato deterministico ART00 + settimana + anno
- Ciclo: creato e collegato all’articolo, oppure riutilizzato da configurazione
- Ordine di produzione (ODP): codice L00 + settimana + anno; consegna venerdì della settimana ISO; quantità e parametri configurabili
Anti-duplicazione
- verifica preventiva su order_number
- se esiste → skip automatico
Tracciamento e integrazione
- log persistente con tipo evento: AUTO, CATCH-UP, MANUAL
- emissione evento real-time per aggiornamenti UI / dashboard
API e controllo
- endpoint dedicati: generazione manuale, storico, test (“dry run”), configurazione
Risultato
- eliminazione completa della dipendenza da attività manuali
- zero duplicazioni grazie a logica deterministica
- continuità operativa anche in caso di downtime
- dati coerenti e strutturati per analisi e report