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
Productpour l'objet métier stable ; - utiliser
Observationpour une information issue d'une source ; - utiliser
Identifierpour un signal d'identité ; - utiliser
Evidencepour une information participant à une décision ; - utiliser
Variantpour une version du même Product ; - utiliser
Conflictuniquement pour une contradiction explicite ; - réserver
OfferetProjectionaux 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.