Product Domain Vision¶
Status¶
Normative Business Domain Specification
Purpose¶
The Product Domain defines the business truth of products inside CMonChoix Platform.
It represents products independently from merchants, feeds, offers, prices, stock, frontend pages, WordPress, runtime jobs and technical storage.
Responsibility¶
The Product Domain is responsible for:
- defining what a Product is;
- maintaining a stable Canonical Product Identity;
- grouping product observations;
- attaching identifiers as evidence;
- organizing product variants;
- detecting identity or consistency conflicts;
- protecting product invariants.
Core Principle¶
A Product is not an offer.
A Product represents the stable business object.
An Offer represents a merchant-specific commercial proposal for that product.
Bounded Context¶
The Product Domain owns:
- Product;
- Canonical Product Identity;
- Product Variant;
- Product Identifier;
- Product Observation;
- Product Evidence;
- Product Consistency;
- Product Conflict.
The Product Domain does not own:
- price;
- promotion;
- stock;
- merchant ranking;
- catalog pages;
- SEO rendering;
- frontend display;
- feed parsing;
- runtime orchestration;
- WordPress persistence.
Ubiquitous Language¶
| Term | Meaning |
|---|---|
| Product | Stable business representation of a real-world product |
| Canonical Product Identity | Official stable identity of a product |
| Identifier | Identification signal such as EAN, GTIN, MPN, SKU or model reference |
| Observation | Product description received or inferred from a source |
| Evidence | Information used to support identity resolution |
| Variant | Version of the same product such as color, storage, memory or network |
| Product Family | Stable business family such as smartphone, console or printer |
| Product Type | Generic product classification |
| Consistency | Coherence state between identifiers, attributes and observations |
| Conflict | Contradiction between product evidences |
Aggregate¶
The main aggregate is Product.
Product is the aggregate root.
It protects the following rules:
- one Product has one Canonical Product Identity;
- identifiers support identity but never replace it;
- observations are evidence, not final truth;
- variants belong to exactly one Product;
- conflicts must remain explicit and traceable;
- merchant-specific data never mutates Product identity directly.
Entities¶
The Product Domain may contain:
- Product;
- ProductVariant;
- ProductObservation;
- ProductIdentifierSet;
- ProductEvidence;
- ProductConflict.
Value Objects¶
The Product Domain may contain:
- ProductId;
- CanonicalProductIdentity;
- Brand;
- ModelName;
- Series;
- Generation;
- ProductFamily;
- ProductType;
- Identifier;
- IdentifierType;
- VariantAttributes;
- ConfidenceScore;
- ConsistencyStatus.
Domain Events¶
The Product Domain may emit:
- ProductDiscovered;
- ProductIdentityEstablished;
- ProductIdentifierAttached;
- ProductVariantDiscovered;
- ProductObservationAttached;
- ProductConflictDetected;
- ProductConflictResolved;
- ProductCanonicalIdentityChanged.
ProductCanonicalIdentityChanged must remain exceptional, explicit and auditable.
Contracts¶
Product Domain contracts may include:
- ProductRepository;
- ProductIdentityResolver;
- ProductFactory;
- ProductConsistencyPolicy;
- ProductVariantPolicy;
- ProductObservationNormalizer.
Non Responsibilities¶
The Product Domain must never contain:
- SQL queries;
- WordPress functions;
- feed-specific parsing;
- merchant pricing rules;
- frontend rendering;
- catalog pagination;
- SEO logic;
- runtime scheduling;
- cache invalidation;
- database migration code.
Architecture Decision¶
Decision: CERTIFIED.
The Product Domain becomes the first official Business Capability of CMonChoix Platform.
Implementation is forbidden until the Product Domain model is fully specified and validated.