Passa al contenuto principale

Stato della produzione

Dove si trova ogni pezzo, adesso.

GET /api/v1/integration/production-status

curl -H "X-API-Key: mgi_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
https://vostro-server/api/v1/integration/production-status

Risposta

{
"codes": [
{
"barcode": "ABC-001",
"lotQuantity": 4,
"orderRef": "0001",
"status": "IN_PROGRESS",
"quantityDone": 0,
"stages": [
{
"sequence": 1,
"service": "SERVICE_A",
"machineName": "MACHINE 01",
"status": "DONE",
"startedAt": "2026-09-18T11:02:00Z",
"finishedAt": "2026-09-18T11:47:00Z",
"scheduledFor": "2026-09-18T08:00:00Z",
"quantityCompleted": 4,
"quantityInProgress": 0,
"quantityWaiting": 0,
"batchId": 101
},
{
"sequence": 2,
"service": "SERVICE_B",
"machineName": "MACHINE 02",
"status": "PARTIAL",
"startedAt": "2026-09-18T13:20:00Z",
"finishedAt": null,
"scheduledFor": "2026-09-18T13:00:00Z",
"quantityCompleted": 2,
"quantityInProgress": 1,
"quantityWaiting": 1,
"batchId": 102
},
{
"sequence": 3,
"service": "SERVICE_C",
"machineName": "MACHINE 03",
"status": "WAITING",
"startedAt": null,
"finishedAt": null,
"scheduledFor": "2026-09-19T09:00:00Z",
"quantityCompleted": 0,
"quantityInProgress": 0,
"quantityWaiting": 4,
"batchId": null
}
]
}
],
"totalCodes": 1,
"truncated": false,
"daysAfterCompletion": 7,
"serverUtc": "2026-09-18T14:02:11Z"
}

Campi

CampoSignificato
codes[]Una voce per ogni codice a barre che avete inviato
totalCodesQuanti ne sono tornati
truncatedtrue quando è stato raggiunto il tetto dei codici — filtrate per orderRef
daysAfterCompletionPer quanto tempo un codice concluso continua a comparire
serverUtcOrologio del server, da confrontare con il vostro

Per codice:

CampoSignificato
barcodeIl codice che avete inviato. Sempre la radice del lotto, mai una frazione interna
lotQuantityQuantità ordinata. Immutabile — non cambia quando il lotto viene frazionato
statusSintesi: lo stato della prima fase non ancora chiusa
quantityDoneUnità che hanno completato l'intero ciclo
stages[]Il ciclo di lavorazione, in ordine

Per fase:

CampoSignificato
sequencePosizione nel ciclo
service · machineNameLa lavorazione e dove viene eseguita
startedAtQuando è entrata la prima unità. null se nessuna è entrata
finishedAtValorizzata solo quando l'intero lotto è passato
scheduledForQuando avrebbe dovuto iniziare. Passata, e ancora WAITING, significa LATE
quantityCompleted · quantityInProgress · quantityWaitingLe tre quantità. Sommano sempre a lotQuantity
batchIdIl lotto fisico (infornata, lastra) attraverso cui sono passate le unità, quando esiste

È una fotografia, non un registro

È la cosa da capire prima di scrivere qualsiasi codice contro questo endpoint.

La risposta è lo stato completo attuale, non un elenco di ciò che è accaduto dall'ultima volta che avete chiesto. Non c'è cursore, non c'è offset, e non c'è conferma da rimandare.

Ne consegue che:

  • Sovrascrivete ciò che avevate. Non accodate, non fate merge. La risposta è già il quadro intero.
  • Saltare un ciclo non costa nulla. Il vostro lettore è rimasto fermo un'ora? La chiamata successiva dà lo stato attuale. Nulla si è accodato e nulla si è perso.
  • Interrogare è idempotente. Leggere due volte non cambia nulla da parte nostra.

Un registro sarebbe stato più facile da costruire per noi e molto più difficile da consumare per voi — dovreste tenere traccia di ciò che avete già visto, e un evento perso vi lascerebbe sbagliati per sempre. Una fotografia non può disallinearsi.

Le tre quantità

Un pezzo ordinato con lotQuantity > 1 può essere diviso fra le fasi — parte tagliata, parte ancora in attesa. Nell'esempio sopra, la seconda fase ha 2 concluse, 1 in macchina e 1 in attesa.

Senza quella di mezzo, "è in macchina" e "non è ancora iniziata" apparirebbero entrambe come zero avanzamento — che è esattamente la domanda per cui la programmazione telefona.

Gli stati di una fase

StatoSignificato
WAITINGNon iniziata, ed entro la finestra programmata
LATENon iniziata, e la data programmata è passata
IN_PROGRESSUnità in macchina adesso
PARTIALParte del lotto è passata, e il resto non è in nessuna macchina
DONETerminata
OUTSOURCEDInviata a un fornitore esterno (conto terzi)
SHIPPEDSpedita
CANCELLEDAnnullata

LATE e PARTIAL hanno un nome proprio di proposito. Entrambe si nasconderebbero dietro WAITING, ed entrambe sono quelle che generano una telefonata.

Il codice è sempre quello che avete inviato

Ciò che avete usato come barcode è ciò che torna. Non lo traduciamo, non lo prefissiamo e non lo sostituiamo con un identificativo interno.

Se un pezzo è stato diviso durante la produzione — un lotto tagliato in parte, un pezzo rotto e rimpiazzato — le frazioni vengono riconsolidate sotto il codice che conoscete. I nostri identificativi interni restano interni.

Filtri

ParametroEffettoEsempio
orderRefSolo quell'ordine?orderRef=0001
daysAfterCompletionPer quanti giorni i codici conclusi continuano a comparire?daysAfterCompletion=3
codeLimitTetto al numero di codici restituiti?codeLimit=500
curl -H "X-API-Key: mgi_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
"https://vostro-server/api/v1/integration/production-status?orderRef=0001"

I codici conclusi continuano a comparire per qualche giorno di proposito, così che un lettore rimasto fermo per un ciclo non perda la chiusura di un ordine.

Quando truncated torna true, avete raggiunto il tetto. Filtrate per orderRef invece di alzarlo.

Cosa questo non copre

Riporta ciò che il reparto ha registrato. Non è un documento fiscale, non è una conferma di consegna, e non riporta nulla di ciò che accade dopo la spedizione.