Manual do Sistema de Pesquisa Geral

1. Fluxo de Pesquisa

O sistema de pesquisa global unifica buscas por todo o Portal da Transparência por meio de um fluxo dinâmico de carregamento no servidor:

  1. O usuário digita sua busca na **Barra de Pesquisa** do cabeçalho principal (`navbar.php`) e pressiona Enter ou clica na lupa.
  2. A requisição é disparada com o termo na URL para a página **`pesquisa.php?q=TERMO`**.
  3. O backend em PHP valida se o termo possui no mínimo 3 caracteres, executa consultas SQL no banco relacional em paralelo e formata as categorias correspondentes.
  4. A página renderiza os registros com Badges informativos, filtros rápidos e marcadores de texto em amarelo (destaque).

2. Tabelas Consultadas

A pesquisa atua de forma abrangente em 6 vertentes essenciais de dados do portal:

Categoria Tabela/View Consultada Campos de Filtro
Empenhos `vw_portal_cliente_despesa` `NOM_PESSOA` (fornecedor), `HST_DOCUMENTO` (histórico), `NRD_PROCESSO` (processo) onde `NOM_FASE = 'Empenho'`
Liquidações `vw_portal_cliente_despesa` `NOM_PESSOA`, `HST_DOCUMENTO`, `NRD_PROCESSO` onde `NOM_FASE = 'Liquidação'`
Pagamentos `vw_portal_cliente_despesa` `NOM_PESSOA`, `HST_DOCUMENTO`, `NRD_PROCESSO` onde `NOM_FASE = 'Pagamento'`
Folha de Pagamento `fl_visao_func_remunera` `nome_g` (servidor), `nome_cargo` (cargo), `nome_custo` (unidade/custo) ou matrícula
Relatórios `demonstrativos` `tipo` (tipo de demonstrativo), `exercicio` (ano) ou `abrangencia`
Balancetes `balancetes` `tipo` (tipo de balancete), `ano` ou `mes`

Nota de Performance: Cada consulta possui limite (`LIMIT 20`) para evitar sobrecarga no servidor e banco de dados durante consultas de termos muito abrangentes.

3. Segurança e Escapes

Para garantir que o portal permaneça seguro e livre de vulnerabilidades:

  • Prevenção de SQL Injection: As consultas utilizam Prepared Statements do PDO com bindings nomeados (`:q`). Nenhuma variável inserida pelo usuário é concatenada diretamente na query SQL.
  • Escape de HTML (XSS): A exibição de termos e dados é escapada com a função nativa `htmlspecialchars(..., ENT_QUOTES, 'UTF-8')`, neutralizando qualquer injeção maliciosa de scripts JS no navegador.
  • Sanitização: Termos de busca vazios ou com menos de 3 caracteres são ignorados no backend, prevenindo varreduras acidentais ou queries vazias pesadas.

4. Design & Animação

A barra de busca no cabeçalho conta com características visuais modernas:

  • Glassmorphism: Preenchimento semitransparente (`rgba(...)`) com efeito de desfoque de fundo (`backdrop-filter: blur(8px)`).
  • Animação Flexível: A barra de pesquisa aumenta de tamanho de **250px para 310px** dinamicamente sob foco, de forma fluida.
  • Botão Circular com Rotação: O botão submit redondo gira em 15 graus (`transform: rotate(15deg)`) ao passar o mouse, gerando engajamento visual.