Forecast
Die Forecast API sagt verkaufte Menüportionen anhand der geplanten Rezepte und der historischen Verkaufsdaten einer Küche voraus. Das ermöglicht eine bessere Produktionsplanung und weniger Lebensmittelverschwendung.
Überblick
Verwenden Sie die Forecast API, um:
- vorherzusagen, wie viele Portionen jedes Rezepts an den kommenden Tagen verkauft werden
- Konfidenzintervalle (untere/obere Grenze) für die Vorhersagen zu erhalten
- Produktionsmengen so zu planen, dass Überproduktion und Lebensmittelverschwendung sinken
- tatsächlich verkaufte und produzierte Portionen nachzutragen, um künftige Vorhersagen zu verbessern
Der Forecast benötigt mindestens 10 aufeinanderfolgende Tage mit Menüs, vollständigen Rezepten und Verkaufsdaten. Mehr Daten verbessern die Genauigkeit der Vorhersage. Sie erhalten eine Warnung, wenn für eine Vorhersage zu wenig Daten vorhanden sind.
Einen Forecast erstellen
Senden Sie einen POST-Request an /prognosis/{kitchen_id}/forecast mit dem gewünschten Datumsbereich.
Request-Eigenschaften
| Eigenschaft | Typ | Pflicht | Beschreibung |
|---|---|---|---|
date-start | String | Ja | Startdatum des Forecast-Zeitraums. Format: YYYY-MM-DD |
date-end | String | Ja | Enddatum des Forecast-Zeitraums. Format: YYYY-MM-DD |
async | Boolean | Nein | Bei true kommt sofort eine Antwort mit einer prediction_id, ohne auf das Ende der Berechnung zu warten. Standard: false |
Request-Beispiel
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
}'
Response-Eigenschaften
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
kitchen_id | String | Die Küche, für die der Forecast berechnet wurde |
prediction_id | String | Eindeutige id dieses Forecasts (von Eaternity erzeugt) |
status | String | Berechnungsstatus: processing, done oder error |
error | String | Fehlermeldung, falls der Forecast nicht berechnet werden konnte |
info | Array | Warnungen und Fehler (z. B. nicht zugeordnete Zutaten). Jeder Eintrag kann die Felder error, warning und product_id enthalten. |
predicted_sales | Object | Der resultierende Verkaufs-Forecast (siehe unten) |
Struktur von predicted_sales
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
date-start | String | Startdatum des Forecast-Zeitraums |
date-end | String | Enddatum des Forecast-Zeitraums |
results | Array | Liste der Forecast-Ergebnisse, nach Tag gruppiert |
Jeder Tag in results enthält:
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
date | String | Das Datum dieser Ergebnisse (YYYY-MM-DD) |
total-sales | Object | Vorhersage der Gesamtverkäufe der Küche an diesem Datum |
recipes | Array | Vorhersagen pro Rezept für dieses Datum |
Felder von total-sales:
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
portions | Number | Vorhergesagte Anzahl verkaufter Portionen insgesamt |
low | Number | Untere Grenze des 90%-Konfidenzintervalls |
high | Number | Obere Grenze des 90%-Konfidenzintervalls |
Jedes Rezept in recipes:
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
recipe-id | String | Die id des Rezepts |
portions | Number | Vorhergesagte Anzahl verkaufter Portionen |
low | Number | Untere Grenze des 90%-Konfidenzintervalls |
high | Number | Obere Grenze des 90%-Konfidenzintervalls |
Response-Beispiel
{
"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
}
]
}
]
}
}
Einen Forecast abrufen
Wenn Sie einen Forecast mit async: true erstellt haben, rufen Sie die Ergebnisse über GET /prognosis/{kitchen_id}/forecast/{prediction_id} ab.
Die Response hat dieselbe Struktur wie beim Erstellen. Prüfen Sie das Feld status:
processing– die Berechnung läuft nochdone– die Ergebnisse stehen inpredicted_saleserror– Details stehen im Felderror
Verkaufte und produzierte Portionen nachtragen
Sobald die tatsächlichen Verkaufsdaten vorliegen, tragen Sie die echten Zahlen über POST /prognosis/{kitchen_id}/portions in den Rezepten nach. Das verbessert künftige Vorhersagen.
Request
{
"recipes": [
{
"recipe-id": "11111",
"sold-portions": 444,
"production-portions": 500
},
{
"recipe-id": "22222",
"sold-portions": 555,
"production-portions": 600
}
]
}
Response
Für jedes Rezept kommt ein Status zurück, der angibt, ob die Aktualisierung übernommen wurde:
{
"recipes": [
{
"recipe-id": "11111",
"status": "UPDATED"
},
{
"recipe-id": "22222",
"status": "NOT_FOUND"
}
]
}
Endpoints
📄️ 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.