data-model-ebd
Coleção
Section titled “Coleção”Caminho: platform/ministrys/{ministryId}/data/ebds/{sessionId} (coleção por tenant).
Um documento por ocorrência de EBD em uma unidade em uma data.
Entidade EbdSession (documento)
Section titled “Entidade EbdSession (documento)”| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | Sim | ID do documento (sessionId) |
ministryId | string | Sim | Escopo tenant (ministério) |
unitId | string | Sim | Unidade (igreja) onde ocorreu |
date | string (ISO 8601) | Sim | Data da ocorrência (domingo) |
status | string | Sim | CREATED, IN_PROGRESS, CONCLUDED, CLOSED |
type | string | Sim | FULL_CLASS, REGULAR_CLASS, UNIQUE_CLASS, ONLINE_CLASS, CANCELED, REPLACED_BY_EVENT, REPLACED_BY_CULT |
replaceCause | string | Não | LOCAL_EVENT, MINISTERIAL_EVENT, BAPTISM, WEATHER_CONDITION, etc. |
replaceCauseObservation | string | Não | Observação sobre a causa |
weatherType | string | Não | SUNNY, PARTLY_CLOUDY, CLOUDY, LIGHT_RAIN, HEAVY_RAIN, THUNDERSTORM, FOG |
temperature | string | Não | VERY_COLD, COLD, MILD, WARM, VERY_WARM |
totalStudents | number | Sim | Total de alunos (default 0) |
totalVisitors | number | Sim | Total de visitantes (default 0) |
totalLeaders | number | Sim | Total de líderes (default 0) |
totalWorkers | number | Sim | Total de obreiros (default 0) |
totalPastors | number | Sim | Total de pastores (default 0) |
observation | string | Não | Observação geral |
principals | array | Não | Lista de userIds responsáveis |
createdAt | string (ISO 8601) | Não | Data de criação |
updatedAt | string (ISO 8601) | Não | Data de atualização |
Subcoleção Lessons
Section titled “Subcoleção Lessons”Caminho: platform/ministrys/{ministryId}/data/ebds/{sessionId}/lessons/{lessonId}
As classes (Lessons) são uma subcoleção dentro da EbdSession. Cada documento representa uma aula/classe ministrada na sessão.
Responsabilidade de inclusão: As classes são incluídas pelo usuário que cria a EbdSession, não derivadas automaticamente dos ClassGroups da unidade. O criador escolhe quais classes farão parte daquela sessão.
Sugestão na criação: No momento da criação de uma nova EbdSession, o sistema deve sugerir as classes usadas no domingo anterior da mesma unidade. O criador pode aceitar a sugestão, remover ou adicionar classes antes de confirmar.
Campos conforme entidade Lesson (classGroupId, theme, teacherId, monitorId, totais, etc.).
Índices Firestore
Section titled “Índices Firestore”| Coleção | Campos | Uso |
|---|---|---|
ebds | unitId ASC, date DESC | Listar sessões por unidade, mais recentes primeiro |
Queries típicas
Section titled “Queries típicas”- Listar sessões de uma unidade:
where('unitId', '==', unitId).orderBy('date', 'desc').limit(n) - Buscar sessão por data:
where('unitId', '==', unitId).where('date', '==', dateStr) - Sugestão de classes: Para sugerir classes na criação, buscar a sessão mais recente anterior à data:
where('unitId', '==', unitId).where('date', '<', dateStr).orderBy('date', 'desc').limit(1)e ler a subcoleçãolessonsdessa sessão
Referências
Section titled “Referências”| Tipo | Documento |
|---|---|
| ADR | ADR-0005, ADR-0003, ADR-0024 |
| PRD | PRD-0003 |
| Legado | model_ebd, model_ebd_class |