Views e Interfaces (Blade)
A camada de interface da aplicação utiliza o motor de templates Blade do Laravel em conjunto com o Tailwind CSS para criar painéis administrativos rápidos e responsivos, sem necessidade de compilação de assets complexos.
Painel de Telemetria (Logs de Busca)
Ficheiro: logs-busca.blade.php
Este painel administrativo exibe as métricas de pesquisas que não resultaram em conversão, auxiliando na identificação de gargalos no motor de busca. A interface é composta pelos seguintes elementos técnicos:
1. Filtros Dinâmicos
- O ecrã possui um formulário de seleção (dropdown) para filtrar os dados pelo
motivoda falha (ex:zero_resultadosoufalta_de_clique). - A filtragem é acionada automaticamente através do evento JavaScript
onchange="this.form.submit()", dispensando a necessidade de um botão de submissão. - O estado do filtro é mantido na interface utilizando a diretiva
request('motivo')para selecionar a opção correta após o recarregamento da página.
2. Ordenação Interativa (Table Headers)
As colunas da tabela (Última Busca, Termo Buscado, Qtd. de Buscas, Motivo, Encontrados) funcionam como links de ordenação.
* O método request()->fullUrlWithQuery() é utilizado para preservar os filtros ativos ao mesmo tempo que injeta ou altera os parâmetros sort_by e sort_dir na URL.
* A interface apresenta indicadores visuais (setas ↑, ↓, ↕) renderizados dinamicamente via operadores ternários no Blade, indicando a direção atual da ordenação (ascendente ou descendente).
3. Formatação e Apresentação de Dados
Durante a iteração dos registos (@foreach ($logs as $log)), os dados sofrem transformações visuais:
* Datas: A data da última pesquisa é formatada no padrão europeu/brasileiro (d/m/Y H:i) utilizando o componente \Carbon\Carbon::parse().
* Feedback Visual (Tags): A coluna motivo utiliza condicionais @if para renderizar etiquetas coloridas com as classes utilitárias do Tailwind. O status Zero Resultados é destacado a vermelho (bg-red-100), enquanto Sem Cliques é destacado a amarelo (bg-yellow-100) para alertar o utilizador.
4. Paginação Preservada
A listagem encerra com a renderização dos links de paginação. O método appends(request()->query()) é fundamental aqui, pois garante que, ao navegar entre a página 1 e 2, os filtros de motivo e a ordenação atual das colunas não se percam.