Data Model — Mensagens
Contexto
Modelo de dados da coleção dedicada de mensagens, conforme ADR-0023 — Coleção Dedicada de Mensagens.
Coleção
Caminho: platform/ministrys/{ministryId}/data/messages/{messageId} (coleção por tenant).
Um documento por mensagem.
Entidade Message
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | Sim | Identificador único da mensagem (ex.: auto-ID do Firestore) |
receiverId | string | Sim | UID do usuário destinatário |
emitterId | string | Sim | UID do emissor (usuário ou sistema) |
emitterName | string | Não | Nome do emissor para exibição |
emitterEmail | string | Não | Email do emissor |
emittedAt | string (ISO 8601) | Sim | Data/hora de envio |
title | string | Sim | Título da mensagem |
body | string | Não | Corpo/conteúdo da mensagem |
type | string | Sim | Tipo: SYSTEM, PERSONAL, GROUP, PUBLIC, etc. |
readStatus | string | Sim | Status de leitura: UNREAD, READ, IGNORED |
priority | string | Sim | Prioridade: LOW, NORMAL, HIGH, URGENT (ordem de destaque: URGENT > HIGH > NORMAL > LOW) |
ministryId | string | Sim | Escopo tenant (ministério) |
unitId | string | Não | Unidade organizacional quando aplicável |
deletedAt | string (ISO 8601) | Não | Preenchido quando receptor exclui (soft delete) |
Ações do receptor
As ações do receptor (excluir, marcar como lida, ignorar) são refletidas nos campos:
- Excluir:
deletedAtpreenchido; documento pode ser filtrado da lista ou removido - Marcar como lida:
readStatus=READ - Ignorar:
readStatus=IGNORED
Índices Firestore (sugeridos)
Para suportar o listener em tempo real e queries:
| Coleção | Campos | Uso |
|---|---|---|
platform/.../messages | receiverId ASC, deletedAt ASC, priority ASC, emittedAt DESC | Listar mensagens do destinatário, excluídas filtradas, ordenadas por prioridade e data |
Relacionamentos
- receiverId → email do destinatário (identificador do usuário)
- emitterId →
platform/users/{uid}ou identificador de sistema - ministryId → escopo multitenancy (ADR-0012)
Referências
| Tipo | Documento |
|---|---|
| ADR | ADR-0023 — Coleção Dedicada de Mensagens |
| TDD | TDD API Mensagens |