Aller au contenu

Product Value Objects

Status

Normative Business Domain Specification

Purpose

This document defines the Value Objects of the Product Domain.

Value Objects describe immutable business concepts used by the Product aggregate.

Rules

Product Value Objects must be:

  • immutable;
  • comparable by value;
  • valid at creation time;
  • independent from infrastructure;
  • independent from WordPress;
  • independent from SQL;
  • independent from frontend rendering.

ProductId

ProductId identifies a Product aggregate inside the Platform.

It is a technical-domain identifier, not a merchant identifier.

ProductId must be stable once assigned.

CanonicalProductIdentity

CanonicalProductIdentity represents the official stable business identity of a Product.

It may contain:

  • Brand;
  • ModelName;
  • Series;
  • Generation;
  • ProductFamily;
  • ProductType.

It must not contain:

  • price;
  • stock;
  • merchant;
  • feed;
  • SEO title;
  • frontend label;
  • SQL primary key.

Brand

Brand represents the commercial or manufacturer brand of a Product.

Brand must be normalized enough to compare products consistently.

ModelName

ModelName represents the commercial model name of a Product.

ModelName must not include merchant marketing noise when avoidable.

Series

Series represents the product line or range.

Examples:

  • iPhone;
  • Galaxy S;
  • PlayStation;
  • EOS;
  • ThinkPad.

Generation

Generation represents a model generation, year, version or edition.

Generation is optional because not all products expose one.

ProductFamily

ProductFamily groups Products by stable business family.

ProductFamily is not a frontend category and must not depend on navigation.

ProductType

ProductType describes what the Product is.

ProductType must remain generic and stable.

Identifier

Identifier represents an identity signal.

Examples:

  • EAN;
  • GTIN;
  • MPN;
  • SKU;
  • merchant product id;
  • model reference.

Identifier is evidence, not truth.

IdentifierType

IdentifierType defines the kind of Identifier.

IdentifierType must be explicit.

Unknown identifier types must not be silently treated as trusted identifiers.

VariantAttributes

VariantAttributes describes attributes that differentiate variants of the same Product.

Examples:

  • color;
  • storage;
  • memory;
  • size;
  • network;
  • finish.

VariantAttributes must not include price, stock or merchant data.

ConfidenceScore

ConfidenceScore represents trust in an identity decision.

ConfidenceScore must not hide conflicts.

A low score must remain visible to policies and tests.

ConsistencyStatus

ConsistencyStatus represents the business consistency state of a Product.

Allowed conceptual statuses:

  • consistent;
  • incomplete;
  • conflicting;
  • unresolved.

Architecture Decision

Decision: CERTIFIED.

The Product Domain now defines its immutable business vocabulary before entities, events and contracts.

These Value Objects protect the Product aggregate from infrastructure, adapter and catalog leakage.