Plano de Refatoração — Histórico de Recomendações (Cart API)
US: 195746 — Registro de eventos/indicadores do Upsell
Data: 2026-07-01
Status: Proposta para análise — sem implementação
Premissa aceita: adicionar RecommendationsId (Guid?) em CartModel e popular no create.
1. Objetivo
Gravar histórico de três eventos correlacionados por RecommendationsId:
| Evento | Enum | Trigger |
|---|---|---|
| Carrinho criado com upsell | RecommendationCartCreated | POST api/cart |
| Produto recomendado adicionado | RecommendationProductAddedToOrder | Add item recomendação |
| Produto recomendado removido | RecommendationProductRemovedToOrder | Remove item recomendação |
Pipeline assíncrono (mantido):
API publica → SQS FIFO → Listener → CartRecommendationHistoryService → DB
2. Decisões arquiteturais
2.1 Domain events — descartados
Ver context/domain-events-analysis.md.
Resumo: CartModel herda BaseEntity, mas CoreOrgDbContext não despacha domain events. Adotar exigiria alterar pacote compartilhado coezzion-db-core e acoplar entidade a contexto HTTP. Over desnecessário.
2.2 Event Handler / Publisher explícito — adotado
Ver context/event-handlers-pattern.md e context/log-queue-reference.md.
Resumo: criar ICartRecommendationHistoryPublisher seguindo padrão ILogQueueService (Checkout AllLogs) — interface em Domain, implementação em Infrastructure, chamada explícita nos pontos de negócio.