Tarefas para atender a US 195746
[Back][DbCoreOrg] Criar tabela para armazenar histórico
Criar tabela no DbCoreOrg para armazenar eventos do fluxo de venda com upsell.
Schema sugerido: CartRecommendationsHistory
| Coluna | Tipo | Descrição |
|---|---|---|
Id | PK | Identificador único do registro |
RecommendationsId | UUID | TransactionId/CorrelationId/SessionId — correlaciona eventos da venda |
EventType | Enum / String | Tipo de evento que gerou o registro (ex: RecommendationRequested) |
CartId | int? (null) | Id do carrinho/zzlink. null no evento RecommendationRequested |
CustomerId | int | Id do cliente (do request RecommendationRequested ou CartModel) |
CodeStore | string | Código da loja (do request RecommendationRequested ou CartModel) |
Url | string | Endpoint chamado na integração (a definir: BFF ou BI) |
Request | json (null) | Payload usado na integração |
Response | json | Payload retornado |
StatusCode | int | HTTP Status Code retornado pela integração |
DurationMs | long | Tempo da chamada (a definir: tempo total ou só da integração) |
Message | string (null) | Observação opcional |
DateCreated | datetime | Data do evento (BaseEntity) |
Detalhamento das colunas
- RecommendationsId: UUID gerado pelo endpoint de recomendação no BFF, usado para correlacionar todos os eventos de uma mesma venda.
- CartId: Id do carrinho/zzlink. No evento
RecommendationRequestedpode sernull— o Id é criado ao salvar o cart noDbCoreOrg(eventoRecommendationCartCreated). - Response: No evento
RecommendationRequested, o JSON segue o schemaRecommendationRequestedResponsePayload. Nos demais eventos, avaliar necessidade de salvar o que está sendo retornado para o front. - DurationMs: A definir se é duração total do request ou apenas da integração externa.
RecommendationRequestedResponsePayload
{
"responseBI": {},
"responseToFront": {}
}
Eventos registrados
| Evento | Descrição |
|---|---|
RecommendationRequested | Requisição de recomendação recebida pelo BFF |
RecommendationCartCreated | Carrinho criado a partir de recomendação |
RecommendationProductAddedToOrder | Produto recomendado adicionado ao pedido |
RecommendationProductRemovedToOrder | Produto recomendado removido do pedido |
[Back][Submódulo BUS] Criar fila para centralizar a gravação do histórico
Nome sugerido: AWS_SQS_CART_RECOMMENDATION_HISTORY_FIFO
Atenção: trata-se de uma fila FIFO.
Schema da mensagem
CartRecommendationsEvent
{
"recommendationsId": "...",
"eventType": "RecommendationProductAdded",
"cartId": "...",
"customerId": "...",
"codeStore": "...",
"url": "...",
"request": {},
"response": {},
"statusCode": 200,
"durationMs": 0,
"message": "Chamada ao modelo de recomendação do BI",
"createdAt": "..."
}
[Back][API Cart] Serviço de Registro de Histórico
Mesmo conceito do AllLogs de Payments.
Serviço responsável pela persistência na tabela CartRecommendationsHistory. Pode ser acionado:
- Pelo BackgroundService que consome a fila
AWS_SQS_CART_RECOMMENDATION_HISTORY_FIFO - Diretamente por endpoints da API Cart quando necessário registrar eventos sem uso da fila
Responsabilidades
- Consumir mensagens da fila
AWS_SQS_CART_RECOMMENDATION_HISTORY_FIFO - Persistir os dados recebidos na tabela de histórico
- Centralizar toda a lógica de gravação (evitar duplicação de código)
[Back][API Cart] Alterar POST api/cart
- Passar a receber o
RecommendationsId(nullable) na criação do cart. - Se
RecommendationsIdnão fornull:- Após salvar o
CartModel, publicar o eventoRecommendationCartCreatedna fila. - Obter o
CartIdgerado para compor o evento.
- Após salvar o
[Back][API BFF] Consulta de Produtos Recomendados
Ao receber uma requisição de recomendação de produtos:
- Gerar um identificador único (
RecommendationsId/ TransactionId) para a solicitação. - Realizar a chamada ao modelo de recomendação do BI.
- Retornar o
RecommendationsIdjuntamente com a resposta para o Front. - Utilizar o
RecommendationsIdcomo identificador de correlação entre todos os eventos da venda. - Após o processamento (sucesso ou falha), publicar o evento
RecommendationRequestedna filaAWS_SQS_CART_RECOMMENDATION_HISTORY_FIFO.
[Front][App] Passar a receber o RecommendationsId
- Receber o
RecommendationsIdna resposta da consulta de recomendação. - Enviar o
RecommendationsIdna criação do cart (POST api/cart).
[Front][Portal] Passar a receber o RecommendationsId
- Receber o
RecommendationsIdna resposta da consulta de recomendação. - Enviar o
RecommendationsIdna criação do cart (POST api/cart).
Dependências e Observações
- Cobertura de endpoints: todos os endpoints envolvidos com upsell devem receber o
RecommendationsIdna requisição. - Frentes impactadas: App e Portal — ambos devem repassar o
RecommendationsIdrecebido do BFF ao criar o carrinho. - Sequência sugerida de implementação:
- Criar tabela
CartRecommendationsHistory(DbCoreOrg) - Criar fila SQS FIFO (Submódulo BUS)
- Criar serviço de histórico (API Cart)
- Alterar
POST api/cartpara receberRecommendationsId(API Cart) - Alterar endpoint de recomendação no BFF (gerar
RecommendationsId, publicar na fila) - Ajustar Front App e Portal para trafegar o
RecommendationsId
- Criar tabela