Aller au contenu

Product Domain — Index

Status

Normative Business Domain Entry Point

Purpose

The Product Domain defines the business truth of products independently from:

  • merchants
  • offers
  • prices
  • stock
  • catalogs
  • projections
  • runtime systems
  • WordPress
  • infrastructure

It is the first canonical Business Domain of the Platform.


Domain Position

The Product Domain is responsible for:

  • Product identity
  • Canonical Product Identity
  • Product variants
  • Product observations
  • Product identifiers
  • Product evidence
  • Product conflicts
  • Product consistency

Strict Boundaries

The Product Domain MUST NOT contain:

  • offers
  • pricing logic
  • promotions
  • stock management
  • catalog navigation
  • frontend rendering
  • SEO logic
  • feed parsing
  • SQL schema concerns
  • WordPress logic
  • runtime orchestration

Core Domain Model

Invariants (Constitution)

  • INV-001 Product has exactly one Canonical Product Identity
  • INV-002 Identifier is evidence, not identity
  • INV-003 Observation must not mutate identity
  • INV-004 Variant belongs to exactly one Product

👉 Invariants are non-negotiable domain laws.


Aggregate

  • Product is the Aggregate Root
  • It protects identity, variants, observations and conflicts

Value Objects

  • ProductId
  • CanonicalProductIdentity
  • Brand
  • ModelName
  • Series
  • Generation
  • Identifier
  • IdentifierType
  • VariantAttributes
  • ProductFamily
  • ProductType
  • ConfidenceScore
  • ConsistencyStatus

Entities

  • Product
  • ProductVariant
  • ProductObservation
  • ProductIdentifierSet
  • ProductEvidence
  • ProductConflict

Events

  • ProductDiscovered
  • ProductIdentityEstablished
  • ProductIdentifierAttached
  • ProductObservationAttached
  • ProductVariantDiscovered
  • ProductConflictDetected
  • ProductConflictResolved
  • ProductConsistencyChanged
  • ProductCanonicalIdentityChanged

Policies

  • Identity is unique and stable
  • Identifiers are evidence only
  • Observations cannot mutate identity
  • Variants belong to one Product
  • Conflicts must always be explicit

Specifications

  • Identity completeness checks
  • Conflict detection checks
  • Variant validation checks
  • Consistency evaluation
  • Attachment validation rules

Contracts (Execution Layer)

  • ProductRepository
  • ProductIdentityResolver
  • ProductFactory
  • ProductConsistencyPolicy
  • ProductVariantPolicy
  • ProductObservationNormalizer
  • Repository Contract
  • Factory Contract
  • Persistence Boundary

Read Layer

  • Queries (intent): Identity Queries, Consistency Queries, Structure Queries
  • Projections (views): Product Summary Projection, Product Detail Projection, Product Conflict Projection
  • Domain Services (business operations): ProductIdentityResolutionService, ProductConsistencyService, ProductMergeService, ProductSplitService, ProductConflictResolutionService
  • Testing Strategy (validation rules): Unit Tests, Domain Tests, Service Tests

Reading Order (IMPORTANT)

  1. Vision
  2. Ubiquitous Language
  3. Invariants
  4. Aggregate
  5. Value Objects
  6. Entities
  7. Events
  8. Policies
  9. Specifications
  10. Contracts
  11. Repository Contract
  12. Factory
  13. Persistence Boundary
  14. Queries
  15. Projections
  16. Domain Services
  17. Testing Strategy

Architecture Guarantee

The Product Domain guarantees:

  • strict separation from infrastructure
  • no leakage of SQL / WordPress / feeds
  • invariant-first design
  • explicit conflict handling
  • traceable identity resolution

Architecture Decision

Decision: CERTIFIED.

This index is the official entry point of the Product Domain and the reference for all future domains:

  • Catalog Domain
  • Offer Domain
  • Projection Domain
  • Pricing Domain
  • Identity Domain