Skip to content

Rotas e Agendamentos (Routes & Console)

A camada de roteamento define os pontos de entrada da aplicação, separando estritamente o tráfego de interface web, integrações assíncronas via API e tarefas agendadas em segundo plano (CRON).

1. Endpoints de API (api.php)

Ficheiro: routes/api.php

Responsável por gerir a comunicação com sistemas externos (n8n/Wake) e receber telemetria do front-end. Não utiliza a proteção CSRF padrão das rotas web. * POST /n8n/wake-sync: Endpoint que recebe os webhooks da Wake, roteados através do n8n. Está mapeado para o método sync do WakeWebhookController, servindo como a porta de entrada para as atualizações de catálogo em tempo real. * POST /logs-busca: Endpoint consumido pelo script navegador.js para gravar dados comportamentais (pesquisas com zero resultados ou falta de clique), mapeado para o BuscaLogController@store.

2. Rotas Web Administrativas (web.php)

Ficheiro: routes/web.php

Disponibiliza as interfaces visuais e as ferramentas de diagnóstico rápido para a gestão do motor de busca. * GET /analise-buscas: Renderiza o painel administrativo de telemetria, utilizando o LogBuscaController@index para consultar e agregar os termos que falharam na pesquisa. * GET /meili-check: Uma rota de diagnóstico de infraestrutura de alta velocidade. Em vez de carregar toda a arquitetura pesada do Laravel Scout, instancia diretamente o cliente do motor (\Meilisearch\Client) e devolve em JSON o método stats() do índice wake_products. Possui um bloco try-catch para retornar um erro 500 contendo a Exception caso o contentor do Meilisearch no Docker esteja em baixo, facilitando o debug.

3. Agendador de Tarefas (console.php)

Ficheiro: routes/console.php

Centraliza a orquestração de rotinas periódicas geridas pelo agendador (Scheduler) do Laravel. * Rotina de Importação (wake:import): O comando pesado de sincronização massiva da API (que lida com o WakeImportService) está configurado para executar de forma totalmente autónoma, todos os dias exatamente às 08:10 da manhã (->dailyAt('08:10')). * Trava de Segurança (Anti-Colapso): O método ->withoutOverlapping() atua como uma barreira de segurança vital. Se, porventura, ocorrer lentidão na API da Wake e o processo de importação do dia anterior ainda estiver a correr quando chegar a marca das 08:10, o Laravel bloqueia a nova execução, evitando assim a concorrência de processos que esgotaria a memória RAM do servidor.