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
- Endpoint de Entrada: O payload chega pelo
WakeWebhookController@sync. - Log de Auditoria: Antes de qualquer regra de negócio, o payload integral é salvo na tabela
webhook_logspara histórico e debug. - Validação Básica: Verifica-se a existência do
idouproduto_variante_id. - 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 colunatags_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.