ADR-0017 — Separacao entre config e data para OrganizationalUnit
Status
Aprovado
Contexto
Os ADRs de dominio e organizacao (ADR-0005 e ADR-0002) definem OrganizationalUnit como entidade de negocio, vinculada ao tenant ministerial e ao escopo hierarquico.
Na estrutura atual do Firestore, parte dos documentos de igreja (churchs) ainda aparece dentro de platform/ministrys/{domain}/config/churchs, junto de metadados de configuracao do tenant.
Esse arranjo mistura dois contextos:
- Configuracao de plataforma/tenant (
config) - Dados operacionais de dominio (
data)
Essa mistura aumenta ambiguidade de governanca, dificulta evolucao de regras de negocio e torna migracoes mais arriscadas.
Decisao
O caminho canonico para persistencia de OrganizationalUnit passa a ser:
platform/ministrys/{domain}/data/churchs/{unit_id}
Com isso:
configfica restrito a configuracoes do tenant/plataformadataconcentra entidades de dominio e seus relacionamentos
Regras derivadas
- Novas escritas de
churchsdevem ocorrer emdata/churchs. - Leitura pode manter fallback temporario para
config/churchsdurante transicao. - Estruturas filhas de dominio (ex.:
classes) devem residir sobdata/churchs/{unit_id}/.... - Toda entidade de dominio deve manter coerencia com
ministry_ideunit_id(ADR-0005). - Validacao de escopo e autorizacao permanece no backend (ADR-0003/ADR-0012).
Estrutura Alvo
platform
└── ministrys
└── {domain}
├── config
│ └── ... (somente configuracao)
└── data
├── churchs
│ └── {unit_id}
│ └── classes
└── users
Estrategia de Migracao
- Ajustar repositorios para leitura preferencial em
data/churchs. - Manter fallback temporario para
config/churchs. - Executar script idempotente de migracao
config/churchs -> data/churchs. - Monitorar cobertura de migracao por tenant.
- Remover fallback e referencias legadas apos validacao completa.
Integracao com ADRs existentes
- ADR-0002: preserva modelo hierarquico por
OrganizationalUnit. - ADR-0003: mantem RBAC + escopo como criterio de autorizacao.
- ADR-0005: reforca separacao entre entidade de dominio e metadado de plataforma.
- ADR-0012: mantem multitenancy por dominio, com isolamento por tenant.
Consequencias
- Clarifica fronteira entre configuracao e dados de dominio.
- Reduz acoplamento semantico em
config. - Exige migracao assistida e periodo de compatibilidade.
- Simplifica evolucao futura de
OrganizationalUnite subestruturas no tenant.