TDD — Classe de Domínio `EbdSessionNew`
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 EbdSessionNew no domínio, preservando a EbdSession atual e permitindo evolução segura da modelagem.
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 EbdSessionNew
Section titled “Contrato da classe EbdSessionNew”Arquivo alvo de código:
frontend/lib/domain/entities/ebd_session_new.dart
Campos previstos (com tipo):
id: StringunitId: Stringdate: DateTimestatus: EbdSessionNewStatustype: EbdSessionNewTypereplaceCause: EbdSessionNewReplaceCause?replaceCauseObservation: String?weatherType: EbdSessionNewWeatherType?temperature: EbdSessionNewWeatherTemperature?totalStudents: inttotalVisitors: inttotalLeaders: inttotalWorkers: inttotalPastors: intobservation: String?principals: List<String>classes: List<EbdClass>
Domínios de enum (código + descrição amigável)
Section titled “Domínios de enum (código + descrição amigável)”EbdSessionNewStatus
Section titled “EbdSessionNewStatus”| Código | Descrição amigável |
|---|---|
CREATED | Criada |
IN_PROGRESS | Em andamento |
CONCLUDED | Concluída |
CLOSED | Encerrada |
EbdSessionNewType
Section titled “EbdSessionNewType”| Código | Descrição amigável |
|---|---|
FULL_CLASS | Classe completa |
REGULAR_CLASS | Classe regular |
UNIQUE_CLASS | Classe única |
ONLINE_CLASS | Classe online |
CANCELED | Cancelada |
REPLACED_BY_EVENT | Substituída por evento |
REPLACED_BY_CULT | Substituída por culto |
EbdSessionNewReplaceCause
Section titled “EbdSessionNewReplaceCause”| Código | Descrição amigável |
|---|---|
LOCAL_EVENT | Evento local |
MINISTERIAL_EVENT | Evento ministerial |
BAPTISM | Batismo |
WEATHER_CONDITION | Condição climática |
INFRA_FAULT | Falha de infraestrutura |
ELECTRIC_FAULT | Falha elétrica |
SUPERIOR_DECISION | Decisão superior |
OTHER | Outro |
EbdSessionNewWeatherType
Section titled “EbdSessionNewWeatherType”| Código | Descrição amigável |
|---|---|
SUNNY | Ensolarado |
PARTLY_CLOUDY | Parcialmente nublado |
CLOUDY | Nublado |
LIGHT_RAIN | Chuva leve |
HEAVY_RAIN | Chuva forte |
THUNDERSTORM | Tempestade |
FOG | Neblina |
EbdSessionNewWeatherTemperature
Section titled “EbdSessionNewWeatherTemperature”| Código | Descrição amigável |
|---|---|
VERY_COLD | Muito frio |
COLD | Frio |
MILD | Ameno |
WARM | Quente |
VERY_WARM | Muito quente |
Regra de composição
Section titled “Regra de composição”EbdSessionNew deve compor as classes que ocorreram na sessão pelo campo:
classes: List<EbdClass>
Regras desta fase
Section titled “Regras desta fase”- Sem
toMap/fromMapnesta primeira versão. - Sem alteração da classe
EbdSessionexistente. - Classe deve permanecer pura de domínio (sem Flutter/Firebase).
Fora de escopo (neste TDD)
Section titled “Fora de escopo (neste TDD)”- Migração de chamadas de
EbdSessionparaEbdSessionNew. - Persistência Firestore da nova classe.
- Mapeadores em infrastructure.
- Ajustes de telas e fluxos de relatório.
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/tdd/data-model/tdd-classe-ebd-class.md