Skip to main content

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

CampoTipoObrigatórioDescrição
idstringSimIdentificador único da mensagem (ex.: auto-ID do Firestore)
receiverIdstringSimUID do usuário destinatário
emitterIdstringSimUID do emissor (usuário ou sistema)
emitterNamestringNãoNome do emissor para exibição
emitterEmailstringNãoEmail do emissor
emittedAtstring (ISO 8601)SimData/hora de envio
titlestringSimTítulo da mensagem
bodystringNãoCorpo/conteúdo da mensagem
typestringSimTipo: SYSTEM, PERSONAL, GROUP, PUBLIC, etc.
readStatusstringSimStatus de leitura: UNREAD, READ, IGNORED
prioritystringSimPrioridade: LOW, NORMAL, HIGH, URGENT (ordem de destaque: URGENT > HIGH > NORMAL > LOW)
ministryIdstringSimEscopo tenant (ministério)
unitIdstringNãoUnidade organizacional quando aplicável
deletedAtstring (ISO 8601)NãoPreenchido 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: deletedAt preenchido; 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çãoCamposUso
platform/.../messagesreceiverId ASC, deletedAt ASC, priority ASC, emittedAt DESCListar mensagens do destinatário, excluídas filtradas, ordenadas por prioridade e data

Relacionamentos

  • receiverId → email do destinatário (identificador do usuário)
  • emitterIdplatform/users/{uid} ou identificador de sistema
  • ministryId → escopo multitenancy (ADR-0012)

Referências

TipoDocumento
ADRADR-0023 — Coleção Dedicada de Mensagens
TDDTDD API Mensagens