Capítulo 72 — Eventos e Tópicos de Mensageria
Este capítulo documenta de forma consolidada e de referência o catálogo completo de eventos de domínio, comandos assíncronos e trabalhos distribuídos da Plataforma de Relacionamento Digital com o Cidadão.
72.1 Objetivo do Capítulo
Este capítulo documenta de forma consolidada e de referência o catálogo completo de eventos de domínio, comandos assíncronos e trabalhos distribuídos da Plataforma de Relacionamento Digital com o Cidadão.
O Capítulo 13 — Arquitetura de Mensageria e RabbitMQ — estabelece a infraestrutura, as convenções, o envelope, a topologia de exchanges e as políticas de operação. Este capítulo não os repete: concentra-se exclusivamente no conteúdo que circula nessa infraestrutura — quais mensagens existem, quem as publica, quem as consome, qual a estrutura do payload e qual a semântica de cada evento.
O catálogo aqui documentado é o artefato de referência para:
- times de desenvolvimento que implementam produtores ou consumidores;
- equipes de operação que configuram filas, alertas e DLQs;
- o processo de evolução de contratos e versionamento de schemas;
- a rastreabilidade com os requisitos funcionais (Anexo III) e as capacidades (Anexo IV) do edital.
72.2 Premissas e Convenções
72.2.1 Convenções de Nomenclatura
A nomenclatura adotada neste catálogo é derivada diretamente das convenções definidas no Capítulo 13, seção 13.6.
Routing keys de eventos de domínio:
<domínio>.<evento>.<versão>
Exemplos:
request.submitted.v1
citizen.updated.v1
appointment.cancelled.v1
Routing keys de comandos assíncronos:
<capacidade>.<ação>.<versão>
Exemplos:
communication.send.v1
integration.sei.register.v1
ai.knowledge.index.v1
Routing keys de trabalhos distribuídos:
<domínio-técnico>.<ação>.<versão>
Exemplos:
document.ocr.v1
ai.embedding.generate.v1
datalake.ingest.v1
72.2.2 Envelope Padrão
Todo evento e comando publicado no RabbitMQ carrega o envelope padronizado definido no Capítulo 13, seção 13.7. Os campos id, type, version, occurredAt, tenantId, correlationId, causationId e producer estão sempre presentes. Este catálogo documenta apenas o conteúdo do campo payload — específico de cada mensagem.
72.2.3 Versionamento de Contratos
Cada evento carrega sua versão no campo type (ex.: request.submitted.v1). Mudanças de payload que mantêm compatibilidade retroativa não requerem nova versão major; mudanças incompatíveis (remoção de campo, alteração de tipo, mudança semântica) exigem v2 com coexistência temporária de versões, conforme a política de Schema Registry descrita no Capítulo 23, seção 23.6.
72.2.4 Isolamento Multi-Tenant
O campo tenantId no envelope garante isolamento em toda a cadeia assíncrona. Consumidores validam o tenantId antes de processar qualquer mensagem. Mensagens sem tenantId válido são rejeitadas sem processamento.
72.2.5 Semântica de Entrega
A semântica adotada é at-least-once. Todos os consumidores críticos implementam idempotência — seja por Inbox Pattern, seja por regra de negócio — conforme especificado no Capítulo 13, seção 13.13.
72.3 Exchanges de Referência
| Exchange | Tipo | Finalidade |
|---|---|---|
platform.events | topic | Eventos de domínio — múltiplos consumidores independentes |
platform.commands | direct | Comandos assíncronos — consumidor lógico único |
platform.work | direct | Trabalhos distribuídos — competing consumers |
platform.dead-letter | direct / fanout | Dead Letter Exchange — DLQs por consumidor |
72.4 Catálogo de Eventos de Domínio
72.4.1 Domínio: Identity
Serviço produtor: Identity Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Usuário criado | identity.user.created.v1 | Novo usuário registrado na plataforma |
| Usuário bloqueado | identity.user.blocked.v1 | Usuário bloqueado por política de segurança ou ação administrativa |
| Identidade federada vinculada | identity.federated-linked.v1 | Vínculo entre identidade local e provedor externo (ex.: GOV.BR) estabelecido |
| Autenticação bem-sucedida | identity.authentication-succeeded.v1 | Sessão autenticada com sucesso |
| MFA habilitado | identity.mfa-enabled.v1 | Fator adicional de autenticação ativado pelo usuário |
| Senha alterada | identity.password-changed.v1 | Senha do usuário alterada |
| Sessão encerrada | identity.session-revoked.v1 | Sessão encerrada por logout ou por política de expiração |
Payload de referência — identity.user.created.v1:
{
"userId": "uuid",
"tenantId": "org-secretaria-educacao",
"email": "usuario@email.gov.br",
"userType": "CITIZEN",
"createdAt": "2026-07-15T10:30:00.000Z",
"channel": "WEB"
}
Consumidores típicos:
- Audit Service → registra criação na trilha de auditoria
- Communication Service → envia boas-vindas se configurado
- Analytics Service → atualiza projeção de base de usuários do tenant
72.4.2 Domínio: Tenant
Serviço produtor: Tenant Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Tenant criado | tenant.created.v1 | Novo órgão ou entidade incorporada à plataforma |
| Tenant ativado | tenant.activated.v1 | Tenant habilitado para operação após onboarding |
| Tenant suspenso | tenant.suspended.v1 | Acesso suspenso por decisão administrativa |
| Módulos alterados | tenant.modules-changed.v1 | Conjunto de módulos habilitados do tenant alterado |
| Configuração alterada | tenant.configuration-changed.v1 | Parâmetro de configuração operacional do tenant modificado |
Payload de referência — tenant.modules-changed.v1:
{
"tenantId": "org-secretaria-saude",
"previousModules": ["CRM", "BPM", "GED"],
"currentModules": ["CRM", "BPM", "GED", "SCHEDULING"],
"changedBy": "admin-uuid",
"changedAt": "2026-07-15T14:00:00.000Z"
}
Consumidores típicos:
- Configuration Service → invalida cache de configuração do tenant
- Audit Service → registra mudança de módulos
- Analytics Service → ajusta projeções de capacidade
72.4.3 Domínio: Citizen
Serviço produtor: Citizen Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Cidadão criado | citizen.created.v1 | Perfil de cidadão criado no tenant |
| Cidadão atualizado | citizen.updated.v1 | Dados cadastrais do cidadão modificados |
| Preferências alteradas | citizen.preferences-changed.v1 | Preferências de comunicação e notificação atualizadas |
| Consentimento alterado | citizen.consent-changed.v1 | Consentimentos LGPD revisados pelo cidadão |
| Perfil mesclado | citizen.profiles-merged.v1 | Duplicidade de perfil detectada e consolidada |
Payload de referência — citizen.consent-changed.v1:
{
"citizenId": "uuid",
"tenantId": "org-detran",
"previousConsents": {
"marketing": true,
"dataSharing": false
},
"currentConsents": {
"marketing": false,
"dataSharing": false
},
"changedAt": "2026-07-15T09:15:00.000Z",
"channel": "MOBILE"
}
Consumidores típicos:
- Communication Service → respeita preferências na próxima comunicação
- Segmentation Service → reavalia inclusão em segmentos
- Data Lake Ingestion → ingere mudança de consentimento com timestamp
72.4.4 Domínio: Service Catalog
Serviço produtor: Service Catalog Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Serviço publicado | catalog.service.published.v1 | Novo serviço disponibilizado para o cidadão |
| Serviço suspenso | catalog.service.suspended.v1 | Serviço temporariamente indisponível |
| Serviço descontinuado | catalog.service.discontinued.v1 | Serviço removido definitivamente do catálogo |
| Serviço atualizado | catalog.service.updated.v1 | Metadados ou condições do serviço alterados |
Payload de referência — catalog.service.published.v1:
{
"serviceId": "uuid",
"tenantId": "org-fazenda",
"serviceName": "Certidão de Débitos Fiscais",
"category": "TRIBUTARIO",
"channels": ["WEB", "MOBILE"],
"hasScheduling": false,
"hasWorkflow": true,
"publishedAt": "2026-07-15T08:00:00.000Z"
}
Consumidores típicos:
- Analytics Service → indexa novo serviço em projeções de catálogo
- AI Builder → candidato a indexação na base de conhecimento RAG
72.4.5 Domínio: Forms
Serviço produtor: Forms Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Nova versão publicada | form.version-published.v1 | Nova versão de formulário disponibilizada para uso |
Payload de referência — form.version-published.v1:
{
"formId": "uuid",
"serviceId": "uuid",
"tenantId": "org-sedu",
"version": 5,
"previousVersion": 4,
"publishedAt": "2026-07-15T11:30:00.000Z",
"effectiveFrom": "2026-07-16T00:00:00.000Z"
}
Consumidores típicos:
- Request Service → valida qual versão de formulário deve ser apresentada
- Audit Service → registra publicação de nova versão
72.4.6 Domínio: Request (Solicitações)
Serviço produtor: Request Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Solicitação criada | request.created.v1 | Rascunho de solicitação iniciado pelo cidadão |
| Solicitação submetida | request.submitted.v1 | Solicitação enviada com formulário preenchido e documentos |
| Status alterado | request.status-changed.v1 | Status da solicitação transitou para novo estado |
| Complementação solicitada | request.complement-requested.v1 | Analista solicitou informações ou documentos adicionais |
| Complementação enviada | request.complement-submitted.v1 | Cidadão respondeu à solicitação de complementação |
| Solicitação cancelada | request.cancelled.v1 | Solicitação cancelada pelo cidadão ou pelo órgão |
| Solicitação concluída | request.completed.v1 | Solicitação encerrada com resultado final |
Payload de referência — request.submitted.v1:
{
"requestId": "uuid",
"protocolNumber": "2026-SEDU-00012345",
"serviceId": "uuid",
"citizenId": "uuid",
"formId": "uuid",
"formVersion": 5,
"channel": "WEB",
"documentIds": ["doc-uuid-1", "doc-uuid-2"],
"submittedAt": "2026-07-15T10:30:00.000Z"
}
Payload de referência — request.status-changed.v1:
{
"requestId": "uuid",
"protocolNumber": "2026-SEDU-00012345",
"previousStatus": "SUBMITTED",
"currentStatus": "IN_ANALYSIS",
"changedBy": "analyst-uuid",
"changedAt": "2026-07-15T14:00:00.000Z",
"reason": null
}
Consumidores típicos para request.submitted.v1:
- Workflow Service → inicia instância de processo BPM
- Communication Service → envia confirmação com protocolo ao cidadão
- Analytics Service → atualiza projeção de solicitações do tenant
- Data Lake Ingestion → ingere evento na partição do tenant
72.4.7 Domínio: Workflow
Serviço produtor: Workflow Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Instância iniciada | workflow.instance-started.v1 | Nova instância de processo BPM iniciada |
| Etapa concluída | workflow.step-completed.v1 | Etapa do processo concluída com resultado |
| Instância concluída | workflow.instance-completed.v1 | Processo finalizado com conclusão normal |
| Instância falhou | workflow.instance-failed.v1 | Processo encerrado com falha não recuperável |
| Timer disparado | workflow.timer-fired.v1 | Temporizador de etapa ou SLA acionado |
| Processo escalado | workflow.escalated.v1 | Processo escalado por violação de SLA ou decisão manual |
Payload de referência — workflow.instance-started.v1:
{
"instanceId": "uuid",
"processDefinitionId": "uuid",
"processDefinitionVersion": 3,
"requestId": "uuid",
"tenantId": "org-sedu",
"startedAt": "2026-07-15T10:31:05.000Z",
"triggeredBy": "request.submitted.v1",
"causationId": "evt-request-uuid"
}
Consumidores típicos:
- Task Service → cria tarefas conforme etapas do processo
- Analytics Service → monitora SLAs e gargalos de processo
- Audit Service → registra progressão do processo
72.4.8 Domínio: Task
Serviço produtor: Task Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Tarefa criada | task.created.v1 | Nova tarefa gerada pelo processo BPM |
| Tarefa atribuída | task.assigned.v1 | Tarefa designada a analista ou grupo |
| Alerta de SLA | task.sla-warning.v1 | Prazo da tarefa próximo do limite configurado |
| SLA violado | task.sla-breached.v1 | Tarefa não concluída dentro do SLA definido |
| Tarefa concluída | task.completed.v1 | Tarefa encerrada com resultado registrado |
| Tarefa reatribuída | task.reassigned.v1 | Tarefa transferida de um responsável para outro |
Payload de referência — task.sla-breached.v1:
{
"taskId": "uuid",
"instanceId": "uuid",
"requestId": "uuid",
"tenantId": "org-sedu",
"assignedTo": "analyst-uuid",
"slaDeadline": "2026-07-15T17:00:00.000Z",
"breachedAt": "2026-07-15T17:00:05.000Z",
"hoursOverdue": 0.001
}
Consumidores típicos para task.sla-warning.v1 e task.sla-breached.v1:
- Communication Service → notifica analista, supervisor e gestor
- Analytics Service → incrementa indicadores de violação de SLA
- Workflow Service → avalia acionamento de escalada automática
72.4.9 Domínio: CRM
Serviço produtor: CRM Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Interação criada | crm.interaction-created.v1 | Nova interação de atendimento registrada |
| Interação atribuída | crm.interaction-assigned.v1 | Interação direcionada a atendente ou fila |
| Interação encerrada | crm.interaction-closed.v1 | Interação concluída com registro de desfecho |
| Transferência para humano | crm.human-assistance-requested.v1 | Assistente virtual transferiu para atendimento humano |
| Callback solicitado | crm.callback-requested.v1 | Cidadão solicitou retorno de contato |
Payload de referência — crm.human-assistance-requested.v1:
{
"interactionId": "uuid",
"citizenId": "uuid",
"tenantId": "org-detran",
"channel": "CHAT",
"aiSessionId": "uuid",
"transferReason": "COMPLEXITY",
"context": {
"topicIdentified": "habilitacao-renovacao",
"messageCount": 5,
"lastIntentConfidence": 0.43
},
"requestedAt": "2026-07-15T11:20:00.000Z"
}
Consumidores típicos:
- Communication Service → notifica atendente disponível
- Analytics Service → registra taxa de transferência para humano
- Audit Service → registra sessão de IA e desfecho
72.4.10 Domínio: Communication
Serviço produtor: Communication Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Comunicação enviada | communication.sent.v1 | Mensagem enviada ao provedor do canal |
| Entrega confirmada | communication.delivered.v1 | Provedor confirmou entrega ao destinatário |
| Falha na entrega | communication.failed.v1 | Entrega não foi possível após tentativas |
| Comunicação recebida | communication.received.v1 | Mensagem recebida do cidadão via canal |
| Descadastro realizado | communication.unsubscribed.v1 | Cidadão se descadastrou de comunicações não essenciais |
Payload de referência — communication.delivered.v1:
{
"messageId": "uuid",
"citizenId": "uuid",
"tenantId": "org-sedu",
"channel": "EMAIL",
"templateId": "tmpl-confirmacao-solicitacao",
"correlationId": "corr-xyz",
"deliveredAt": "2026-07-15T10:31:30.000Z",
"providerMessageId": "ext-id-do-provedor"
}
Consumidores típicos:
- Analytics Service → atualiza métricas de entrega por canal e template
- Data Lake Ingestion → ingere evento para análise de engajamento
72.4.11 Domínio: Document
Serviço produtor: Document Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Documento enviado | document.uploaded.v1 | Documento recebido e armazenado com integridade verificada |
| Documento processado | document.processed.v1 | Processamento (OCR, extração de metadados) concluído |
| Falha no processamento | document.processing-failed.v1 | Processamento não foi concluído após tentativas |
| Documento aprovado | document.approved.v1 | Analista aprovou documento vinculado a solicitação |
| Documento rejeitado | document.rejected.v1 | Documento rejeitado com motivo registrado |
| Documento expirado | document.expired.v1 | Documento atingiu data de validade registrada |
Payload de referência — document.uploaded.v1:
{
"documentId": "uuid",
"citizenId": "uuid",
"tenantId": "org-fazenda",
"fileName": "comprovante-residencia.pdf",
"mimeType": "application/pdf",
"sizeBytes": 245760,
"sha256": "a1b2c3d4e5f6...",
"documentType": "COMPROVANTE_RESIDENCIA",
"sourceRequestId": "uuid",
"uploadedAt": "2026-07-15T10:29:50.000Z"
}
Consumidores típicos para document.uploaded.v1:
- OCR Worker → extrai texto do documento
- Metadata Worker → extrai metadados estruturados
- AI Builder → gera embeddings para RAG (se autorizado por política)
- Audit Service → registra recebimento do documento
72.4.12 Domínio: Scheduling (Agendamentos)
Serviço produtor: Scheduling Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Agendamento confirmado | appointment.scheduled.v1 | Vaga reservada e confirmada para o cidadão |
| Agendamento remarcado | appointment.rescheduled.v1 | Data ou horário do agendamento alterado |
| Agendamento cancelado | appointment.cancelled.v1 | Agendamento cancelado pelo cidadão ou pelo órgão |
| Lembrete disparado | appointment.reminder-sent.v1 | Notificação de lembrete disparada próximo à data |
| Comparecimento registrado | appointment.attended.v1 | Cidadão compareceu ao atendimento presencial |
| Falta registrada | appointment.missed.v1 | Cidadão não compareceu e prazo expirou |
Payload de referência — appointment.scheduled.v1:
{
"appointmentId": "uuid",
"citizenId": "uuid",
"tenantId": "org-detran",
"serviceId": "uuid",
"agendaId": "uuid",
"unitId": "uuid",
"slotId": "uuid",
"scheduledDate": "2026-07-22",
"scheduledTime": "14:30",
"protocolNumber": "AGD-2026-0001234",
"confirmedAt": "2026-07-15T10:30:00.000Z"
}
Consumidores típicos:
- Communication Service → envia confirmação com protocolo e detalhes
- Analytics Service → atualiza taxa de ocupação de agendas
- Data Lake Ingestion → ingere evento na partição do tenant
72.4.13 Domínio: Ombudsman (Ouvidoria)
Serviço produtor: Ombudsman Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Manifestação registrada | ombudsman.manifestation-created.v1 | Nova manifestação de ouvidoria registrada com protocolo |
| Manifestação encaminhada | ombudsman.manifestation-forwarded.v1 | Manifestação direcionada ao setor responsável |
| Prazo em alerta | ombudsman.deadline-warning.v1 | Prazo de resposta próximo do vencimento |
| Manifestação respondida | ombudsman.manifestation-responded.v1 | Resposta registrada pelo órgão |
| Manifestação encerrada | ombudsman.manifestation-closed.v1 | Manifestação encerrada com desfecho final |
| Integração MG-Ouv enviada | ombudsman.mg-ouv-synced.v1 | Manifestação sincronizada com o sistema MG-Ouv |
Payload de referência — ombudsman.manifestation-created.v1:
{
"manifestationId": "uuid",
"tenantId": "org-saude",
"type": "RECLAMACAO",
"protocolNumber": "OUV-2026-00005678",
"isAnonymous": false,
"citizenId": "uuid",
"subject": "Demora no agendamento de consulta especializada",
"registeredAt": "2026-07-15T09:00:00.000Z",
"deadlineAt": "2026-08-14T23:59:59.000Z"
}
Consumidores típicos:
- Communication Service → envia protocolo ao cidadão (se não anônimo)
- Workflow Service → inicia processo de tratamento de manifestação
- Integration Service → aciona sincronização com MG-Ouv quando configurado
72.4.14 Domínio: Satisfaction
Serviço produtor: Satisfaction Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Avaliação recebida | satisfaction.feedback-received.v1 | Cidadão submeteu avaliação após atendimento ou serviço |
Payload de referência — satisfaction.feedback-received.v1:
{
"feedbackId": "uuid",
"citizenId": "uuid",
"tenantId": "org-detran",
"serviceId": "uuid",
"requestId": "uuid",
"channel": "MOBILE",
"score": 4,
"scaleMax": 5,
"comment": "Atendimento rápido, mas a interface poderia ser mais clara.",
"receivedAt": "2026-07-15T15:45:00.000Z"
}
Consumidores típicos:
- Analytics Service → consolida indicadores de satisfação por serviço e canal
- Data Lake Ingestion → ingere avaliação para análise histórica
72.4.15 Domínio: Segmentation
Serviço produtor: Segmentation Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Segmento calculado | segment.calculated.v1 | Cálculo de público de segmento concluído |
| Segmento expirado | segment.expired.v1 | Segmento descontinuado ou com critérios inválidos |
Payload de referência — segment.calculated.v1:
{
"segmentId": "uuid",
"tenantId": "org-fazenda",
"segmentName": "Contribuintes com débito em 2026",
"audienceSize": 4523,
"calculatedAt": "2026-07-15T03:00:00.000Z",
"criteria": {
"type": "BEHAVIORAL",
"summary": "Cidadãos com débito tributário registrado em 2026"
}
}
Consumidores típicos:
- Campaign Service → habilita uso do segmento em campanhas ativas
72.4.16 Domínio: Campaign
Serviço produtor: Campaign Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Campanha iniciada | campaign.started.v1 | Execução da campanha de comunicação iniciada |
| Campanha concluída | campaign.completed.v1 | Envio para todos os destinatários do segmento concluído |
| Campanha pausada | campaign.paused.v1 | Execução suspensa por decisão administrativa |
| Campanha cancelada | campaign.cancelled.v1 | Campanha cancelada antes ou durante a execução |
Payload de referência — campaign.completed.v1:
{
"campaignId": "uuid",
"tenantId": "org-fazenda",
"segmentId": "uuid",
"channel": "EMAIL",
"totalTargeted": 4523,
"totalSent": 4521,
"totalFailed": 2,
"startedAt": "2026-07-15T08:00:00.000Z",
"completedAt": "2026-07-15T08:14:22.000Z"
}
Consumidores típicos:
- Analytics Service → consolida métricas de campanha
- Communication Service → correlaciona entregas com campanha para rastreamento
72.4.17 Domínio: Data Quality
Serviço produtor: Data Quality Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Problema detectado | data-quality.issue-detected.v1 | Violação de regra de qualidade identificada no dataset |
| Problema resolvido | data-quality.issue-resolved.v1 | Violação corrigida ou justificada e encerrada |
Payload de referência — data-quality.issue-detected.v1:
{
"issueId": "uuid",
"tenantId": "org-sedu",
"datasetId": "requests",
"ruleId": "rule-tenant-id-not-null",
"severity": "ERROR",
"affectedRecords": 3,
"detectedAt": "2026-07-15T04:30:00.000Z",
"dimension": "COMPLETUDE"
}
Consumidores típicos:
- Analytics Service → exibe alerta no painel de qualidade de dados
- Audit Service → registra incidente de qualidade
72.4.18 Domínio: Integration
Serviço produtor: Integration Service
| Evento | Routing Key | Descrição |
|---|---|---|
| Processo SEI registrado | integration.sei.registered.v1 | Processo registrado com sucesso no SEI!MG |
| Resposta externa recebida | integration.external-response-received.v1 | Resposta de sistema externo recebida e processada |
| Falha de integração | integration.failed.v1 | Chamada a sistema externo esgotou tentativas e foi para DLQ |
Payload de referência — integration.sei.registered.v1:
{
"integrationId": "uuid",
"tenantId": "org-saude",
"externalSystem": "SEI_MG",
"operation": "REGISTER_PROCESS",
"requestId": "uuid",
"externalId": "SEI-2026-0001234",
"registeredAt": "2026-07-15T10:32:00.000Z"
}
Consumidores típicos:
- Request Service → associa referência SEI à solicitação
- Audit Service → registra integração governamental
72.4.19 Domínio: AI
Serviço produtor: AI Gateway / AI Builder
| Evento | Routing Key | Descrição |
|---|---|---|
| Chat concluído | ai.chat-completed.v1 | Sessão de chat com assistente encerrada |
| Feedback de IA recebido | ai.feedback-received.v1 | Cidadão avaliou resposta do assistente |
| Base de conhecimento indexada | ai.knowledge-indexed.v1 | Indexação de base de conhecimento concluída |
| Reindexação concluída | ai.knowledge-reindexed.v1 | Reindexação de base de conhecimento existente concluída |
Payload de referência — ai.chat-completed.v1:
{
"sessionId": "uuid",
"citizenId": "uuid",
"tenantId": "org-detran",
"channel": "MOBILE",
"messageCount": 8,
"durationSeconds": 142,
"resolvedByAi": true,
"transferredToHuman": false,
"topicClassification": "habilitacao-renovacao",
"modelUsed": "claude-sonnet",
"endedAt": "2026-07-15T11:22:00.000Z"
}
Consumidores típicos:
- Analytics Service → consolida métricas de uso de IA por tenant
- Data Lake Ingestion → ingere sessão para análise de comportamento
- Satisfaction Service → aciona coleta de feedback pós-sessão se configurado
72.5 Catálogo de Comandos Assíncronos
Comandos assíncronos representam solicitações explícitas de execução. Circulam pela exchange platform.commands (tipo direct) e são processados por um único consumidor lógico.
| Comando | Routing Key | Consumidor Lógico | Descrição |
|---|---|---|---|
| Enviar comunicação | communication.send.v1 | Communication Service | Solicita envio de mensagem ao cidadão por canal determinado |
| Iniciar workflow | workflow.start.v1 | Workflow Service | Solicita início de instância de processo BPM |
| Processar documento | document.process.v1 | Document Worker | Aciona processamento de documento recém-recebido |
| Executar OCR | document.ocr.v1 | OCR Worker | Extrai texto de documento por reconhecimento óptico de caracteres |
| Indexar base de conhecimento | ai.knowledge.index.v1 | AI Builder | Solicita indexação de documentos autorizados na base RAG |
| Reindexar base de conhecimento | ai.knowledge.reindex.v1 | AI Builder | Solicita reindexação completa da base de conhecimento do tenant |
| Sumarizar documento | ai.summarize.v1 | AI Service | Solicita sumarização de documento por capacidade de IA |
| Registrar no SEI | integration.sei.register.v1 | SEI Adapter | Solicita registro de processo no SEI!MG |
| Sincronizar MG-Ouv | integration.mg-ouv.sync.v1 | MG-Ouv Adapter | Solicita sincronização de manifestação com MG-Ouv |
| Ingerir no Data Lake | datalake.ingest.v1 | Ingestion Consumer | Solicita ingestão de payload no Data Lake do tenant |
| Exportar relatório | report.export.v1 | Export Worker | Solicita geração e exportação de relatório para download |
Payload de referência — communication.send.v1:
{
"communicationId": "uuid",
"citizenId": "uuid",
"tenantId": "org-detran",
"channel": "EMAIL",
"templateId": "tmpl-confirmacao-agendamento",
"variables": {
"nomeServico": "Renovação de CNH",
"dataAgendamento": "2026-07-22",
"horaAgendamento": "14:30",
"protocolo": "AGD-2026-0001234",
"unidade": "DETRAN-BH-CENTRO"
},
"priority": "NORMAL",
"requestedAt": "2026-07-15T10:30:05.000Z"
}
Payload de referência — integration.sei.register.v1:
{
"commandId": "uuid",
"requestId": "uuid",
"tenantId": "org-saude",
"seiUnit": "SAÚDE-PROTO-001",
"processType": "ATENDIMENTO-CIDADAO",
"description": "Solicitação de agendamento especializado",
"documentIds": ["doc-uuid-1"],
"requester": {
"name": "João Silva",
"cpf": "***"
},
"requestedAt": "2026-07-15T10:30:02.000Z"
}
Nota de segurança: Dados pessoais sensíveis como CPF completo não devem ser transmitidos em payload de mensagem. A referência ao
citizenIdé suficiente; o Integration Service recupera os dados necessários do serviço de identidade no momento da chamada, respeitando o princípio de minimização de dados em trânsito.
72.6 Catálogo de Trabalhos Distribuídos
Trabalhos distribuídos escalam horizontalmente por workers competidores. Circulam pela exchange platform.work (tipo direct).
| Trabalho | Routing Key | Workers | Descrição |
|---|---|---|---|
| OCR de documento | document.ocr.v1 | OCR Workers | Extração de texto de documentos digitalizados |
| Extração de metadados | document.metadata.extract.v1 | Metadata Workers | Extração de metadados estruturados de documentos |
| Geração de embedding | ai.embedding.generate.v1 | Embedding Workers | Geração de vetores semânticos para indexação RAG |
| Ingestão no Data Lake | datalake.ingest.v1 | Ingestion Workers | Ingestão de evento ou payload no Data Lake do tenant |
| Exportação de relatório | report.export.v1 | Export Workers | Geração de arquivo de relatório para download |
| Envio em lote | communication.batch-send.v1 | Campaign Workers | Envio de comunicações em volume para segmentos de campanha |
| Cálculo de segmento | segment.calculate.v1 | Segmentation Workers | Cálculo e atualização do público de um segmento |
Payload de referência — ai.embedding.generate.v1:
{
"jobId": "uuid",
"tenantId": "org-sedu",
"knowledgeBaseId": "uuid",
"sourceType": "DOCUMENT",
"sourceId": "doc-uuid",
"chunkCount": 12,
"model": "multilingual-e5-large",
"requestedAt": "2026-07-15T10:30:10.000Z"
}
72.7 Mapeamento de Filas por Consumidor
Esta seção mapeia os eventos mais relevantes para as filas de consumidores correspondentes. O padrão de nomenclatura segue <consumidor>.<propósito> conforme o Capítulo 13, seção 13.6.
Para o evento request.submitted.v1
| Fila | Consumidor | Ação |
|---|---|---|
workflow.request-submitted | Workflow Service | Inicia instância de processo BPM |
communication.request-submitted | Communication Service | Envia confirmação de protocolo ao cidadão |
analytics.request-submitted | Analytics Service | Atualiza projeção de volume de solicitações |
datalake.request-events | Data Lake Ingestion | Ingere evento na partição do tenant |
Para o evento document.uploaded.v1
| Fila | Consumidor | Ação |
|---|---|---|
document.processing | Document Worker | Aciona processamento e OCR |
ai.knowledge-builder | AI Builder | Avalia indexação na base RAG |
audit.document-events | Audit Service | Registra recebimento na trilha |
Para o evento task.sla-breached.v1
| Fila | Consumidor | Ação |
|---|---|---|
communication.sla-events | Communication Service | Notifica analista, supervisor e gestor |
analytics.sla-events | Analytics Service | Incrementa indicadores de violação |
workflow.sla-events | Workflow Service | Avalia escalada automática |
Para o evento tenant.modules-changed.v1
| Fila | Consumidor | Ação |
|---|---|---|
configuration.tenant-events | Configuration Service | Invalida cache de configuração do tenant |
audit.tenant-events | Audit Service | Registra mudança de módulos |
72.8 Dead Letter Queues por Domínio
Cada consumidor possui sua DLQ própria, com nome derivado do nome da fila de trabalho. Nenhuma DLQ é global.
| Fila de Trabalho | Dead Letter Queue |
|---|---|
workflow.request-submitted | workflow.request-submitted.dlq |
communication.request-submitted | communication.request-submitted.dlq |
datalake.request-events | datalake.request-events.dlq |
document.processing | document.processing.dlq |
ai.knowledge-builder | ai.knowledge-builder.dlq |
ai.embedding | ai.embedding.dlq |
communication.send | communication.send.dlq |
integration.sei | integration.sei.dlq |
integration.mg-ouv | integration.mg-ouv.dlq |
datalake.ingestion | datalake.ingestion.dlq |
report.export | report.export.dlq |
Cada DLQ tem owner definido, dashboard de monitoramento, alerta de volume e runbook de reprocessamento — conforme política operacional descrita no Capítulo 13, seção 13.17.
72.9 Política de Retenção e Versionamento de Eventos
72.9.1 Ciclo de Vida de uma Versão
| Fase | Descrição | Ação Requerida |
|---|---|---|
DRAFT | Contrato em elaboração | Não publicar em produção |
ACTIVE | Versão em uso em produção | Consumidores implementados e testados |
DEPRECATED | Nova versão substituiu esta | Consumidores migram no prazo definido; versão antiga ainda processada |
RETIRED | Versão desativada | Produtor não mais publica; consumidores removem binding |
72.9.2 Compatibilidade de Evolução
| Tipo de Mudança | Compatibilidade | Nova Versão Major? |
|---|---|---|
| Campo opcional adicionado ao payload | Backward compatible | Não |
| Campo obrigatório adicionado | Breaking change | Sim — v2 obrigatório |
| Campo removido | Breaking change | Sim — v2 obrigatório |
| Tipo de campo alterado de forma compatível | Backward compatible | Não |
| Mudança semântica sem alteração de schema | Breaking change | Sim — comunicação explícita |
72.9.3 Coexistência de Versões
Durante migração de v1 para v2, o produtor publica nos dois routing keys por período definido. Consumidores migram individualmente e confirmam conclusão. O produtor descontinua v1 após todos os consumidores confirmarem migração.
72.10 Observabilidade do Catálogo de Mensagens
72.10.1 Métricas por Evento
Para cada routing key em produção, as seguintes métricas são emitidas:
messages.published.total— contador de publicações por routing key e tenantmessages.consumed.total— contador de consumos com status (success, error, retry)messages.processing.duration— histograma de tempo de processamento por consumidormessages.dlq.size— gauge de mensagens acumuladas em DLQ
72.10.2 Alertas Críticos
| Condição | Severidade | Ação |
|---|---|---|
| DLQ com mais de 10 mensagens acumuladas | HIGH | Aciona owner da fila |
| Consumer count de fila crítica = 0 | CRITICAL | Alerta de operação imediata |
| Taxa de erro de consumidor > 5% em 5 minutos | HIGH | Investigação de poison message ou falha sistêmica |
| Mensagem na tabela Outbox sem publicação há mais de 2 minutos | MEDIUM | Verificação do publisher e conectividade com broker |
72.10.3 Rastreabilidade End-to-End
O correlationId propagado no envelope de cada mensagem permite rastrear toda a cadeia assíncrona desencadeada por uma única ação do cidadão — desde a submissão de uma solicitação até a confirmação de entrega da notificação, o registro no SEI!MG e a ingestão no Data Lake — como uma única trilha coerente no sistema de observabilidade.
72.11 Rastreabilidade com os Requisitos do Edital
Anexo III — Requisitos Funcionais
| Bloco | Requisito | Eventos Relacionados |
|---|---|---|
| 1 — Relacionamento | Comunicações multicanal | communication.*, crm.* |
| 1 — Relacionamento | Histórico do cidadão | citizen.*, request.*, crm.* |
| 2 — BPM/Workflow | Orquestração de processos | workflow.*, task.*, request.* |
| 2 — BPM/Workflow | SLA e alertas | task.sla-warning.v1, task.sla-breached.v1 |
| 3 — GED | Gestão de documentos | document.* |
| 4 — Dados e IA | Ingestão no Data Lake | datalake.ingest.v1, todos os eventos de domínio |
| 4 — Dados e IA | Capacidades de IA | ai.* |
| 5 — Integração | Sistemas governamentais | integration.sei.*, integration.mg-ouv.* |
| 6 — Administração | Auditoria e rastreabilidade | envelope correlationId/causationId em todos os eventos |
Anexo IV — Capacidades Técnicas
| Capacidade | Evidência no Catálogo |
|---|---|
| Mensageria assíncrona resiliente | Topologia de exchanges, DLQs por consumidor, retry classificado |
| Processamento paralelo desacoplado | Filas independentes por consumidor; competing consumers em workers |
| Integração com sistemas externos | Comandos integration.sei.register.v1, integration.mg-ouv.sync.v1 |
| Alimentação do Data Lake | datalake.ingest.v1 consumido por todos os eventos de domínio |
| IA assíncrona | ai.embedding.generate.v1, ai.knowledge.index.v1 desacoplados |
| Isolamento multi-tenant | tenantId obrigatório no envelope de toda mensagem |
Anexo V — Sustentabilidade
| Critério | Evidência no Catálogo |
|---|---|
| Contratos versionados | Versão no type de cada evento; política de compatibilidade documentada |
| Evolução sem ruptura | Coexistência de versões; período de depreciação com plano de migração |
| Observabilidade integrada | Métricas, alertas e rastreabilidade por correlationId em toda a cadeia |
| Operação de DLQs | Owner, alerta e runbook para cada DLQ catalogada |
72.12 Decisões Arquiteturais Relacionadas
| ADR | Tema | Capítulo |
|---|---|---|
| ADR-064 | RabbitMQ como barramento assíncrono | 13 |
| ADR-065 | Separação entre eventos, comandos e trabalhos | 13 |
| ADR-066 | Topologia de exchanges e nomenclatura | 13 |
| ADR-067 | Formato de routing keys e nomes de filas | 13 |
| ADR-068 | Envelope padrão de mensagens | 13 |
| ADR-070 | Política de versionamento de eventos | 13 |
| ADR-075 | Dead Letter Queues — topologia e processo operacional | 13 |
| ADR-078 | Propagação de Tenant Context em mensagens | 13 |
| ADR-081 | Integração entre RabbitMQ e Data Lake | 13 |
| ADR-082 | RabbitMQ nos fluxos assíncronos de IA | 13 |
72.13 Considerações Finais
Este catálogo documenta 65 tipos de mensagens distribuídos em 19 domínios da plataforma — eventos de domínio, comandos assíncronos e trabalhos distribuídos. Cada mensagem tem routing key versionada, produtor identificado, payload de referência, consumidores típicos e DLQ correspondente.
O catálogo é um artefato vivo: a incorporação de novos eventos segue o processo de Schema Registry (Capítulo 23), exige definição de owner, payload documentado, política de compatibilidade e registro na tabela de contratos. Nenhum evento é publicado em produção sem contrato aprovado.
A rastreabilidade assíncrona ponta a ponta — garantida pelo correlationId e causationId propagados em toda cadeia — torna este catálogo também o mapa de observabilidade da plataforma: cada operação do cidadão pode ser reconstruída como sequência de eventos correlacionados, desde a ação inicial até os efeitos em todos os domínios afetados.
O Capítulo 73 — Dicionário de Dados documenta as entidades de negócio, seus atributos e os relacionamentos entre os domínios da plataforma.
72.14 Controle de Versão
| Campo | Valor |
|---|---|
| Documento | Documento Mestre — Plataforma de Relacionamento Digital com o Cidadão |
| Capítulo | 72 — Eventos e Tópicos de Mensageria |
| Versão | 1.0 |
| Situação | Concluído |
| Última atualização | 17/07/2026 |
72.15 Rastreabilidade PRODEMGE
- [ANX-III] — Blocos 1 a 6: todos os grupos funcionais têm eventos documentados neste catálogo, cobrindo relacionamento, BPM, GED, dados/IA, integração e administração.
- [ANX-IV] — Capacidades de mensageria assíncrona, processamento paralelo, integração governamental e IA desacoplada evidenciadas no catálogo completo de routing keys e consumidores.
- [ANX-V] — Sustentabilidade: contratos versionados com política de compatibilidade, DLQs operacionalizadas, observabilidade end-to-end por
correlationId, evolução incremental sem ruptura. - [PNR] — Plano de Negócio Referencial: eventos de integração com SEI!MG e MG-Ouv documentados; Data Lake alimentado por eventos de todos os domínios; IA com processamentos não interativos desacoplados por filas.
- [EDITAL] — CP001/2026: plataforma distribuída, assíncrona, resiliente e rastreável com catálogo formal de contratos de mensagens.
Capítulo 71 — Contratos REST e OpenAPI
Este capítulo documenta os contratos REST da Plataforma de Relacionamento Digital com o Cidadão, apresentando a estrutura OpenAPI de cada grupo funcional, as convenções de contrato adotadas na plataforma, e os padrões qu…
Capítulo 73 — Dicionário de Dados
Este capítulo apresenta o Dicionário de Dados da Plataforma de Relacionamento Digital com o Cidadão — catálogo formal que descreve, para cada domínio de persistência, as entidades relevantes, seus atributos, tipos de dad…