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-catchrobusto, atualização de status em tempo real (processando→concluidoouerro) e log detalhado. - Tempo de Execução: Timeout configurado em 120s, permitindo a comunicação estável com o
Flowisee o tempo de resposta. - Retry Policy: Configurado com
$tries = 3, permitindo recuperação automática em caso de network glitches ou timeouts momentâneos.
- Encapsulamento: O job encapsula todo o ciclo de vida:
2. Produtor de Tarefas (DispararJobsConteudo)
Substituindo os scripts Python isolados, este comando de console (php artisan conteudo:disparar) atua como o Orquestrador de Entrada:
- Leitura do Snapshot: Busca na tabela
FilaGeracaoConteudoapenas os itens com statuspendente. - Dispatch em Massa: Itera sobre os registros e despacha cada um para a fila Redis.
- Blindagem de Estado: Marca os itens como
processandologo 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)
- Entrada: O usuário solicita a geração via dashboard.
- Despacho: O
GeracaoConteudoControllercria uma entrada na fila e oDispararJobsConteudoenvia ao Redis. - Worker: O container
worker_ia(rodando o Laravel Horizon) captura a tarefa. - IA/Serviço: O
ConteudoIAServiceprocessa a mineração e a chamada estruturada. - Finalização: O status no banco é atualizado e o log registra o sucesso ou o erro (para diagnóstico).