Skip to content

04 - Filas, Jobs e Cron (Processamento em Background)


1. Arquitetura de Filas (Laravel Horizon + Redis)

O motor utiliza a Fila fila_geracao_conteudo_ia, garantindo que o processamento seja desacoplado da interface web:

  • Job ProcessarConteudoProdutoIA:
    • Encapsulamento: O job encapsula todo o ciclo de vida: try-catch robusto, atualização de status em tempo real (processandoconcluido ou erro) e log detalhado.
    • Tempo de Execução: Timeout configurado em 120s, permitindo a comunicação estável com o Flowise e o tempo de resposta.
    • Retry Policy: Configurado com $tries = 3, permitindo recuperação automática em caso de network glitches ou timeouts momentâneos.

2. Produtor de Tarefas (DispararJobsConteudo)

Substituindo os scripts Python isolados, este comando de console (php artisan conteudo:disparar) atua como o Orquestrador de Entrada:

  1. Leitura do Snapshot: Busca na tabela FilaGeracaoConteudo apenas os itens com status pendente.
  2. Dispatch em Massa: Itera sobre os registros e despacha cada um para a fila Redis.
  3. Blindagem de Estado: Marca os itens como processando logo após o despacho, prevenindo que o mesmo produto seja processado múltiplas vezes por execuções paralelas do Cron.

3. Fluxo de Execução (Ciclo de Vida)

  1. Entrada: O usuário solicita a geração via dashboard.
  2. Despacho: O GeracaoConteudoController cria uma entrada na fila e o DispararJobsConteudo envia ao Redis.
  3. Worker: O container worker_ia (rodando o Laravel Horizon) captura a tarefa.
  4. IA/Serviço: O ConteudoIAService processa a mineração e a chamada estruturada.
  5. Finalização: O status no banco é atualizado e o log registra o sucesso ou o erro (para diagnóstico).