Skip to main content

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:

  1. Configuracao de plataforma/tenant (config)
  2. 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:

  • config fica restrito a configuracoes do tenant/plataforma
  • data concentra entidades de dominio e seus relacionamentos

Regras derivadas

  1. Novas escritas de churchs devem ocorrer em data/churchs.
  2. Leitura pode manter fallback temporario para config/churchs durante transicao.
  3. Estruturas filhas de dominio (ex.: classes) devem residir sob data/churchs/{unit_id}/....
  4. Toda entidade de dominio deve manter coerencia com ministry_id e unit_id (ADR-0005).
  5. 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

  1. Ajustar repositorios para leitura preferencial em data/churchs.
  2. Manter fallback temporario para config/churchs.
  3. Executar script idempotente de migracao config/churchs -> data/churchs.
  4. Monitorar cobertura de migracao por tenant.
  5. 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 OrganizationalUnit e subestruturas no tenant.