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:
- 200 —
RemoveRecommendedItemResponseDTO:values— totais recalculadosproducts— lista atualizada deCartItems(sem o item removido, cada item comcartItemId)paymentMethods— formas de pagamento com parcelas recalculadas para o novo totalrecommendedItems— 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
- Busca payment pelo GUID
- Valida existencia → 400 se nao encontrado
- Valida tipo Store (nao ecommerce) → 400 se ecommerce
- Busca cart pelo
CartIddo payment - Localiza
CartItempelocartItemIdno cart- Valida existencia → 400 se nao encontrado
- Valida
IsFromRecommendation = true→ 400 se false (depende de US separada)
- Registra tentativa na alllogs
- 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
- Atualiza sincronamente
Payment.Totalcom o novo total do cart - Registra sucesso na alllogs
- 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:
- Task: 05 — Cart API: Remove Item de cart existente
- Auth:
[UseApiKey("internal")] - Responsabilidades: localizar item, remover, recalcular totais
Dependencia — Flag IsFromRecommendation
A validacao CartItem.IsFromRecommendation depende de campo a ser adicionado em CartItemsModel em US separada.
Arquivos desta pasta
| Arquivo | Descricao |
|---|---|
task-194882-remove-item-recomendado.md | Este arquivo — sumario, indice da task e fluxo do handler |
task-194882-remove-item-recomendado-requisitos.md | Documento de requisitos EARS (pt-BR): RFs, contrato do endpoint, dependencias |