Aller au contenu principal

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 surNoeud racine du calcul (niveau recette)
DépendancesAddClientNodesGFM, MatchProductNameGFM, IngredientSplitterGFM, NutrientSubdivisionGFM, LinkTermToActivityNodeGFM, AttachFoodTagsGFM, OriginGFM
Entrée cléTags de glossaire des produits alimentaires, hiérarchie des ingrédients
SortieTag de classification de périssabilité, tag produit combiné/mono
DéclencheurS'exécute à chaque calcul au niveau du noeud racine

Conditions d'exécution

Le module se déclenche lorsque :

  1. Le traitement atteint le noeud racine d'un calcul
  2. Tous les modules dépendants ont terminé leur traitement
  3. 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 :

NiveauID externe du termeDescriptionProduits typiques
StableEOS_STABLEProduits pouvant être stockés à température ambiante pendant des périodes prolongéesProduits secs, conserves, céréales, huiles
PérissableEOS_PERISHABLEProduits nécessitant un stockage contrôlé avec durée de conservation modéréeProduits laitiers, oeufs, viandes transformées
Hautement périssableEOS_HIGH-PERISHABLEProduits nécessitant une réfrigération immédiate avec courte durée de conservationViande 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 :

  1. Les ingrédients de base reçoivent la périssabilité de leurs définitions de termes de glossaire
  2. Les produits combinés héritent de la périssabilité la plus élevée de leurs sous-ingrédients
  3. 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) :

ClassificationID externe du termeCritères
Produit combinéEOS_COMBINED_PRODUCTLe produit combine plusieurs ingrédients de produits alimentaires différents
Produit monoEOS_MONO_PRODUCTLe 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 :

ModuleRaison
AddClientNodesGFMLes noeuds spécifiés par le client doivent être ajoutés en premier
MatchProductNameGFMLes produits doivent être mis en correspondance avec les termes de glossaire
IngredientSplitterGFMLes ingrédients composites doivent être séparés
NutrientSubdivisionGFMLes subdivisions basées sur les nutriments doivent être traitées
LinkTermToActivityNodeGFMLes termes doivent être liés aux activités
AttachFoodTagsGFMLes tags spécifiques aux aliments doivent être attachés
OriginGFMLes 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 termeNom affichéDescription
EOS_STABLEStableProduits avec durée de conservation prolongée à température ambiante
EOS_PERISHABLEPérissableProduits nécessitant un stockage contrôlé
EOS_HIGH-PERISHABLEHautement périssableProduits 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 termeNom affichéDescription
EOS_COMBINED_PRODUCTProduit combinéProduit de commodité à plusieurs ingrédients
EOS_MONO_PRODUCTProduit monoProduit à 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

ProduitTag de périssabilitéTag de type de produit
Salade fraîcheEOS_HIGH-PERISHABLEEOS_MONO_PRODUCT
Lait en poudreEOS_STABLEEOS_MONO_PRODUCT
VinaigreEOS_STABLEEOS_MONO_PRODUCT
HuileEOS_STABLEEOS_MONO_PRODUCT
Persil fraisEOS_HIGH-PERISHABLEEOS_MONO_PRODUCT
TofuEOS_PERISHABLEEOS_MONO_PRODUCT
Sauce prête à l'emploiEOS_HIGH-PERISHABLE (supposé)EOS_COMBINED_PRODUCT
Bol de saladeEOS_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 :

ModuleUtilisation
Conservation GFMDétermine les exigences de stockage (réfrigéré, congelé, séché)
Transport GFMCalcule les exigences de chaîne du froid et la faisabilité des modes de transport
Food Loss GFMEstime 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 :

  1. Hautement périssable + Pas de tag de conservation : Conservation « réfrigérée » attribuée
  2. Périssable + Pas de tag de conservation : Conservation « réfrigérée » attribuée
  3. 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

  1. Documentation du glossaire EOS. Documentation interne Eaternity pour les définitions des termes de glossaire.

  2. Directives de stockage alimentaire. Directives de sécurité alimentaire FDA et EFSA pour les exigences de température de stockage.

  3. Logistique de chaîne du froid. Normes industrielles pour le transport et le stockage des aliments périssables.