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
CartRecommendedItemsganha colunaSize(string, obrigatória).RecommendedItemsInfoDTO.Sizes(lista) →Size: string(único).RecommendedItemsInfoDTOganha campoRecommendedItemId(int) — usado no POST add-item.SizeStockDTOremovido.- Query
GetRecommendedItemsAsyncnão faz JOIN emProductStockStores— apenasProductseProductPhotos. - Nenhum filtro de estoque no GET. Validação de estoque exclusiva no POST (AddRecommendedItem) via Cart API.
AddRecommendedItemCommandpassa a receberRecommendedItemIdem vez deProductId+Size. O servidor resolve os dados do item a partir do registro emCartRecommendedItems.
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.