Pular para o conteúdo principal

Event Storming

Para quem é esta página

Engenheiros e PMs técnicos. Contexto de produto: Casos de Uso.

Legenda

ElementoNotaçãoDescrição
Evento de Domínio[EVENTO]Algo que aconteceu — passado, irreversível
Comando→ ComandoAção que dispara um evento
Política⇒ Política:"Quando X ocorre, faça Y"
AtorAtorQuem executa o comando
Read Model📊Dado de leitura atualizado pelo evento

BC: Gestão de Processos CAR

Ciclo de Vida do Processo

EventoDispara porPolíticas
ProcessoIniciadoCidadão → IniciarProcessoCriarImóvelAssociado, IniciarAssistente
GeometriaDefinidaCidadão → DefinirGeometriaValidarGeometriaAssíncrono
ProcessoSubmetidoCidadão → SubmeterProcessoGerarRecibodeInscrição, NotificarAnalistaDisponível
ProcessoEmAnáliseAnalista → AssumirProcessoGerarDossiêAutomático
PendênciaIdentificadaAnalista → CriarPendênciaNotificarCidadão (email + Canal Web)
ProcessoRegularAnalista → EncaminharComoRegularDisponibilizarRecibodeInscrição, NotificarCidadão
ProcessoPendenteDeRegularizaçãoAnalista → EncaminharComPendênciaNotificarCidadãoSobrePendência, LiberarAbaRegularizaçãoAmbiental

Máquina de Estados (Terminologia oficial SICAR)


BC: Canal de Conversa Web

EventoDispara porPolíticas
MensagemWebRecebida{canal: web}Cidadão → EnviarMensagemClassificarIntenção, RoteadoParaAssistenteIA
SessãoIniciadaCidadão → AbrirCarlaVerificarContextoAtivo (mensagens não lidas, etapa do CAR)
SessãoRetomadaCidadão → RetornarÀCarlaExibirResumoEtapa, ExibirMensagensNãoLidas
MensagemAnalistaDeliveredSistema → NotificarCidadãoMarcarComoNãoLida, PriorizarNaReta
ConversaçãoRoteadaSistema → ClassificarMensagemRoteadoParaAssistenteIA ou RedirecionadoParaEtapaCAR
Adapter de Mensageria (futuro/opcional)

Quando o adapter de mensageria for implementado, ele gerará o mesmo evento MensagemRecebida{canal: whatsapp | telegram} — o BC de Canal de Conversa os processa da mesma forma, apenas com metadados de canal diferentes. O domínio é agnóstico ao canal de origem.


BC: Validação Documental

EventoDispara porPolíticas
DocumentoRecebidoCidadão → FazerUploadArmazenarMinIO, PublicarNaFilaOCR
OCRConcluídoWorker → ProcessarOCRExtrairDadosEstruturados
DocumentoValidadoWorker → ValidarDocumentoAtualizarScoreCompletude
InconsistênciaDetectadaWorker → DetectarDivergênciaCriarPendênciaAutomática

Tabela Consolidada de Eventos

EventoBCRouting Key RabbitMQ
ProcessoIniciadoProcessosprocesso.iniciado.v1
ProcessoSubmetidoProcessosprocesso.submetido.v1
PendênciaIdentificadaProcessosprocesso.pendencia_identificada.v1
ProcessoRegularProcessosprocesso.regular.v1
ProcessoPendenteDeRegularizaçãoProcessosprocesso.pendente_regularizacao.v1
DocumentoRecebidoValidaçãodocumento.recebido.v1
DocumentoValidadoValidaçãodocumento.validado.v1
MensagemWebRecebidaCanal Webcanal.web.mensagem.v1
SessãoIniciadaCanal Webcanal.web.sessao_iniciada.v1
MensagemAnalistaDeliveredCanal Webcanal.web.notificacao_analista.v1

Adapter futuro (routing keys reservadas):
canal.mensageria.mensagem.v1 — mensagem recebida de app de mensageria externo
canal.mensageria.vinculado.v1 — número vinculado ao user_id Gov.br

Versioning de eventos

Todos os routing keys terminam em .v1. Quando o payload mudar de forma incompatível, crie .v2 e mantenha ambos ativos por 1 ciclo de deploy.

Ver também