Zum Hauptinhalt springen

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
Datenanforderungen

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​

EigenschaftTypPflichtBeschreibung
date-startStringJaStartdatum des Forecast-Zeitraums. Format: YYYY-MM-DD
date-endStringJaEnddatum des Forecast-Zeitraums. Format: YYYY-MM-DD
asyncBooleanNeinBei 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​

EigenschaftTypBeschreibung
kitchen_idStringDie Küche, für die der Forecast berechnet wurde
prediction_idStringEindeutige id dieses Forecasts (von Eaternity erzeugt)
statusStringBerechnungsstatus: processing, done oder error
errorStringFehlermeldung, falls der Forecast nicht berechnet werden konnte
infoArrayWarnungen und Fehler (z. B. nicht zugeordnete Zutaten). Jeder Eintrag kann die Felder error, warning und product_id enthalten.
predicted_salesObjectDer resultierende Verkaufs-Forecast (siehe unten)

Struktur von predicted_sales​

EigenschaftTypBeschreibung
date-startStringStartdatum des Forecast-Zeitraums
date-endStringEnddatum des Forecast-Zeitraums
resultsArrayListe der Forecast-Ergebnisse, nach Tag gruppiert

Jeder Tag in results enthält:

EigenschaftTypBeschreibung
dateStringDas Datum dieser Ergebnisse (YYYY-MM-DD)
total-salesObjectVorhersage der Gesamtverkäufe der Küche an diesem Datum
recipesArrayVorhersagen pro Rezept für dieses Datum

Felder von total-sales:

EigenschaftTypBeschreibung
portionsNumberVorhergesagte Anzahl verkaufter Portionen insgesamt
lowNumberUntere Grenze des 90%-Konfidenzintervalls
highNumberObere Grenze des 90%-Konfidenzintervalls

Jedes Rezept in recipes:

EigenschaftTypBeschreibung
recipe-idStringDie id des Rezepts
portionsNumberVorhergesagte Anzahl verkaufter Portionen
lowNumberUntere Grenze des 90%-Konfidenzintervalls
highNumberObere 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 noch
  • done – die Ergebnisse stehen in predicted_sales
  • error – Details stehen im Feld error

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​