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
Schermata Configurazione Plugin: scheduler cron ogni lunedì alle 01:00 (Europe/Rome), prefisso ordine L00, quantità 100, priorità normale e note per ordini settimanali automatici.
Pannello «Configurazione Plugin»: attivazione scheduler, espressione cron, timezone e parametri degli ordini generati (tutto configurabile da interfaccia).

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