Aller au contenu principal

Forecast

L'API Forecast prévoit les portions de menu vendues à partir des recettes planifiées et de l'historique des ventes d'une cuisine. Elle permet de mieux planifier la production et de réduire le gaspillage alimentaire.

Aperçu​

Utilisez l'API Forecast pour :

  • Prévoir combien de portions de chaque recette seront vendues les jours suivants
  • Obtenir des intervalles de confiance (bornes basse/haute) pour les prévisions
  • Planifier les quantités produites pour réduire la surproduction et le gaspillage alimentaire
  • Mettre à jour les portions réellement vendues et produites pour améliorer les prévisions futures
Données requises

La prévision nécessite au moins 10 jours consécutifs de menus avec des recettes complètes et des données de ventes. Plus de données améliorent la précision des prévisions. Vous recevez un avertissement si les données sont insuffisantes pour une prévision.

Créer une prévision​

Envoyez une request POST à /prognosis/{kitchen_id}/forecast avec la période souhaitée.

Propriétés de la request​

PropriétéTypeObligatoireDescription
date-startStringOuiDate de début de la période de prévision. Format : YYYY-MM-DD
date-endStringOuiDate de fin de la période de prévision. Format : YYYY-MM-DD
asyncBooleanNonSi true, la réponse est immédiate avec un prediction_id, sans attendre la fin du calcul. Valeur par défaut : false

Exemple de 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
}'

Propriétés de la réponse​

PropriétéTypeDescription
kitchen_idStringLa cuisine pour laquelle la prévision a été calculée
prediction_idStringIdentifiant unique de cette prévision (généré par Eaternity)
statusStringStatut du calcul : processing, done ou error
errorStringMessage d'erreur si le calcul de la prévision n'a pas été possible
infoArrayAvertissements et erreurs (p. ex. ingrédients sans correspondance). Chaque entrée peut contenir les champs error, warning et product_id.
predicted_salesObjectLa prévision des ventes obtenue (voir ci-dessous)

Structure des ventes prévues​

PropriétéTypeDescription
date-startStringDate de début de la période de prévision
date-endStringDate de fin de la période de prévision
resultsArrayListe des résultats de prévision regroupés par jour

Chaque jour dans results contient :

PropriétéTypeDescription
dateStringLa date de cet ensemble de résultats (YYYY-MM-DD)
total-salesObjectPrévision des ventes totales de la cuisine à cette date
recipesArrayPrévisions par recette pour cette date

Champs de total-sales :

PropriétéTypeDescription
portionsNumberNombre total prévu de portions vendues
lowNumberBorne inférieure de l'intervalle de confiance à 90 %
highNumberBorne supérieure de l'intervalle de confiance à 90 %

Chaque recette dans recipes :

PropriétéTypeDescription
recipe-idStringL'ID de la recette
portionsNumberNombre prévu de portions vendues
lowNumberBorne inférieure de l'intervalle de confiance à 90 %
highNumberBorne supérieure de l'intervalle de confiance à 90 %

Exemple de réponse​

{
"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
}
]
}
]
}
}

Récupérer une prévision​

Si vous avez créé une prévision avec async: true, récupérez les résultats via GET /prognosis/{kitchen_id}/forecast/{prediction_id}.

La réponse a la même structure que la réponse de création. Vérifiez le champ status :

  • processing : le calcul est encore en cours
  • done : les résultats sont disponibles dans predicted_sales
  • error : consultez le champ error pour plus de détails

Mettre à jour les portions vendues et produites​

Une fois les données de ventes réelles disponibles, mettez à jour les recettes avec les chiffres réels via POST /prognosis/{kitchen_id}/portions. Cela améliore les prévisions futures.

Request​

{
"recipes": [
{
"recipe-id": "11111",
"sold-portions": 444,
"production-portions": 500
},
{
"recipe-id": "22222",
"sold-portions": 555,
"production-portions": 600
}
]
}

Réponse​

Chaque recette renvoie un statut qui indique si la mise à jour a été appliquée :

{
"recipes": [
{
"recipe-id": "11111",
"status": "UPDATED"
},
{
"recipe-id": "22222",
"status": "NOT_FOUND"
}
]
}

Endpoints​