Skip to main content

Task #194882 — Criar endpoint para Remover um item recomendado no pedido

Task pai: #194882 — [Back] 04 - Remover item recomendado Contexto: US 194871 — MVP Upsell (Pedido)

Status do refinamento: concluido Requisitos EARS: task-194882-remove-item-recomendado-requisitos.md Pesquisa tecnica: pesquisa-remove-recommended-item.md ADRs: ADR-005 · ADR-007 · ADR-008 · ADR-009


Resumo

Criar endpoint DELETE api/payment/v2/{id}/remove-recommended-item para permitir que a cliente, via zzlink, remova um item recomendado previamente adicionado ao pedido.

O handler orquestra: validacao do payment (store only), validacao do item (existe no cart, IsFromRecommendation = true), chamada a Cart API para remover o item, atualizacao sincrona do Payment.Total, e auditoria via alllogs.


Criar endpoint para Remover um item recomendado no pedido

Endpoint

DELETE api/payment/v2/{id}/remove-recommended-item
Authorization: Bearer {token PaymentsScheme}

O endpoint deve receber (path + body):

  • {id} — GUID do link de pagamento (path)
  • cartItemId — ID do CartItem a remover (body)

Saida:

  • 200RemoveRecommendedItemResponseDTO:
    • values — totais recalculados
    • products — lista atualizada de CartItems (sem o item removido, cada item com cartItemId)
    • paymentMethods — formas de pagamento com parcelas recalculadas para o novo total
    • recommendedItems — lista atualizada de recomendacoes
  • 400:
    • Payment nao encontrado
    • Operacao nao disponivel para este tipo de pedido (ecommerce)
    • Item nao encontrado no pedido
    • Item nao pode ser removido (nao originado de recomendacao)
    • Nao foi possivel remover o item (outros erros da Cart API)

Fluxo do handler RemoveRecommendedItem

  1. Busca payment pelo GUID
    • Valida existencia → 400 se nao encontrado
    • Valida tipo Store (nao ecommerce) → 400 se ecommerce
  2. Busca cart pelo CartId do payment
  3. Localiza CartItem pelo cartItemId no cart
    • Valida existencia → 400 se nao encontrado
    • Valida IsFromRecommendation = true → 400 se false (depende de US separada)
  4. Registra tentativa na alllogs
  5. Chama Cart API — DELETE api/cart/{cartId}/items/{cartItemId} com [UseApiKey("internal")]
    • Em caso de 404 → registra falha na alllogs → retorna 400
    • Em caso de outro erro → registra falha na alllogs → retorna 400
  6. Atualiza sincronamente Payment.Total com o novo total do cart
  7. Registra sucesso na alllogs
  8. Retorna RemoveRecommendedItemResponseDTO

Dependencia — Cart API

O endpoint DELETE api/cart/{cartId}/items/{cartItemId} nao existe na Cart API atualmente. Deve ser criado como task separada:

Dependencia — Flag IsFromRecommendation

A validacao CartItem.IsFromRecommendation depende de campo a ser adicionado em CartItemsModel em US separada.


Arquivos desta pasta

ArquivoDescricao
task-194882-remove-item-recomendado.mdEste arquivo — sumario, indice da task e fluxo do handler
task-194882-remove-item-recomendado-requisitos.mdDocumento de requisitos EARS (pt-BR): RFs, contrato do endpoint, dependencias