Forecast
La Forecast API prevede le porzioni di menu vendute in base alle ricette pianificate e ai dati storici di vendita di una cucina. Permette di pianificare meglio la produzione e di ridurre lo spreco alimentare.
Panoramica
Usate la Forecast API per:
- Prevedere quante porzioni di ogni ricetta verranno vendute nei prossimi giorni
- Ottenere intervalli di confidenza (limiti inferiore e superiore) per le previsioni
- Pianificare le quantità da produrre per ridurre la sovrapproduzione e lo spreco alimentare
- Aggiornare le porzioni effettivamente vendute e prodotte per migliorare le previsioni future
Il forecast richiede almeno 10 giorni consecutivi di menu con ricette complete e dati di vendita. Più dati migliorano la precisione della previsione. Riceverete un avviso se i dati sono troppo pochi per una previsione.
Creare un forecast
Inviate una request POST a /prognosis/{kitchen_id}/forecast con l'intervallo di date desiderato.
Proprietà della request
| Proprietà | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
date-start | String | Sì | Data di inizio del periodo di previsione. Formato: YYYY-MM-DD |
date-end | String | Sì | Data di fine del periodo di previsione. Formato: YYYY-MM-DD |
async | Boolean | No | Se true, risponde subito con un prediction_id senza attendere la fine del calcolo. Predefinito: false |
Esempio di request
curl -X POST "https://co2.eaternity.ch/api/prognosis/YOURKITCHENID/forecast" \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{
"date-start": "2021-02-08",
"date-end": "2021-02-09",
"async": false
}'
Proprietà della response
| Proprietà | Tipo | Descrizione |
|---|---|---|
kitchen_id | String | La cucina per cui è stato calcolato il forecast |
prediction_id | String | Identificativo univoco di questo forecast (generato da Eaternity) |
status | String | Stato del calcolo: processing, done o error |
error | String | Messaggio di errore se il calcolo del forecast non è stato possibile |
info | Array | Avvisi ed errori (ad es. ingredienti non abbinati). Ogni voce può contenere i campi error, warning e product_id. |
predicted_sales | Object | La previsione di vendita risultante (vedi sotto) |
Struttura delle vendite previste
| Proprietà | Tipo | Descrizione |
|---|---|---|
date-start | String | Data di inizio del periodo di previsione |
date-end | String | Data di fine del periodo di previsione |
results | Array | Elenco dei risultati della previsione raggruppati per giorno |
Ogni giorno in results contiene:
| Proprietà | Tipo | Descrizione |
|---|---|---|
date | String | La data di questo insieme di risultati (YYYY-MM-DD) |
total-sales | Object | Previsione delle vendite totali della cucina in questa data |
recipes | Array | Previsioni per ricetta in questa data |
Campi di total-sales:
| Proprietà | Tipo | Descrizione |
|---|---|---|
portions | Number | Numero previsto di porzioni vendute in totale |
low | Number | Limite inferiore dell'intervallo di confidenza al 90% |
high | Number | Limite superiore dell'intervallo di confidenza al 90% |
Ogni ricetta in recipes:
| Proprietà | Tipo | Descrizione |
|---|---|---|
recipe-id | String | L'ID della ricetta |
portions | Number | Numero previsto di porzioni vendute |
low | Number | Limite inferiore dell'intervallo di confidenza al 90% |
high | Number | Limite superiore dell'intervallo di confidenza al 90% |
Esempio di response
{
"kitchen_id": "11122233",
"prediction_id": "3f8e11ca-5234-47da-8602-c255a290e5f2",
"status": "done",
"info": [],
"predicted_sales": {
"date-start": "2021-02-08",
"date-end": "2021-02-09",
"results": [
{
"date": "2021-02-08",
"total-sales": {
"portions": 1203,
"low": 1123,
"high": 1265
},
"recipes": [
{
"recipe-id": "11111",
"portions": 489,
"low": 416,
"high": 526
}
]
}
]
}
}
Recuperare un forecast
Se avete creato un forecast con async: true, recuperate i risultati con GET /prognosis/{kitchen_id}/forecast/{prediction_id}.
La response ha la stessa struttura della response di creazione. Controllate il campo status:
processing— il calcolo è ancora in corsodone— i risultati sono disponibili inpredicted_saleserror— consultate il campoerrorper i dettagli
Aggiornare le porzioni vendute e prodotte
Quando i dati di vendita effettivi sono disponibili, aggiornate le ricette con i numeri reali tramite POST /prognosis/{kitchen_id}/portions. Questo migliora le previsioni future.
Request
{
"recipes": [
{
"recipe-id": "11111",
"sold-portions": 444,
"production-portions": 500
},
{
"recipe-id": "22222",
"sold-portions": 555,
"production-portions": 600
}
]
}
Response
Per ogni ricetta viene restituito uno stato che indica se l'aggiornamento è stato applicato:
{
"recipes": [
{
"recipe-id": "11111",
"status": "UPDATED"
},
{
"recipe-id": "22222",
"status": "NOT_FOUND"
}
]
}
Endpoint
📄️ Create a forecast
Create a new forecast calculation for the kitchen.
📄️ Get a forecast
Retrieve the status and results of a previously created forecast calculation.
📄️ Update recipe portions
Update the production-portions and sold-portions of multiple recipes.