Skip to main content

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

ColunaTipoDescrição
IdPKIdentificador único do registro
RecommendationsIdUUIDTransactionId/CorrelationId/SessionId — correlaciona eventos da venda
EventTypeEnum / StringTipo de evento que gerou o registro (ex: RecommendationRequested)
CartIdint? (null)Id do carrinho/zzlink. null no evento RecommendationRequested
CustomerIdintId do cliente (do request RecommendationRequested ou CartModel)
CodeStorestringCódigo da loja (do request RecommendationRequested ou CartModel)
UrlstringEndpoint chamado na integração (a definir: BFF ou BI)
Requestjson (null)Payload usado na integração
ResponsejsonPayload retornado
StatusCodeintHTTP Status Code retornado pela integração
DurationMslongTempo da chamada (a definir: tempo total ou só da integração)
Messagestring (null)Observação opcional
DateCreateddatetimeData 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 RecommendationRequested pode ser null — o Id é criado ao salvar o cart no DbCoreOrg (evento RecommendationCartCreated).
  • Response: No evento RecommendationRequested, o JSON segue o schema RecommendationRequestedResponsePayload. 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

EventoDescrição
RecommendationRequestedRequisição de recomendação recebida pelo BFF
RecommendationCartCreatedCarrinho criado a partir de recomendação
RecommendationProductAddedToOrderProduto recomendado adicionado ao pedido
RecommendationProductRemovedToOrderProduto 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 RecommendationsId não for null:
    • Após salvar o CartModel, publicar o evento RecommendationCartCreated na fila.
    • Obter o CartId gerado para compor o evento.

[Back][API BFF] Consulta de Produtos Recomendados

Ao receber uma requisição de recomendação de produtos:

  1. Gerar um identificador único (RecommendationsId / TransactionId) para a solicitação.
  2. Realizar a chamada ao modelo de recomendação do BI.
  3. Retornar o RecommendationsId juntamente com a resposta para o Front.
  4. Utilizar o RecommendationsId como identificador de correlação entre todos os eventos da venda.
  5. Após o processamento (sucesso ou falha), publicar o evento RecommendationRequested na fila AWS_SQS_CART_RECOMMENDATION_HISTORY_FIFO.

[Front][App] Passar a receber o RecommendationsId

  • Receber o RecommendationsId na resposta da consulta de recomendação.
  • Enviar o RecommendationsId na criação do cart (POST api/cart).

[Front][Portal] Passar a receber o RecommendationsId

  • Receber o RecommendationsId na resposta da consulta de recomendação.
  • Enviar o RecommendationsId na criação do cart (POST api/cart).

Dependências e Observações

  • Cobertura de endpoints: todos os endpoints envolvidos com upsell devem receber o RecommendationsId na requisição.
  • Frentes impactadas: App e Portal — ambos devem repassar o RecommendationsId recebido do BFF ao criar o carrinho.
  • Sequência sugerida de implementação:
    1. Criar tabela CartRecommendationsHistory (DbCoreOrg)
    2. Criar fila SQS FIFO (Submódulo BUS)
    3. Criar serviço de histórico (API Cart)
    4. Alterar POST api/cart para receber RecommendationsId (API Cart)
    5. Alterar endpoint de recomendação no BFF (gerar RecommendationsId, publicar na fila)
    6. Ajustar Front App e Portal para trafegar o RecommendationsId