ADR-0002 — Modelo Organizacional Hierárquico
Status
Aprovado
Contexto
O sistema EBDbe não atenderá apenas uma única igreja isolada, mas poderá ser utilizado por diferentes ministérios.
Cada ministério possui uma estrutura hierárquica administrativa composta por igrejas que podem se subordinar a outras igrejas (relação pai-filha), sem limite fixo de profundidade.
Cada unidade possui gestão local dentro de sua competência, porém todas permanecem vinculadas ao respectivo ministério.
O sistema deve refletir essa estrutura organizacional de forma nativa, permitindo:
- Administração local descentralizada
- Visibilidade consolidada em nível ministerial
- Isolamento de dados por unidade
- Governança hierárquica
Portanto, o modelo anterior com níveis nominais fixos de unidade não é suficiente.
Decisão
O sistema adotará modelo organizacional hierárquico multinível, com as seguintes entidades estruturais (conforme ADR-0005):
Ministry └── OrganizationalUnit └── parent_unit_id: referência opcional para outra OrganizationalUnit
Além da hierarquia interna, cada Ministry é tratado como tenant lógico com domínio(s) próprio(s) de entrada, conforme ADR-0012.
Todas as entidades de domínio estarão vinculadas a uma unidade organizacional específica. A entidade genérica OrganizationalUnit representa um nó de igreja na árvore administrativa.
Os campos detalhados de OrganizationalUnit (code, phone, email, address, pastor_id, secretary_id, foundation_date etc.) constam no ADR-0005.
1. Identificação Organizacional
Toda entidade persistida deverá conter:
ministry_idunit_id(identificador da unidade local)
O unit_id referencia uma OrganizationalUnit em estrutura de árvore recursiva, com parent_unit_id opcional.
O modelo é estruturado de forma genérica para permitir expansão futura com profundidade ilimitada.
Para entrada HTTP/Web, o tenant ministerial também será identificado pelo domínio da requisição e validado contra o ministry_id efetivo da operação.
2. Hierarquia e Escopo de Gestão
O escopo de atuação será definido por relação hierárquica entre unidades:
- Ministério: visão global e consolidada do tenant.
- Unidade local: gestão de si e, quando autorizado por papel, de unidades descendentes.
A visibilidade de dados obedecerá à hierarquia.
Unidades inferiores não terão acesso a dados de unidades ancestrais ou ramos paralelos sem autorização explícita de papel e escopo.
3. Modelo de Isolamento de Dados
O isolamento será implementado por:
- Validação obrigatória de escopo no backend
- Regras de segurança no Firestore
- Controle de acesso baseado em papel e escopo organizacional
- Resolução e validação de tenant por domínio
Nenhuma consulta poderá ser realizada sem validação de:
- Papel do usuário
- Unidade organizacional vinculada
- Relação hierárquica entre unidade de origem e unidade-alvo
- Coerência entre domínio de entrada e
ministry_idautorizado
4. Estrutura Conceitual
Modelo simplificado (nomenclatura conforme ADR-0005):
Ministry ├── OrganizationalUnits │ └── (árvore recursiva de igrejas via parent_unit_id) │ ├── Users ├── ClassGroups ├── Lessons ├── Attendances └── Materials
As entidades de negócio sempre estarão associadas a uma unidade organizacional.
5. Escalabilidade
Este modelo permite:
- Expansão para múltiplos ministérios
- Crescimento orgânico da estrutura
- Profundidade organizacional ilimitada
- Governança descentralizada
- Consolidação ministerial
6. Princípio Estrutural
O sistema nasce preparado para estrutura organizacional complexa.
Mesmo que inicialmente seja utilizado por apenas uma igreja, o modelo hierárquico por árvore autorrelacionada é estrutural e não opcional.
Consequências
- Toda operação deverá validar escopo organizacional.
- O controle de acesso dependerá não apenas de papel, mas também de unidade.
- O modelo de dados será orientado a hierarquia.
- Futuras alterações estruturais exigirão novo ADR.
- O cadastro e governança de domínios ministeriais tornam-se parte da operação da plataforma.