TDD — Classe de Domínio `EbdClass`
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 EbdClass 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.
Contrato da classe EbdClass
Section titled “Contrato da classe EbdClass”Arquivo alvo de código:
frontend/lib/domain/entities/ebd_class.dart
Campos previstos (com tipo):
id: StringunitId: Stringname: Stringdescription: String?ageGroup: EbdClassAgeGroup?displayOrder: intstatus: EbdClassStatusactive: booldefaultTeacher: ChurchPersonRef?defaultAssistant: ChurchPersonRef?room: String?additionalInfo: String?peopleRoles: List<EbdClassPersonRole>
Domínio de status (EbdClassStatus)
Section titled “Domínio de status (EbdClassStatus)”O campo status deve armazenar o código da situação da classe.
| Código | Descrição amigável |
|---|---|
ACTIVE | Ativa |
INACTIVE | Inativa |
PENDING | Pendente |
BLOCKED | Bloqueada |
ARCHIVED | Arquivada |
Domínio de posição na classe (EbdClassRolePosition)
Section titled “Domínio de posição na classe (EbdClassRolePosition)”Posições padrão permitidas:
| Código | Descrição amigável |
|---|---|
teacher | Professor(a) |
assistant | Assistente |
student | Aluno(a) |
visitor | Visitante |
support | Apoio |
other | Outro |
Objetos auxiliares da classe
Section titled “Objetos auxiliares da classe”EbdClassPersonRole
Section titled “EbdClassPersonRole”userId: Stringname: StringclassRole: EbdClassRolePositionapprovedRoleIds: List<String>isActive: boolnotes: String?
EbdClassAgeGroup
Section titled “EbdClassAgeGroup”Enum para faixa etária/tipo da classe.
Valores:
nurserykindergartengardenjuniorsteenagersyoungAdultslevitesbaptismevangelismintegrationworkerscouplesadultsmastersnone
Regra de negócio registrada
Section titled “Regra de negócio registrada”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).
Regras desta fase
Section titled “Regras desta fase”- Sem
toMap/fromMapnesta primeira versão. - Sem regras de negócio de autorização executadas no frontend.
- 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.
- Ajustes de tela de classes.
- 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/tdd/data-model/tdd-classe-church.md