GFM Périssabilité
Le Gap Filling Module Périssabilité détermine la classification de périssabilité des produits alimentaires et identifie les produits combinés (produits de commodité versus produits mono). Cette classification est essentielle pour les modules en aval qui calculent les exigences de stockage, les conditions de transport et les facteurs de perte alimentaire.
Référence rapide
| Propriété | Description |
|---|---|
| S'exécute sur | Noeud racine du calcul (niveau recette) |
| Dépendances | AddClientNodesGFM, MatchProductNameGFM, IngredientSplitterGFM, NutrientSubdivisionGFM, LinkTermToActivityNodeGFM, AttachFoodTagsGFM, OriginGFM |
| Entrée clé | Tags de glossaire des produits alimentaires, hiérarchie des ingrédients |
| Sortie | Tag de classification de périssabilité, tag produit combiné/mono |
| Déclencheur | S'exécute à chaque calcul au niveau du noeud racine |
Conditions d'exécution
Le module se déclenche lorsque :
- Le traitement atteint le noeud racine d'un calcul
- Tous les modules dépendants ont terminé leur traitement
- Les produits alimentaires du graphe nécessitent une classification de périssabilité
Sortie clé
Le module ajoute deux types de tags de glossaire aux noeuds de produits alimentaires :
- Tag de périssabilité : Un des trois niveaux (stable, périssable, hautement périssable)
- Tag de type de produit : Classification produit combiné ou produit mono
Méthodologie scientifique
Classification de périssabilité
Les produits alimentaires sont classés en trois niveaux de périssabilité selon leur durée de conservation et leurs exigences de stockage :
| Niveau | ID externe du terme | Description | Produits typiques |
|---|---|---|---|
| Stable | EOS_STABLE | Produits pouvant être stockés à température ambiante pendant des périodes prolongées | Produits secs, conserves, céréales, huiles |
| Périssable | EOS_PERISHABLE | Produits nécessitant un stockage contrôlé avec durée de conservation modérée | Produits laitiers, oeufs, viandes transformées |
| Hautement périssable | EOS_HIGH-PERISHABLE | Produits nécessitant une réfrigération immédiate avec courte durée de conservation | Viande fraîche, fruits de mer, produits coupés |
Règles de propagation
La classification de périssabilité suit un modèle de propagation ascendante à travers la hiérarchie des ingrédients :
Périssabilité du produit = max(Périssabilités des ingrédients)
Logique de propagation :
- Les ingrédients de base reçoivent la périssabilité de leurs définitions de termes de glossaire
- Les produits combinés héritent de la périssabilité la plus élevée de leurs sous-ingrédients
- Les produits sans périssabilité explicite sont par défaut stables
Exemple : Un bol de salade contenant :
- Laitue (hautement périssable)
- Fromage (périssable)
- Croûtons (stable)
Résultat : Le bol de salade est classé comme hautement périssable.
Classification des produits combinés
Le module détermine également si un produit est un produit combiné (produit de commodité) ou un produit mono (ingrédient unique) :
| Classification | ID externe du terme | Critères |
|---|---|---|
| Produit combiné | EOS_COMBINED_PRODUCT | Le produit combine plusieurs ingrédients de produits alimentaires différents |
| Produit mono | EOS_MONO_PRODUCT | Le produit est un ingrédient unique ou ne combine pas plusieurs produits |
Logique de produit combiné :
- Un produit est marqué comme combiné s'il combine directement plusieurs ingrédients de produits alimentaires
- Le tag de produit combiné se propage vers le haut à travers la hiérarchie
- Dès qu'un sous-ingrédient est marqué comme produit combiné, les produits parents reçoivent également le tag de produit combiné
Détails d'implémentation
Vue d'ensemble de l'algorithme
Le module utilise un parcours en profondeur avec traitement post-ordre pour propager la périssabilité des noeuds feuilles vers la racine :
# Pseudocode pour la propagation de périssabilité
def propagate_perishability(node):
if node has explicit perishability tag:
return node.perishability
sub_perishabilities = []
for sub_node in node.sub_nodes:
sub_perishabilities.append(propagate_perishability(sub_node))
if sub_perishabilities:
return max(sub_perishabilities, key=perishability_order)
else:
return SHELF_STABLE # Par défaut
Ordre de périssabilité
Les niveaux de périssabilité sont ordonnés du plus bas au plus élevé :
perishability_order = {
"EOS_STABLE": 0, # Périssabilité la plus basse
"EOS_PERISHABLE": 1, # Périssabilité moyenne
"EOS_HIGH-PERISHABLE": 2 # Périssabilité la plus élevée
}
Attribution de la source
Lorsque le module attribue un tag de périssabilité, il utilise la source eos_assumed pour indiquer que la valeur a été déduite plutôt qu'explicitement fournie :
GlossaryTermProp(
term_uid=perishability_term.uid,
source=SourceEnum.eos_assumed
)
Chaîne de dépendances
Le module attend que ces modules terminent avant de s'exécuter :
| Module | Raison |
|---|---|
AddClientNodesGFM | Les noeuds spécifiés par le client doivent être ajoutés en premier |
MatchProductNameGFM | Les produits doivent être mis en correspondance avec les termes de glossaire |
IngredientSplitterGFM | Les ingrédients composites doivent être séparés |
NutrientSubdivisionGFM | Les subdivisions basées sur les nutriments doivent être traitées |
LinkTermToActivityNodeGFM | Les termes doivent être liés aux activités |
AttachFoodTagsGFM | Les tags spécifiques aux aliments doivent être attachés |
OriginGFM | Les informations d'origine doivent être déterminées |
Sources de données
Termes de glossaire de périssabilité
La classification de périssabilité utilise des termes du glossaire EOS sous le terme racine EOS_Perishability :
| ID externe du terme | Nom affiché | Description |
|---|---|---|
EOS_STABLE | Stable | Produits avec durée de conservation prolongée à température ambiante |
EOS_PERISHABLE | Périssable | Produits nécessitant un stockage contrôlé |
EOS_HIGH-PERISHABLE | Hautement périssable | Produits nécessitant une réfrigération immédiate |
Termes de glossaire de type de produit
La classification produit combiné/mono utilise des termes sous EOS_Combined_Product_Mono_Product :
| ID externe du terme | Nom affiché | Description |
|---|---|---|
EOS_COMBINED_PRODUCT | Produit combiné | Produit de commodité à plusieurs ingrédients |
EOS_MONO_PRODUCT | Produit mono | Produit à ingrédient unique |
Exemple de calcul
Scénario : Une recette de bol de salade de commodité avec la structure suivante :
Bol de salade (pas de périssabilité explicite)
├── Salade fraîche (hautement périssable)
├── Sauce prête à l'emploi (pas de périssabilité explicite)
│ ├── Lait en poudre (stable)
│ ├── Vinaigre (stable)
│ ├── Huile (stable)
│ └── Persil frais (hautement périssable)
└── Tofu (périssable)
Étape 1 : Parcours vers les noeuds feuilles
L'algorithme visite d'abord tous les noeuds feuilles :
- Salade fraîche :
EOS_HIGH-PERISHABLE(depuis le glossaire) - Lait en poudre :
EOS_STABLE(depuis le glossaire) - Vinaigre :
EOS_STABLE(depuis le glossaire) - Huile :
EOS_STABLE(depuis le glossaire) - Persil frais :
EOS_HIGH-PERISHABLE(depuis le glossaire) - Tofu :
EOS_PERISHABLE(depuis le glossaire)
Étape 2 : Propagation vers les noeuds parents
Sauce prête à l'emploi :
- Sous-périssabilités : [stable, stable, stable, hautement-périssable]
- Maximum :
EOS_HIGH-PERISHABLE - Produit combiné : Oui (plusieurs ingrédients de produits alimentaires)
Étape 3 : Propagation vers la racine
Bol de salade :
- Sous-périssabilités : [hautement-périssable, hautement-périssable, périssable]
- Maximum :
EOS_HIGH-PERISHABLE - Produit combiné : Oui (combine plusieurs produits et a un sous-ingrédient produit combiné)
Sortie finale
| Produit | Tag de périssabilité | Tag de type de produit |
|---|---|---|
| Salade fraîche | EOS_HIGH-PERISHABLE | EOS_MONO_PRODUCT |
| Lait en poudre | EOS_STABLE | EOS_MONO_PRODUCT |
| Vinaigre | EOS_STABLE | EOS_MONO_PRODUCT |
| Huile | EOS_STABLE | EOS_MONO_PRODUCT |
| Persil frais | EOS_HIGH-PERISHABLE | EOS_MONO_PRODUCT |
| Tofu | EOS_PERISHABLE | EOS_MONO_PRODUCT |
| Sauce prête à l'emploi | EOS_HIGH-PERISHABLE (supposé) | EOS_COMBINED_PRODUCT |
| Bol de salade | EOS_HIGH-PERISHABLE (supposé) | EOS_COMBINED_PRODUCT |
Intégration avec d'autres modules
Consommateurs en aval
La classification de périssabilité est utilisée par plusieurs modules en aval :
| Module | Utilisation |
|---|---|
| Conservation GFM | Détermine les exigences de stockage (réfrigéré, congelé, séché) |
| Transport GFM | Calcule les exigences de chaîne du froid et la faisabilité des modes de transport |
| Food Loss GFM | Estime les facteurs de gaspillage basés sur la durée de conservation |
Règles de conservation
Le Conservation GFM utilise la périssabilité pour attribuer les méthodes de conservation par défaut :
- Hautement périssable + Pas de tag de conservation : Conservation « réfrigérée » attribuée
- Périssable + Pas de tag de conservation : Conservation « réfrigérée » attribuée
- Stable : Pas de conservation requise (température ambiante)
Implications pour le transport
La sélection du mode de transport considère la périssabilité :
- Hautement périssable : Peut nécessiter un transport aérien pour les longues distances
- Périssable : Peut utiliser le transport réfrigéré par camion/navire
- Stable : Pas d'exigences de chaîne du froid
Limitations connues
Couverture de classification
- Tous les produits alimentaires du glossaire n'ont pas de classifications de périssabilité explicites
- Les produits sans classification sont par défaut stables, ce qui peut sous-estimer les exigences de chaîne du froid
- Certains produits transformés peuvent avoir une périssabilité variable selon la méthode de transformation
Interaction avec la conservation
- Le modèle actuel ne tient pas compte des méthodes de conservation qui modifient la périssabilité (par exemple, le séchage d'herbes hautement périssables)
- Les produits congelés sont gérés séparément par le Conservation GFM
- L'interaction entre périssabilité et conservation pourrait être plus sophistiquée
Détection des produits combinés
- La détection de produit combiné est basée uniquement sur la structure des ingrédients
- Elle ne considère pas les différences de lieu de production (produits de commodité produits dans différentes installations)
- Les codes EAN/GTIN ne sont pas encore utilisés pour identifier les produits de commodité fabriqués industriellement
Améliorations futures
Les améliorations planifiées incluent :
- Parcours de l'arbre pour les tags de glossaire afin d'améliorer la détection de périssabilité
- Meilleure intégration avec les méthodes de conservation qui modifient la périssabilité
- Détection de produits de commodité basée sur la localisation
- Prise en charge des restrictions de méthode de conservation spécifiques aux produits
Références
-
Documentation du glossaire EOS. Documentation interne Eaternity pour les définitions des termes de glossaire.
-
Directives de stockage alimentaire. Directives de sécurité alimentaire FDA et EFSA pour les exigences de température de stockage.
-
Logistique de chaîne du froid. Normes industrielles pour le transport et le stockage des aliments périssables.