Relacionamento Digitalcom o Cidadão
Parte X — Anexos Técnicos
Parte X — Anexos TécnicosCapítulo 72

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

ExchangeTipoFinalidade
platform.eventstopicEventos de domínio — múltiplos consumidores independentes
platform.commandsdirectComandos assíncronos — consumidor lógico único
platform.workdirectTrabalhos distribuídos — competing consumers
platform.dead-letterdirect / fanoutDead 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

EventoRouting KeyDescrição
Usuário criadoidentity.user.created.v1Novo usuário registrado na plataforma
Usuário bloqueadoidentity.user.blocked.v1Usuário bloqueado por política de segurança ou ação administrativa
Identidade federada vinculadaidentity.federated-linked.v1Vínculo entre identidade local e provedor externo (ex.: GOV.BR) estabelecido
Autenticação bem-sucedidaidentity.authentication-succeeded.v1Sessão autenticada com sucesso
MFA habilitadoidentity.mfa-enabled.v1Fator adicional de autenticação ativado pelo usuário
Senha alteradaidentity.password-changed.v1Senha do usuário alterada
Sessão encerradaidentity.session-revoked.v1Sessã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

EventoRouting KeyDescrição
Tenant criadotenant.created.v1Novo órgão ou entidade incorporada à plataforma
Tenant ativadotenant.activated.v1Tenant habilitado para operação após onboarding
Tenant suspensotenant.suspended.v1Acesso suspenso por decisão administrativa
Módulos alteradostenant.modules-changed.v1Conjunto de módulos habilitados do tenant alterado
Configuração alteradatenant.configuration-changed.v1Parâ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

EventoRouting KeyDescrição
Cidadão criadocitizen.created.v1Perfil de cidadão criado no tenant
Cidadão atualizadocitizen.updated.v1Dados cadastrais do cidadão modificados
Preferências alteradascitizen.preferences-changed.v1Preferências de comunicação e notificação atualizadas
Consentimento alteradocitizen.consent-changed.v1Consentimentos LGPD revisados pelo cidadão
Perfil mescladocitizen.profiles-merged.v1Duplicidade 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

EventoRouting KeyDescrição
Serviço publicadocatalog.service.published.v1Novo serviço disponibilizado para o cidadão
Serviço suspensocatalog.service.suspended.v1Serviço temporariamente indisponível
Serviço descontinuadocatalog.service.discontinued.v1Serviço removido definitivamente do catálogo
Serviço atualizadocatalog.service.updated.v1Metadados 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

EventoRouting KeyDescrição
Nova versão publicadaform.version-published.v1Nova 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

EventoRouting KeyDescrição
Solicitação criadarequest.created.v1Rascunho de solicitação iniciado pelo cidadão
Solicitação submetidarequest.submitted.v1Solicitação enviada com formulário preenchido e documentos
Status alteradorequest.status-changed.v1Status da solicitação transitou para novo estado
Complementação solicitadarequest.complement-requested.v1Analista solicitou informações ou documentos adicionais
Complementação enviadarequest.complement-submitted.v1Cidadão respondeu à solicitação de complementação
Solicitação canceladarequest.cancelled.v1Solicitação cancelada pelo cidadão ou pelo órgão
Solicitação concluídarequest.completed.v1Solicitaçã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

EventoRouting KeyDescrição
Instância iniciadaworkflow.instance-started.v1Nova instância de processo BPM iniciada
Etapa concluídaworkflow.step-completed.v1Etapa do processo concluída com resultado
Instância concluídaworkflow.instance-completed.v1Processo finalizado com conclusão normal
Instância falhouworkflow.instance-failed.v1Processo encerrado com falha não recuperável
Timer disparadoworkflow.timer-fired.v1Temporizador de etapa ou SLA acionado
Processo escaladoworkflow.escalated.v1Processo 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

EventoRouting KeyDescrição
Tarefa criadatask.created.v1Nova tarefa gerada pelo processo BPM
Tarefa atribuídatask.assigned.v1Tarefa designada a analista ou grupo
Alerta de SLAtask.sla-warning.v1Prazo da tarefa próximo do limite configurado
SLA violadotask.sla-breached.v1Tarefa não concluída dentro do SLA definido
Tarefa concluídatask.completed.v1Tarefa encerrada com resultado registrado
Tarefa reatribuídatask.reassigned.v1Tarefa 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

EventoRouting KeyDescrição
Interação criadacrm.interaction-created.v1Nova interação de atendimento registrada
Interação atribuídacrm.interaction-assigned.v1Interação direcionada a atendente ou fila
Interação encerradacrm.interaction-closed.v1Interação concluída com registro de desfecho
Transferência para humanocrm.human-assistance-requested.v1Assistente virtual transferiu para atendimento humano
Callback solicitadocrm.callback-requested.v1Cidadã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

EventoRouting KeyDescrição
Comunicação enviadacommunication.sent.v1Mensagem enviada ao provedor do canal
Entrega confirmadacommunication.delivered.v1Provedor confirmou entrega ao destinatário
Falha na entregacommunication.failed.v1Entrega não foi possível após tentativas
Comunicação recebidacommunication.received.v1Mensagem recebida do cidadão via canal
Descadastro realizadocommunication.unsubscribed.v1Cidadã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

EventoRouting KeyDescrição
Documento enviadodocument.uploaded.v1Documento recebido e armazenado com integridade verificada
Documento processadodocument.processed.v1Processamento (OCR, extração de metadados) concluído
Falha no processamentodocument.processing-failed.v1Processamento não foi concluído após tentativas
Documento aprovadodocument.approved.v1Analista aprovou documento vinculado a solicitação
Documento rejeitadodocument.rejected.v1Documento rejeitado com motivo registrado
Documento expiradodocument.expired.v1Documento 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

EventoRouting KeyDescrição
Agendamento confirmadoappointment.scheduled.v1Vaga reservada e confirmada para o cidadão
Agendamento remarcadoappointment.rescheduled.v1Data ou horário do agendamento alterado
Agendamento canceladoappointment.cancelled.v1Agendamento cancelado pelo cidadão ou pelo órgão
Lembrete disparadoappointment.reminder-sent.v1Notificação de lembrete disparada próximo à data
Comparecimento registradoappointment.attended.v1Cidadão compareceu ao atendimento presencial
Falta registradaappointment.missed.v1Cidadã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

EventoRouting KeyDescrição
Manifestação registradaombudsman.manifestation-created.v1Nova manifestação de ouvidoria registrada com protocolo
Manifestação encaminhadaombudsman.manifestation-forwarded.v1Manifestação direcionada ao setor responsável
Prazo em alertaombudsman.deadline-warning.v1Prazo de resposta próximo do vencimento
Manifestação respondidaombudsman.manifestation-responded.v1Resposta registrada pelo órgão
Manifestação encerradaombudsman.manifestation-closed.v1Manifestação encerrada com desfecho final
Integração MG-Ouv enviadaombudsman.mg-ouv-synced.v1Manifestaçã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

EventoRouting KeyDescrição
Avaliação recebidasatisfaction.feedback-received.v1Cidadã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

EventoRouting KeyDescrição
Segmento calculadosegment.calculated.v1Cálculo de público de segmento concluído
Segmento expiradosegment.expired.v1Segmento 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

EventoRouting KeyDescrição
Campanha iniciadacampaign.started.v1Execução da campanha de comunicação iniciada
Campanha concluídacampaign.completed.v1Envio para todos os destinatários do segmento concluído
Campanha pausadacampaign.paused.v1Execução suspensa por decisão administrativa
Campanha canceladacampaign.cancelled.v1Campanha 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

EventoRouting KeyDescrição
Problema detectadodata-quality.issue-detected.v1Violação de regra de qualidade identificada no dataset
Problema resolvidodata-quality.issue-resolved.v1Violaçã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

EventoRouting KeyDescrição
Processo SEI registradointegration.sei.registered.v1Processo registrado com sucesso no SEI!MG
Resposta externa recebidaintegration.external-response-received.v1Resposta de sistema externo recebida e processada
Falha de integraçãointegration.failed.v1Chamada 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

EventoRouting KeyDescrição
Chat concluídoai.chat-completed.v1Sessão de chat com assistente encerrada
Feedback de IA recebidoai.feedback-received.v1Cidadão avaliou resposta do assistente
Base de conhecimento indexadaai.knowledge-indexed.v1Indexação de base de conhecimento concluída
Reindexação concluídaai.knowledge-reindexed.v1Reindexaçã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.

ComandoRouting KeyConsumidor LógicoDescrição
Enviar comunicaçãocommunication.send.v1Communication ServiceSolicita envio de mensagem ao cidadão por canal determinado
Iniciar workflowworkflow.start.v1Workflow ServiceSolicita início de instância de processo BPM
Processar documentodocument.process.v1Document WorkerAciona processamento de documento recém-recebido
Executar OCRdocument.ocr.v1OCR WorkerExtrai texto de documento por reconhecimento óptico de caracteres
Indexar base de conhecimentoai.knowledge.index.v1AI BuilderSolicita indexação de documentos autorizados na base RAG
Reindexar base de conhecimentoai.knowledge.reindex.v1AI BuilderSolicita reindexação completa da base de conhecimento do tenant
Sumarizar documentoai.summarize.v1AI ServiceSolicita sumarização de documento por capacidade de IA
Registrar no SEIintegration.sei.register.v1SEI AdapterSolicita registro de processo no SEI!MG
Sincronizar MG-Ouvintegration.mg-ouv.sync.v1MG-Ouv AdapterSolicita sincronização de manifestação com MG-Ouv
Ingerir no Data Lakedatalake.ingest.v1Ingestion ConsumerSolicita ingestão de payload no Data Lake do tenant
Exportar relatórioreport.export.v1Export WorkerSolicita 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).

TrabalhoRouting KeyWorkersDescrição
OCR de documentodocument.ocr.v1OCR WorkersExtração de texto de documentos digitalizados
Extração de metadadosdocument.metadata.extract.v1Metadata WorkersExtração de metadados estruturados de documentos
Geração de embeddingai.embedding.generate.v1Embedding WorkersGeração de vetores semânticos para indexação RAG
Ingestão no Data Lakedatalake.ingest.v1Ingestion WorkersIngestão de evento ou payload no Data Lake do tenant
Exportação de relatórioreport.export.v1Export WorkersGeração de arquivo de relatório para download
Envio em lotecommunication.batch-send.v1Campaign WorkersEnvio de comunicações em volume para segmentos de campanha
Cálculo de segmentosegment.calculate.v1Segmentation WorkersCá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

FilaConsumidorAção
workflow.request-submittedWorkflow ServiceInicia instância de processo BPM
communication.request-submittedCommunication ServiceEnvia confirmação de protocolo ao cidadão
analytics.request-submittedAnalytics ServiceAtualiza projeção de volume de solicitações
datalake.request-eventsData Lake IngestionIngere evento na partição do tenant

Para o evento document.uploaded.v1

FilaConsumidorAção
document.processingDocument WorkerAciona processamento e OCR
ai.knowledge-builderAI BuilderAvalia indexação na base RAG
audit.document-eventsAudit ServiceRegistra recebimento na trilha

Para o evento task.sla-breached.v1

FilaConsumidorAção
communication.sla-eventsCommunication ServiceNotifica analista, supervisor e gestor
analytics.sla-eventsAnalytics ServiceIncrementa indicadores de violação
workflow.sla-eventsWorkflow ServiceAvalia escalada automática

Para o evento tenant.modules-changed.v1

FilaConsumidorAção
configuration.tenant-eventsConfiguration ServiceInvalida cache de configuração do tenant
audit.tenant-eventsAudit ServiceRegistra 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 TrabalhoDead Letter Queue
workflow.request-submittedworkflow.request-submitted.dlq
communication.request-submittedcommunication.request-submitted.dlq
datalake.request-eventsdatalake.request-events.dlq
document.processingdocument.processing.dlq
ai.knowledge-builderai.knowledge-builder.dlq
ai.embeddingai.embedding.dlq
communication.sendcommunication.send.dlq
integration.seiintegration.sei.dlq
integration.mg-ouvintegration.mg-ouv.dlq
datalake.ingestiondatalake.ingestion.dlq
report.exportreport.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

FaseDescriçãoAção Requerida
DRAFTContrato em elaboraçãoNão publicar em produção
ACTIVEVersão em uso em produçãoConsumidores implementados e testados
DEPRECATEDNova versão substituiu estaConsumidores migram no prazo definido; versão antiga ainda processada
RETIREDVersão desativadaProdutor não mais publica; consumidores removem binding

72.9.2 Compatibilidade de Evolução

Tipo de MudançaCompatibilidadeNova Versão Major?
Campo opcional adicionado ao payloadBackward compatibleNão
Campo obrigatório adicionadoBreaking changeSim — v2 obrigatório
Campo removidoBreaking changeSim — v2 obrigatório
Tipo de campo alterado de forma compatívelBackward compatibleNão
Mudança semântica sem alteração de schemaBreaking changeSim — 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 tenant
  • messages.consumed.total — contador de consumos com status (success, error, retry)
  • messages.processing.duration — histograma de tempo de processamento por consumidor
  • messages.dlq.size — gauge de mensagens acumuladas em DLQ

72.10.2 Alertas Críticos

CondiçãoSeveridadeAção
DLQ com mais de 10 mensagens acumuladasHIGHAciona owner da fila
Consumer count de fila crítica = 0CRITICALAlerta de operação imediata
Taxa de erro de consumidor > 5% em 5 minutosHIGHInvestigação de poison message ou falha sistêmica
Mensagem na tabela Outbox sem publicação há mais de 2 minutosMEDIUMVerificaçã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

BlocoRequisitoEventos Relacionados
1 — RelacionamentoComunicações multicanalcommunication.*, crm.*
1 — RelacionamentoHistórico do cidadãocitizen.*, request.*, crm.*
2 — BPM/WorkflowOrquestração de processosworkflow.*, task.*, request.*
2 — BPM/WorkflowSLA e alertastask.sla-warning.v1, task.sla-breached.v1
3 — GEDGestão de documentosdocument.*
4 — Dados e IAIngestão no Data Lakedatalake.ingest.v1, todos os eventos de domínio
4 — Dados e IACapacidades de IAai.*
5 — IntegraçãoSistemas governamentaisintegration.sei.*, integration.mg-ouv.*
6 — AdministraçãoAuditoria e rastreabilidadeenvelope correlationId/causationId em todos os eventos

Anexo IV — Capacidades Técnicas

CapacidadeEvidência no Catálogo
Mensageria assíncrona resilienteTopologia de exchanges, DLQs por consumidor, retry classificado
Processamento paralelo desacopladoFilas independentes por consumidor; competing consumers em workers
Integração com sistemas externosComandos integration.sei.register.v1, integration.mg-ouv.sync.v1
Alimentação do Data Lakedatalake.ingest.v1 consumido por todos os eventos de domínio
IA assíncronaai.embedding.generate.v1, ai.knowledge.index.v1 desacoplados
Isolamento multi-tenanttenantId obrigatório no envelope de toda mensagem

Anexo V — Sustentabilidade

CritérioEvidência no Catálogo
Contratos versionadosVersão no type de cada evento; política de compatibilidade documentada
Evolução sem rupturaCoexistência de versões; período de depreciação com plano de migração
Observabilidade integradaMétricas, alertas e rastreabilidade por correlationId em toda a cadeia
Operação de DLQsOwner, alerta e runbook para cada DLQ catalogada

72.12 Decisões Arquiteturais Relacionadas

ADRTemaCapítulo
ADR-064RabbitMQ como barramento assíncrono13
ADR-065Separação entre eventos, comandos e trabalhos13
ADR-066Topologia de exchanges e nomenclatura13
ADR-067Formato de routing keys e nomes de filas13
ADR-068Envelope padrão de mensagens13
ADR-070Política de versionamento de eventos13
ADR-075Dead Letter Queues — topologia e processo operacional13
ADR-078Propagação de Tenant Context em mensagens13
ADR-081Integração entre RabbitMQ e Data Lake13
ADR-082RabbitMQ nos fluxos assíncronos de IA13

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

CampoValor
DocumentoDocumento Mestre — Plataforma de Relacionamento Digital com o Cidadão
Capítulo72 — Eventos e Tópicos de Mensageria
Versão1.0
SituaçãoConcluído
Última atualização17/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.

Nesta página

72.1 Objetivo do Capítulo72.2 Premissas e Convenções72.2.1 Convenções de Nomenclatura72.2.2 Envelope Padrão72.2.3 Versionamento de Contratos72.2.4 Isolamento Multi-Tenant72.2.5 Semântica de Entrega72.3 Exchanges de Referência72.4 Catálogo de Eventos de Domínio72.4.1 Domínio: Identity72.4.2 Domínio: Tenant72.4.3 Domínio: Citizen72.4.4 Domínio: Service Catalog72.4.5 Domínio: Forms72.4.6 Domínio: Request (Solicitações)72.4.7 Domínio: Workflow72.4.8 Domínio: Task72.4.9 Domínio: CRM72.4.10 Domínio: Communication72.4.11 Domínio: Document72.4.12 Domínio: Scheduling (Agendamentos)72.4.13 Domínio: Ombudsman (Ouvidoria)72.4.14 Domínio: Satisfaction72.4.15 Domínio: Segmentation72.4.16 Domínio: Campaign72.4.17 Domínio: Data Quality72.4.18 Domínio: Integration72.4.19 Domínio: AI72.5 Catálogo de Comandos Assíncronos72.6 Catálogo de Trabalhos Distribuídos72.7 Mapeamento de Filas por ConsumidorPara o evento request.submitted.v1Para o evento document.uploaded.v1Para o evento task.sla-breached.v1Para o evento tenant.modules-changed.v172.8 Dead Letter Queues por Domínio72.9 Política de Retenção e Versionamento de Eventos72.9.1 Ciclo de Vida de uma Versão72.9.2 Compatibilidade de Evolução72.9.3 Coexistência de Versões72.10 Observabilidade do Catálogo de Mensagens72.10.1 Métricas por Evento72.10.2 Alertas Críticos72.10.3 Rastreabilidade End-to-End72.11 Rastreabilidade com os Requisitos do EditalAnexo III — Requisitos FuncionaisAnexo IV — Capacidades TécnicasAnexo V — Sustentabilidade72.12 Decisões Arquiteturais Relacionadas72.13 Considerações Finais72.14 Controle de Versão72.15 Rastreabilidade PRODEMGE