# Mock Server MES
Questo progetto implementa un **mock server** per simulare un sistema **MES (Manufacturing Execution System)** focalizzato sul tracciamento dell’avanzamento degli SFC (Shop Floor Control).
Il server gira con **Flask** e fornisce API REST per gestire SFC, routing e avanzamenti di produzione.
Il server gira sulla porta **80**.
---
## 🚀 Avvio del server
### In locale
```bash
python app.py
Costruisci l'immagine:
docker build -t mock-mes .Esegui il container:
docker run -d -p 80:80 mock-mesPOST /sfc
Crea un nuovo SFC con ID univoco (es. SFCMOCK1).
POST /routing
Crea un nuovo routing con un numero di operazioni random (max 15).
Request body:
{ "operations": 10 }POST /sfc/<sfc_id>/assign_routing
Assegna un routing esistente a uno SFC.
Request body:
{ "routing_id": "ROUTING1" }POST /sfc/<sfc_id>/advance
Completa l’operazione in corso e mette in in work la successiva.
POST /sfc/<sfc_id>/rollback
Riporta l’SFC a uno step specifico, azzerando le operazioni successive.
Request body:
{ "step": 3 }POST /sfc/<sfc_id>/force_advance
Forza l’avanzamento dello SFC a un certo step.
Le operazioni intermedie vengono segnate come bypassed.
Request body:
{ "step": 5 }POST /sfc/<sfc_id>/rollback_single
Riporta solo una operazione a blank.
- Se era
in work, viene riportatablanke la precedente diventain work. - Se era
done, viene riportatablank.
Request body:
{ "step": 2 }POST /sfc/<sfc_id>/complete
Completa l’operazione attualmente in work e mette la successiva in in work.
GET /sfc/<sfc_id>
Restituisce lo stato completo di uno SFC (routing, operazioni e stato globale).
GET /sfc/<sfc_id>/routing_state
Restituisce lo stato dettagliato del routing associato a uno SFC.
-
SFC
New: in attesa di iniziareIn Work: almeno una operazione in corsoDone: tutte le operazioni completate
-
Operazioni
blank: non iniziatain work: in esecuzionedone: completatabypassed: saltata
curl -X POST http://localhost/sfccurl -X POST http://localhost/routing -H "Content-Type: application/json" -d '{"operations": 8}'curl -X POST http://localhost/sfc/SFCMOCK1/assign_routing -H "Content-Type: application/json" -d '{"routing_id": "ROUTING1"}'curl -X POST http://localhost/sfc/SFCMOCK1/rollback -H "Content-Type: application/json" -d '{"step": 2}'curl -X POST http://localhost/sfc/SFCMOCK1/rollback_single -H "Content-Type: application/json" -d '{"step": 2}'curl -X POST http://localhost/sfc/SFCMOCK1/force_advance -H "Content-Type: application/json" -d '{"step": 5}'All’avvio il server genera automaticamente:
- 3 routing con operazioni casuali
- 5 SFC già assegnati a un routing casuale