Skip to main content

ADR-009 — Size armazenado em CartRecommendedItems, sem JOIN no GET

Data: 2026-05-26
Status: Aceito
Supersede: ADR-003
Contexto: Task #193232 — Refinamento RF-06: contrato de RecommendedItemsInfoDTO


O Size do item recomendado é selecionado pela vendedora no zzapp no momento da recomendação e armazenado como coluna Size em CartRecommendedItems. O RecommendedItemsInfoDTO expõe esse tamanho como campo único Size: string — e não como lista List<SizeStockDTO> Sizes. O cliente no zzlink visualiza e adiciona o item apenas com esse tamanho; não pode alterá-lo.

Consequências

  • CartRecommendedItems ganha coluna Size (string, obrigatória).
  • RecommendedItemsInfoDTO.Sizes (lista) → Size: string (único).
  • RecommendedItemsInfoDTO ganha campo RecommendedItemId (int) — usado no POST add-item.
  • SizeStockDTO removido.
  • Query GetRecommendedItemsAsync não faz JOIN em ProductStockStores — apenas Products e ProductPhotos.
  • Nenhum filtro de estoque no GET. Validação de estoque exclusiva no POST (AddRecommendedItem) via Cart API.
  • AddRecommendedItemCommand passa a receber RecommendedItemId em vez de ProductId + Size. O servidor resolve os dados do item a partir do registro em CartRecommendedItems.

Alternativa rejeitada

JOIN em ProductStockStores para listar todos os tamanhos disponíveis com estoque (era ADR-003):
Descartada porque o cliente não escolhe tamanho no zzlink — a vendedora já o selecionou no zzapp. Retornar múltiplos tamanhos criaria falsa expectativa de que o cliente pode trocar.