Pular para conteúdo

Sincronização e tarefas automáticas

WooCommerce é a referência comercial; cache, mídias espelhadas e índice são destinos derivados. O healthcheck consulta disponibilidade/contagem: não sincroniza produtos nem garante atualização de cada item.

Gatilhos implementados

Gatilho Comportamento
Inicialização do WooCommerce Wrapper Agenda sincronização geral, salvo se skip_startup_sync estiver habilitado no código
Rotina periódica de sincronização Espera quatro horas e inicia nova sincronização geral; repete no processo
Rotina periódica de reconciliação Espera 24 horas e compara destinos com produtos publicados no WooCommerce
Webhook de produto Processa criação, atualização ou exclusão da loja correspondente
Solicitação interna de sync por loja Enfileira sincronização completa com retry; queued não significa conclusão
Atualização de campanhas Possui importação/recálculo próprios; não equivale à indexação vetorial

Fonte: modules/woocommerce_wrapper/app/main.py e app/shared/settings.py. Na versão revisada, SYNC_INTERVAL_SECONDS=14400, RECONCILIATION_INTERVAL_SECONDS=86400 e SKIP_STARTUP_SYNC=False são constantes Python, não controles do painel nem variáveis de ambiente lidas para esse fim. São intervalos do processo, não horários fixos nem CronJobs Kubernetes.

Completa, incremental e reconciliação

A rotina geral consulta as lojas, tenta registrar webhooks e escolhe completa ou incremental conforme a marca local da última execução. A marca usa /tmp/last_sync.txt: não é um checkpoint transacional compartilhado por loja. Restart pode perder a marca e iniciar sync completa. Conclusão geral não comprova sucesso de todas as lojas; há logs separados de falha por loja.

Completa e incremental fazem inclusão/atualização. Reconciliação complementa exclusões perdidas: compara IDs publicados e remove órfãos do cache, índice e mídias espelhadas. Não é somente leitura. Não use esse mecanismo com a loja/base errada para corrigir busca vazia.

O provisionamento cria/reativa pares tópico/URL esperados. Não garante remoção de callbacks antigos/terceiros. Produtos sintéticos de healthcheck são excluídos da indexação; não remover indiscriminadamente produtos comuns ocultos.

Acompanhar com segurança

  1. Confirme ambiente e merchant_id.
  2. Verifique acesso, credenciais e produtos publicados na loja.
  3. Procure sync_all_complete, sync_all_merchant_failed, periodic_sync_triggered e periodic_reconciliation_triggered nos logs; nem todos terão o mesmo request_id.
  4. Na reconciliação, procure falhas e reconciliation_orphans_removed.
  5. Compare IDs de amostra e busca real; contagem isolada não comprova igualdade de catálogo.

Evite repetir sync enquanto outra está ativa. Restart não é primeira tentativa: pode agendar mais trabalho. Não assumir execução única entre réplicas; os loops são iniciados pelo lifespan de cada processo. Mudanças de escala exigem revisar coordenação, carga e efeitos externos.

Outras tarefas e HML

conversation-outcome-worker consolida resultados de conversa. WhatsApp, healthcheck e campanhas também processam trabalho em segundo plano no serviço que recebe a operação. Não existe uma fila universal representada por esse worker.

Desligar só o worker não impede sincronização, chamadas de IA ou mensagens. Antes de reativar HML, revise dados, credenciais, callbacks e consumidores. Veja preparação de homologação.