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:
- O usuário digita sua busca na **Barra de Pesquisa** do cabeçalho principal (`navbar.php`) e pressiona Enter ou clica na lupa.
- A requisição é disparada com o termo na URL para a página **`pesquisa.php?q=TERMO`**.
- 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.
- 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.