TDD — Classe de Domínio `Church`
Status
Section titled “Status”Aprovado para implementação da classe (sem integração de uso)
Objetivo
Section titled “Objetivo”Registrar a definição técnica da classe Church e seus objetos auxiliares no domínio, seguindo ADR-0005, ADR-0007 e ADR-0025.
Escopo desta etapa
Section titled “Escopo desta etapa”- Criar apenas a classe de domínio e tipos auxiliares.
- Não integrar em repository, use case, DI, UI ou backend nesta etapa.
Decisão de modelagem
Section titled “Decisão de modelagem”Church representa a igreja/unidade no domínio e não terá ministryId neste modelo, pois a igreja já está contida no escopo do ministério.
Contrato da classe Church
Section titled “Contrato da classe Church”Arquivo alvo de código:
frontend/lib/domain/entities/church.dart
Campos previstos (com tipo):
id: Stringname: Stringdescription: String?status: String(código do domínioChurchStatus)address: ChurchAddress?contacts: ChurchContacts?hasPrivateParking: bool?geo: GeoPointLite?photoUrl: String?websiteUrl: String?social: ChurchSocialLinks?additionalInfo: String?rolePeople: ChurchRolePeople?
Domínio de status (ChurchStatus)
Section titled “Domínio de status (ChurchStatus)”O campo status deve armazenar o código da situação da igreja.
| Código | Descrição amigável |
|---|---|
ACTIVE | Ativa |
INACTIVE | Inativa |
PENDING | Pendente de ativação |
BLOCKED | Bloqueada |
ARCHIVED | Arquivada |
Objetos auxiliares da classe
Section titled “Objetos auxiliares da classe”ChurchAddress
Section titled “ChurchAddress”street: String?number: String?district: String?city: String?state: String?zipCode: String?complement: String?
ChurchContacts
Section titled “ChurchContacts”phonePrimary: String?phoneSecondary: String?whatsapp: String?
GeoPointLite
Section titled “GeoPointLite”latitude: double?longitude: double?
ChurchSocialLinks
Section titled “ChurchSocialLinks”instagram: String?facebook: String?youtube: String?other: String?
ChurchRolePeople
Section titled “ChurchRolePeople”pastor(ChurchPersonRef?)secretary(ChurchPersonRef?)assistantPastor(ChurchPersonRef?)ebdSuperintendent(ChurchPersonRef?)otherRoles(Map<String, ChurchPersonRef>)
ChurchPersonRef
Section titled “ChurchPersonRef”userId: Stringname: Stringphone: String?email: String?
Regras desta fase
Section titled “Regras desta fase”- Sem
toMap/fromMapnesta primeira versão. - Sem regras de negócio de autorização nesta camada.
- Classe deve permanecer pura de domínio (sem Flutter/Firebase).
Fora de escopo (neste TDD)
Section titled “Fora de escopo (neste TDD)”- Persistência Firestore.
- Mapeadores em infrastructure.
- Ajuste de fluxos de cadastro/login/perfil.
- Migração de dados.
Referências
Section titled “Referências”docs/architecture/adrs/adr-0005-modelo-de-dominio-conceitual.mddocs/architecture/adrs/adr-0007-padrao-de-organizacao-de-codigo.mddocs/architecture/adrs/adr-0025-padrao-de-classes-de-referencia-no-dominio.mddocs/architecture/data-model/padrao-referencias-firestore.md