Como o Sistema Processa Filtros (Regra de Composição SQL)
Para garantir a segurança, o isolamento de dados por perfil e a flexibilidade do usuário final, o sistema possui um motor inteligente que constrói a cláusula de filtragem da consulta em três camadas independentes.
Antes de enviar qualquer instrução SQL para o banco de dados, a aplicação intercepta a requisição e realiza uma concatenação estrita seguindo a ordem abaixo:
1ª Camada: Filtro Geral do Datasource (Estrutural)
Definido pelo arquiteto/criador da Fonte de Dados no momento do cadastro. É um bloco de código SQL bruto (hardcoded) que funciona como uma regra de corte fixa para aquela fonte. Se existir, ele é a base obrigatória de onde a consulta começa.
- Exemplo: Status = 'Ativo' AND Deletado = 0
2ª Camada: Filtros por Perfil / Roles (Segurança e Governança)
O sistema varre os perfis de acesso associados ao usuário logado e localiza os filtros vigentes para aquela Fonte de Dados. Esses filtros também são definidos de forma direta (hardcoded) e podem possuir data de validade. O motor valida o que está em vigor, concatena todas as regras das Roles ativas e junta à primeira camada usando o operador AND.
- Exemplo: UnidadeOrganizacionalId IN (1, 5, 12)
3ª Camada: Filtros do Relatório (Interação do Usuário Final)
São as condições que o usuário final monta dinamicamente na tela utilizando o Editor de Filtros visual antes de rodar o relatório. O sistema traduz as escolhas visuais dele em SQL e as anexa ao final das camadas anteriores através de um operador AND.
- Exemplo: DataEmissao >= '2026-01-01' AND Categoria = 'TI'

Regra de Execução: O usuário final nunca conseguirá burlar ou enxergar os filtros aplicados nas camadas 1 e 2. O banco de dados só processará a consulta se o registro passar pelas três barreiras simultaneamente.
O usuário final será sempre avisado se determinadas regras e/ou filtros estão sendo aplicadas em conjunto com as por ele já definidas.