Aller au contenu

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.