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
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é | Type | Obligatoire | Description |
|---|---|---|---|
date-start | String | Oui | Date de début de la période de prévision. Format : YYYY-MM-DD |
date-end | String | Oui | Date de fin de la période de prévision. Format : YYYY-MM-DD |
async | Boolean | Non | Si 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é | Type | Description |
|---|---|---|
kitchen_id | String | La cuisine pour laquelle la prévision a été calculée |
prediction_id | String | Identifiant unique de cette prévision (généré par Eaternity) |
status | String | Statut du calcul : processing, done ou error |
error | String | Message d'erreur si le calcul de la prévision n'a pas été possible |
info | Array | Avertissements et erreurs (p. ex. ingrédients sans correspondance). Chaque entrée peut contenir les champs error, warning et product_id. |
predicted_sales | Object | La prévision des ventes obtenue (voir ci-dessous) |
Structure des ventes prévues
| Propriété | Type | Description |
|---|---|---|
date-start | String | Date de début de la période de prévision |
date-end | String | Date de fin de la période de prévision |
results | Array | Liste des résultats de prévision regroupés par jour |
Chaque jour dans results contient :
| Propriété | Type | Description |
|---|---|---|
date | String | La date de cet ensemble de résultats (YYYY-MM-DD) |
total-sales | Object | Prévision des ventes totales de la cuisine à cette date |
recipes | Array | Prévisions par recette pour cette date |
Champs de total-sales :
| Propriété | Type | Description |
|---|---|---|
portions | Number | Nombre total prévu de portions vendues |
low | Number | Borne inférieure de l'intervalle de confiance à 90 % |
high | Number | Borne supérieure de l'intervalle de confiance à 90 % |
Chaque recette dans recipes :
| Propriété | Type | Description |
|---|---|---|
recipe-id | String | L'ID de la recette |
portions | Number | Nombre prévu de portions vendues |
low | Number | Borne inférieure de l'intervalle de confiance à 90 % |
high | Number | Borne 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 coursdone: les résultats sont disponibles danspredicted_saleserror: consultez le champerrorpour 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
📄️ 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.