🥬 Module 52
5

Leçon 5 — Canonicalizer pays, détecteur allergènes et migration en production

Leçon 5 / 5 — 2h

« L'excellence n'est pas un acte, mais une habitude. »

A

Aristote

Le Logicien · 384-322 av. J.-C.

Le canonicalizer pays : transformer 49 valeurs en 12 codes ISO

Le problème de Palimex v2 : 49 valeurs distinctes pour « pays d'origine », issues de saisies libres sur 10 ans. La solution n'est pas de corriger à la main — c'est de construire une table de mapping exhaustive et d'appliquer une règle de canonicalisation à l'import.

-- Table de mapping (peuplée une fois, réutilisée à chaque import)\nCREATE TABLE ps_ac_country_alias (\n  alias        VARCHAR(64) NOT NULL,\n  iso_code     CHAR(2)     NOT NULL,\n  PRIMARY KEY (alias)\n);\n\n-- Exemples de mappings\nINSERT INTO ps_ac_country_alias VALUES\n  ('PAYS-BAS',     'NL'),\n  ('PAYS BAS',     'NL'),\n  ('Hollande',     'NL'),\n  ('NL',           'NL'),\n  ('Pays-Bas (UE)','NL'),\n  ('RPC',          'CN'),\n  ('Chine',        'CN'),\n  ('China',        'CN');\n

À l'import fournisseur, votre script Python récupère la valeur brute, la normalise en minuscules, cherche l'alias, et insère le code ISO dans ps_ac_product_spec.country_origin. Si aucun alias ne correspond, le produit est mis en file d'attente de validation manuelle — jamais silencieusement ignoré.

Le détecteur regex des 14 allergènes INCO

La réglementation UE 1169/2011 impose de déclarer les 14 allergènes majeurs. Vos fournisseurs vous envoient des champs libres : « contient gluten de blé, traces de lait et d'œufs ».

Le détecteur applique un jeu de regex par allergène :

ALLERGEN_PATTERNS = {\n    0b00000000001: [r'gluten', r'blé', r'seigle', r'orge', r'avoine'],  # bit 1\n    0b00000000010: [r'crustac'],                                          # bit 2\n    0b00000000100: [r'\\bœuf\\b', r'\\begg\\b', r'ovoprod'],               # bit 3\n    0b00000001000: [r'\\bpoisson\\b', r'\\bfish\\b'],                       # bit 4\n    # ... 14 bits total\n}\n\ndef detect_allergens(raw_text: str) -> int:\n    mask = 0\n    for bit, patterns in ALLERGEN_PATTERNS.items():\n        if any(re.search(p, raw_text, re.IGNORECASE) for p in patterns):\n            mask |= bit\n    return mask\n

Le résultat est un entier stocké dans allergens_mask. Votre endpoint Nuxt le décode à la volée pour afficher les pictogrammes réglementaires.

Migration en production : ordre impératif

La doctrine AC impose un ordre strict pour toute migration touchant un module existant :

  • 1. Bump version du module ac_productspec (ex. 1.0.0 → 1.1.0)
  • 2. Créer upgrade/upgrade-1.1.0.php avec l'ALTER TABLE idempotent (IF NOT EXISTS)
  • 3. Mettre à jour sql/install.sql pour les nouvelles installations
  • 4. Lancer sync-modules-tenant.sh — PS détecte le bump et applique le delta automatiquement
  • 5. Exécuter le script de migration des données (canonicalizer + détecteur allergènes)
  • 6. Vérifier le coverage : SELECT COUNT(*) FROM ps_ac_product_spec WHERE country_origin IS NULL

Sur Palimex v2, ce pipeline a produit 98 % de coverage en un seul passage. Les 2 % restants (22 produits) ont été traités manuellement en moins d'une heure — avec un écran de validation dédié, pas un tableur.

A retenir : Commencez votre <a href="/dictionnaire/migration" title="Définition : Migration" class="dict-link">migration</a> MDM par le canonicalizer pays : c'est le chantier le plus visible, le plus rapide à valider, et celui qui débloque immédiatement les filtres front-office.

Questions & Réponses

Une question sur cette leçon ? L'IA répond automatiquement.

Vos questions et les réponses IA sont publiques. Votre email reste privé.

Avis vérifiés

Nos clients parlent de nous

5.0 / 5

33 avis clients

Nous travaillons avec Alexandre depuis quelques mois et sommes ravis de son a

Nous travaillons avec Alexandre depuis quelques mois et sommes ravis de son accompagnement. Alexandre comprend parfaitement les enjeux et problématiques liés à notre activité et parvient, en réponse, à nous apporter des solutions techniques et fonctionnelles en respectant coûts et délais.

Office

MONOGRAM

Malt

La résolution de mes problèmes à été rapide et efficace, je recommande :)

La résolution de mes problèmes à été rapide et efficace, je recommande :).

Marine

MES-Distribution

Malt

Super

Super

Jl

Kaigan

Malt

Au Top

Au Top. tout simplement

Elite Cbd

Canna Elite Europe Ltd

Malt

Configuration d''un VPS et migration réalisée avec succès, bons conseils, dia

Configuration d'un VPS et migration réalisée avec succès, bons conseils, diagnostique rapide et efficace de nos problèmes. Je recommande.

Lorie

GRIIN outdoor

Malt

Toujours aussi clair et clairvoyant

Toujours aussi clair et clairvoyant... ;) Un plaisir de travailler avec Alexandre

Elite Cbd

Canna Elite Europe Ltd

Malt