Skip to content

tdd-objetos-de-referencia

ObjetoClasse *RefClasse operacionalColeção de referênciaColeção realObservação
UserNão (por padrão)SimN/AusersUsuário é majoritariamente operacional
MinistrySim (MinistryRef)Sim (Ministry)ministry_ref (quando houver)platform/ministrys/{id}/configRef útil para catálogo multi-tenant
ChurchSim (ChurchRef)Sim (Church)church_refchurchsJá existe uso de church_ref na plataforma
PlatformConfigNãoSim (PlatformConfig)N/Aplatform/configConfig é fonte direta da plataforma
ClassGroupSim (ClassGroupRef)Sim (ClassGroup)class_refchurchs/{unit}/classesRecomendado para replicação por igreja
MaterialSim (MaterialRef)Sim (Material)material_ref (planejado)materials (planejado)Base para catálogo didático
EbdSim (EbdRef)Opcional (agregado)ebd_refebdsRef para modelo/base de ocorrência
EbdSessionNão (por padrão)Sim (EbdSession)N/Aebds/{sessionId}Sessão é ocorrência operacional

Estrutura mínima recomendada por classe *Ref

Section titled “Estrutura mínima recomendada por classe *Ref”
  • id
  • ministryId (quando aplicável)
  • sourcePath
  • sourceId
  • refKind
  • updatedAt
  • unitId
  • name
  • status (opcional)
  • unitId
  • classId
  • name
  • ageGroup (opcional)
  • displayOrder (opcional)
  • active (opcional)
  • unitId
  • date (modelo de data/referência)
  • type (opcional)
  • status (opcional)
  • weatherType (opcional)
  • temperature (opcional)
  • code/materialId
  • publisher
  • edition
  • name
  • referencePeriod

  1. Classificar o objeto: referência ou operacional.
  2. Confirmar coleção Firestore (*_ref vs real).
  3. Criar classe no domínio:
    • *Ref para referência
    • classe operacional para uso real
  4. Criar mapeadores em infrastructure.
  5. Validar checklist:
    • naming
    • camada correta
    • ausência de regra de negócio em presentation

  • Classe referência: PascalCase + Ref
  • Arquivo referência: snake_case_ref.dart ou *_ref.dart conforme padrão local
  • Coleção referência: snake_case_ref
  • Coleção real: sem _ref

  1. Introduzir ChurchRef no frontend domain.
  2. Introduzir ClassGroupRef no frontend domain.
  3. Introduzir EbdRef no frontend domain (apenas se houver consumo direto).
  4. Definir roadmap de MaterialRef e materials.

  • ADR-0025 — Padrão de classes de referência no domínio
  • ADR-0005 — Modelo de domínio conceitual
  • ADR-0007 — Organização de código
  • docs/architecture/data-model/padrao-referencias-firestore.md