Aller au contenu

Langage métier du domaine Product

Statut

Spécification normative du domaine métier.

Pourquoi ce document existe

Un projet devient vite confus lorsque deux personnes utilisent des mots différents pour parler de la même chose, ou le même mot pour parler de concepts différents.

Le langage ubiquitaire (Ubiquitous Language en DDD) est le vocabulaire officiel utilisé dans la documentation, le code, les contrats, les tests et les événements du domaine Product.

Pour une personne qui reprend CMonChoix, cette page sert donc de dictionnaire métier.

Vocabulaire principal

Terme technique Signification
Product Représentation métier stable d'un produit réel.
Canonical Product Identity Identité officielle et stable retenue pour un Product.
Product Identity Identité métier actuellement attribuée au Product.
Identifier Signal d'identification : EAN, GTIN, MPN, SKU, référence modèle, etc.
Identifier Type Type d'identifiant utilisé.
Observation Information reçue, extraite ou déduite depuis une source.
Evidence Information utilisée pour soutenir ou contredire une décision d'identité.
Variant Version du même produit ayant certains attributs distincts.
Variant Attribute Attribut qui différencie les variantes : couleur, stockage, mémoire, taille, réseau, etc.
Product Family Famille métier stable regroupant des produits similaires.
Product Type Type générique décrivant ce qu'est le produit.
Brand Marque ou fabricant.
Model Nom commercial du modèle.
Series Gamme ou ligne de produits.
Generation Génération d'un modèle ou d'une série.
Consistency État de cohérence entre identité, observations et identifiants.
Conflict Contradiction explicite entre plusieurs preuves.
Confidence Niveau de confiance associé à une décision.
Resolution Processus permettant d'établir ou confirmer une identité produit.

Product

Un Product est la représentation métier stable d'un produit réel.

Un Product n'est pas :

  • une offre ;
  • une annonce marchand ;
  • une ligne de feed ;
  • une carte de catalogue ;
  • un post WordPress ;
  • une projection ;
  • une page frontend.

Un même Product peut être représenté par plusieurs offres, plusieurs observations et plusieurs identifiants.

Exemple

Product : Samsung Galaxy S26

Offre A : 899 € chez un marchand
Offre B : 879 € chez un autre marchand

Les deux offres sont commerciales et peuvent évoluer chaque jour. Le Product représente le produit lui-même.

Canonical Product Identity

La Canonical Product Identity est l'identité officielle et stable d'un Product.

Elle représente le produit, pas la manière dont un marchand choisit de le nommer.

Elle peut inclure :

  • marque ;
  • série ;
  • modèle ;
  • génération ;
  • famille produit ;
  • type produit.

Elle ne doit pas inclure :

  • prix ;
  • stock ;
  • promotion ;
  • nom du marchand ;
  • nom du feed ;
  • titre frontend ou SEO ;
  • métadonnées Runtime.

Identifier

Un Identifier est un signal utilisé pour aider à reconnaître un produit.

Exemples : EAN, GTIN, MPN, SKU, identifiant marchand, référence fabricant ou référence modèle.

Un identifiant seul ne devient pas automatiquement l'identité canonique.

Pourquoi ? Parce qu'une source peut être incorrecte, un identifiant peut être réutilisé à tort ou plusieurs informations peuvent se contredire.

Observation

Une Observation est une information concernant un produit provenant directement ou indirectement d'une source.

Elle peut contenir :

  • titre ;
  • marque ;
  • identifiants ;
  • attributs ;
  • informations de source ;
  • caractéristiques techniques extraites ;
  • indices de confiance.

Une observation est une donnée à analyser. Ce n'est pas la vérité finale.

Evidence

Une Evidence est une preuve utilisée pour soutenir ou contredire une identité produit.

Elle peut provenir :

  • d'identifiants ;
  • d'observations ;
  • d'attributs normalisés ;
  • d'une source de confiance ;
  • de décisions précédemment validées.

Une preuve importante doit rester traçable : il faut pouvoir comprendre d'où elle vient.

Variant

Une Variant est une version du même Product.

Exemples :

  • même smartphone avec 128 ou 256 Go ;
  • même console avec une couleur différente ;
  • même ordinateur avec une quantité de RAM différente ;
  • même téléviseur dans plusieurs tailles lorsque le contrat de la verticale considère qu'il s'agit de variantes.

Une variante appartient à un seul Product.

Le fait qu'un attribut diffère ne signifie pas automatiquement qu'il faut créer un nouveau produit canonique. Cette décision dépend des règles métier de la verticale concernée.

Product Family

Product Family désigne une famille métier stable, par exemple smartphone, tablette, console, imprimante, appareil photo ou jouet.

Ce concept ne doit pas être confondu avec une catégorie de navigation du site.

La navigation peut évoluer pour des raisons éditoriales sans changer la nature métier d'un produit.

Product Type

Product Type décrit ce qu'est le produit en termes métier génériques.

Il doit rester indépendant de la taxonomie d'un marchand et de l'arbre de navigation frontend.

Consistency

Consistency indique si les différentes informations d'un Product sont cohérentes entre elles.

Un Product peut notamment être :

  • cohérent ;
  • incomplet ;
  • en conflit ;
  • non résolu.

Cet état sert à protéger la qualité des décisions.

Conflict

Un Conflict est une contradiction explicite entre plusieurs preuves.

Exemples :

  • un même EAN associé à deux marques incompatibles ;
  • un même nom de modèle associé à deux familles de produits incompatibles ;
  • une variante dont les attributs contredisent l'identité canonique ;
  • deux observations de confiance qui se contredisent.

Un conflit doit rester visible, traçable et traitable. Il ne doit pas disparaître derrière un score moyen.

Confidence

Confidence est le niveau de confiance associé à une décision d'identité.

La confiance n'annule jamais un conflit explicite.

Un niveau faible doit être traité explicitement au lieu d'être transformé silencieusement en certitude.

Resolution

La Resolution est le processus qui établit ou confirme une identité produit.

Elle doit être :

  • déterministe ;
  • traçable ;
  • explicable ;
  • reproductible.

Mots qui n'appartiennent pas au domaine Product

Certains concepts existent dans CMonChoix, mais ne doivent pas être utilisés comme concepts internes du domaine Product :

Concept Où il appartient plutôt
Prix d'une offre Domaine commercial / Offer
Remise / promotion Promotion ou Offer
Stock Disponibilité / Offer
Classement marchand Catalogue / marketplace
Carte frontend Frontend / projection
Post WordPress Adapter WordPress
Ligne de feed Pipeline / Feed
Ligne SQL Infrastructure / persistance

Cette séparation permet d'éviter que le domaine Product devienne dépendant de détails techniques ou commerciaux.

Règles de nommage

Dans le domaine Product :

  • utiliser Product pour l'objet métier stable ;
  • utiliser Observation pour une information issue d'une source ;
  • utiliser Identifier pour un signal d'identité ;
  • utiliser Evidence pour une information participant à une décision ;
  • utiliser Variant pour une version du même Product ;
  • utiliser Conflict uniquement pour une contradiction explicite ;
  • réserver Offer et Projection aux couches qui en sont responsables.

Exemple complet

Ligne marchand
   ↓
Observation
   ├── titre
   ├── marque
   ├── EAN
   └── stockage
        ↓
Evidence
        ↓
Resolution
        ├── resolved
        ├── unknown
        ├── ambiguous
        └── conflict
        ↓
Canonical Product Identity
        ↓
Variant éventuelle

Pour diagnostiquer un problème de vocabulaire ou de responsabilité

Si un fichier du domaine Product commence à parler de HTML, de prix, de SQL, de WordPress ou d'un nom de feed précis, vérifie immédiatement si la responsabilité n'a pas fui depuis une autre couche.

Le vocabulaire est un bon indicateur architectural : lorsqu'un concept étranger apparaît au mauvais endroit, il peut révéler un couplage indésirable.

Décision d'architecture

Décision : CERTIFIED.

Le langage du domaine Product reste explicitement séparé des langages Offer, Catalog, Projection, Pipeline et Adapter.