Aller au contenu

Frontend Projection Compatibility

Status: CURRENT Last consolidated by: BC-068D This document describes the current frontend projection compatibility boundary.

BC-064C

BC-064C keeps the historical frontend payloads unchanged while moving concrete composition out of src/ReadService.

  • ProductModelsFrontendReadService now depends on injected contracts:
  • CatalogItemProjectionMapper
  • FacetProjectionMapper
  • ProductViewProjectionMapper
  • the WordPress frontend wrapper builds the service with the legacy adapters;
  • PublicNavigationReadService now returns NavigationProjection;
  • FrontendProjectionArrayShim stays in the WordPress wrapper, where the historical menu array is produced.

This keeps:

  • route behavior unchanged;
  • legacy payload keys unchanged;
  • frontend rendering unchanged;
  • SQL and WordPress concerns outside src/ReadService.

BC-064D3A / BC-064D3B

The frontend compatibility boundary stays unchanged while DTO ownership moves:

  • Catalog DTO ownership moved to Contracts\Projection\Catalog
  • Product DTO ownership moved to Contracts\Projection\Product
  • Offer DTO ownership moved to Contracts\Projection\Offer

The frontend still receives the same projection shapes and the same historical array payloads through explicit adapter shims.

BC-064D3C applies the same compatibility rule to public navigation:

  • canonical Navigation DTO ownership moved to Contracts\Projection\Navigation
  • the public frontend still consumes the same legacy tree arrays through FrontendProjectionArrayShim
  • no menu ordering, labels, URLs or fallback shape changed

BC-064D3D keeps the Product Models composition identical while finishing mapper-contract decoupling:

  • facet mappers still produce the same facet payloads
  • product view mappers still produce the same product payloads
  • no extra shim or array conversion is introduced into src/ReadService

BC-064D4 adds the final certification point:

  • the frontend still consumes the same projection wrappers and the same legacy arrays;
  • wrapper FQCNs remain source-compatible, but canonical ownership is now Contracts\Projection;
  • no frontend adapter now depends on src/ReadService -> Adapter shortcuts or on direct Contracts -> Projection imports.