Visão Técnica das Funcionalidades
Esta seção foca em detalhar a lógica, comportamento e funcionamento estrutural do Sistema Lotação.
Lógica de Dados e Persistência
O sistema diferencia a origem dos dados para garantir a integridade das informações provenientes de fontes oficiais.
Registros de Carga vs. Manuais
A mutabilidade de um registro é definida pela sua origem:
- Registros de Carga: Provenientes de sistemas externos (SIARHES, Acesso Cidadão). Possuem estado de somente leitura.
- Regra: Se a Origem for igual a "Carga", as permissões do usuário são restritas apenas à Visualização.
- Registros Manuais: Criados diretamente na interface do sistema, permitindo o ciclo completo de CRUD (Criação, Consulta, Edição e Exclusão).
Exclusão Lógica (Soft Delete)
O sistema não realiza a remoção física de registros do banco de dados. Ao "excluir" uma lotação, ocupação ou grupo:
- O campo de situação é alterado para Inativo.
- O registro deixa de ser exibido em buscas comuns e seletores.
- A rastreabilidade histórica é preservada para auditoria e relatórios retroativos.
Gestão de Lotações
A lotação é a entidade central que vincula um CPF a uma Ocupação e uma Unidade.
Matriz de Unicidade
Para evitar redundância, o sistema valida a unicidade baseada no tipo de lotação. Não é permitido criar registros duplicados para as mesmas chaves abaixo:
| Tipo | Chave de Unicidade (Combinação Obrigatória) |
|---|---|
| Servidor | CPF + Ocupação + Unidade |
| Terceiro | CPF + Papel + Origem |
| Comissão | CPF + Comissão + Ocupação |
Reativação Automática
Em vez de gerar registros duplicados, o sistema implementa uma lógica de Upsert.
Lógica: Se um usuário tenta cadastrar uma lotação manual que já existiu no passado (e está com status Inativo), o sistema recupera esse registro e altera seu status para Ativo em vez de criar um novo ID no banco de dados.
Estrutura e Governança
Hierarquia Organizacional
O sistema opera em uma estrutura de árvore descendente, onde a relação de subordinação é clara:
Patriarca > Órgão > Unidade > Subunidade.
- Grupos Organizacionais: Diferenciam-se dos grupos comuns por possuírem Sigla única e permitirem uma hierarquia própria (Relação Pai-Filho).
- Comissões: São entidades transversais que não seguem a hierarquia de unidades, mas exigem ocupações específicas de comissão.
Não é possível excluir uma Comissão ou Grupo Organizacional enquanto houver membros ativos vinculados a eles. A hierarquia deve ser limpa das "folhas" (membros) para a "raiz" (entidade).
Algoritmo de Herança de Gestor
Um dos recursos mais críticos é a propagação automática de responsabilidade na hierarquia de unidades e grupos.
Lógica de Resolução
O gestor exibido para uma Unidade ou Grupo Organizacional é calculado dinamicamente. Caso um nó não possua um gestor direto, o sistema busca o responsável no nível imediatamente superior:
- Possui Gestor Direto? Exibe o servidor atribuído.
- Não possui? Busca o gestor da Unidade/Grupo Pai.
- Recursividade: O sistema repete a busca subindo os níveis até encontrar um gestor ou atingir o topo da hierarquia (Órgão).
Gatilhos de Recálculo
O recálculo da herança é disparado automaticamente em três cenários:
- Atribuição de um novo gestor a um nó superior.
- Remoção de um gestor de um nó superior.
- Inativação da lotação de um servidor que possuía cargo de gestão (o sistema remove o vínculo de gestor antes de inativar a pessoa).
Integração e Segurança
Autenticação e Contexto
O sistema utiliza o Acesso Cidadão como provedor de identidade. A segurança é baseada em dois pilares:
- Escopo de Órgão: Ao trocar de órgão no cabeçalho, o contexto de segurança é reiniciado. O usuário só visualiza entidades vinculadas ao ID do Órgão selecionado.
- RBAC (Role-Based Access Control): As funcionalidades são liberadas via perfis (roles) específicos (ex:
acessoExternoslibera o menu de terceiros, enquantoacessoComissoeslibera a gestão de membros de comissão.
Normalização de Dados
Para garantir a consistência nas buscas e integrações com sistemas externos (E-Docs, Organograma):
- Todos os nomes e siglas são convertidos para CAIXA ALTA automaticamente.
- CPFs são armazenados apenas como números, removendo pontos e traços na persistência.