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.