Skip to content

TDD — Classe de Domínio `EbdClass`

Aprovado para implementação da classe (sem integração de uso)

Registrar a definição técnica da classe EbdClass e seus objetos auxiliares no domínio, seguindo ADR-0005, ADR-0007 e ADR-0025.

  • Criar apenas a classe de domínio e tipos auxiliares.
  • Não integrar em repository, use case, DI, UI ou backend nesta etapa.

Arquivo alvo de código:

  • frontend/lib/domain/entities/ebd_class.dart

Campos previstos (com tipo):

  1. id: String
  2. unitId: String
  3. name: String
  4. description: String?
  5. ageGroup: EbdClassAgeGroup?
  6. displayOrder: int
  7. status: EbdClassStatus
  8. active: bool
  9. defaultTeacher: ChurchPersonRef?
  10. defaultAssistant: ChurchPersonRef?
  11. room: String?
  12. additionalInfo: String?
  13. peopleRoles: List<EbdClassPersonRole>

O campo status deve armazenar o código da situação da classe.

CódigoDescrição amigável
ACTIVEAtiva
INACTIVEInativa
PENDINGPendente
BLOCKEDBloqueada
ARCHIVEDArquivada

Domínio de posição na classe (EbdClassRolePosition)

Section titled “Domínio de posição na classe (EbdClassRolePosition)”

Posições padrão permitidas:

CódigoDescrição amigável
teacherProfessor(a)
assistantAssistente
studentAluno(a)
visitorVisitante
supportApoio
otherOutro
  • userId: String
  • name: String
  • classRole: EbdClassRolePosition
  • approvedRoleIds: List<String>
  • isActive: bool
  • notes: String?

Enum para faixa etária/tipo da classe.

Valores:

  • nursery
  • kindergarten
  • garden
  • juniors
  • teenagers
  • youngAdults
  • levites
  • baptism
  • evangelism
  • integration
  • workers
  • couples
  • adults
  • masters
  • none

Somente pessoas com perfil (role) aprovado podem compor peopleRoles.

Observação arquitetural:

  • Nesta etapa, apenas o contrato de dados será criado em domínio.
  • A validação autoritativa permanece no backend (ADR-0001 e ADR-0003).
  • Sem toMap/fromMap nesta primeira versão.
  • Sem regras de negócio de autorização executadas no frontend.
  • Classe deve permanecer pura de domínio (sem Flutter/Firebase).
  • Persistência Firestore.
  • Mapeadores em infrastructure.
  • Ajustes de tela de classes.
  • Migração de dados.
  • docs/architecture/adrs/adr-0005-modelo-de-dominio-conceitual.md
  • docs/architecture/adrs/adr-0007-padrao-de-organizacao-de-codigo.md
  • docs/architecture/adrs/adr-0025-padrao-de-classes-de-referencia-no-dominio.md
  • docs/architecture/tdd/data-model/tdd-classe-church.md