Skip to content

Sincronização via Webhooks (API Wake)

A sincronização em tempo real com a Wake ocorre via Webhooks recebidos e processados em filas pelo Laravel Horizon, garantindo que o banco de dados local (wake_products) e o motor de busca reflitam as mudanças instantaneamente.

Fluxo de Recebimento

  1. Endpoint de Entrada: O payload chega pelo WakeWebhookController@sync.
  2. Log de Auditoria: Antes de qualquer regra de negócio, o payload integral é salvo na tabela webhook_logs para histórico e debug.
  3. Validação Básica: Verifica-se a existência do id ou produto_variante_id.
  4. Enfileiramento: O processamento pesado é despachado para a fila padrão no Redis via job genérico ProcessWakeProductUpdate.

Processamento Secundário e Inteligência Artificial

O job ProcessWakeProductUpdate atua como o roteador principal dos dados:

  • Mapeamento Dinâmico: Traduz as chaves do JSON da Wake (ex: precoPor, isTelevendas) para as colunas físicas do banco local (price, is_televendas).
  • Consolidação do JSON: Atualiza apenas as chaves necessárias dentro da coluna JSON raw_data, preservando o histórico das demais propriedades.
  • Gatilho de IA (LLaVA/Ollama): Quando um produto é identificado como novo (criação), o sistema despacha automaticamente o job EnrichProductWithIA. Isso aciona o hardware local para classificar imagens e gerar tags de intenção de busca, inserindo-as na coluna tags_ia.

Processamento Específico (Eventos da Fbits)

Alguns eventos acionam o job ProcessWakeWebhook, que possui um sistema de Debounce via Cache (trava de 5 segundos) para evitar concorrência e consultas duplicadas na API para o mesmo produto_variante_id.

Dependendo da chave evento no payload, o job toma ações específicas consultando a API da Wake:

1. preco_alterado

Consulta o endpoint /preco da Wake. Atualiza as colunas price e preco_de diretamente, sem baixar o catálogo completo.

2. estoque_alterado

Consulta os endpoints /estoque e /disponibilidade. * Regra de Negócio (Disponibilidade): A coluna física availability do SaaS só é marcada como true se a API retornar disponibilidade confirmada E a flag is_televendas for falsa. * Cálculo Multi-CD: O sistema itera sobre todos os Centros de Distribuição (ex: CD 27, CD 28) retornados pela API e realiza a soma (array_sum) do estoqueFisico para consolidar o estoque real da ferramenta.

3. produto_inserido ou produto_alterado

Executa o método syncProdutoCompleto(), realizando um GET total no endpoint de /produtos da Wake solicitando as extensões de Estoque, Atributo, Informacao e Categoria para reconstruir a linha do item no banco.