Implantação da geração de mensagem de forma livre e mudança na engine de mensagem

This commit is contained in:
2026-08-24 17:32:16 -03:00
parent 94bbe7556f
commit 88f19dd8f5
77 changed files with 4650 additions and 25 deletions

View File

@@ -0,0 +1,35 @@
# Cria os eventos de sistema dos gatilhos ligados na etapa 3.
#
# Sem isso, `Despachante.disparar(chave: 'valor_alterado')` não acharia evento
# nenhum e o gatilho ficaria mudo — e o ADM teria de adivinhar que precisa criar
# um evento cujo nome gere exatamente aquela `chave`.
#
# Nascem ATIVOS e isso é seguro: sem grupo assinante não há destinatário, então
# nada é enviado até o ADM marcar um grupo na tela.
class SemearEventosDeGatilho < ActiveRecord::Migration[7.1]
EVENTOS = [
['Valor alterado no fechamento', 'valor_alterado', 'valor_alterado',
'Disparado quando o valor de um motorista muda depois da consolidação finalizada.'],
['Dados da operação mudaram', 'operacao_alterada', 'operacao_alterada',
'NF que entrou ou saiu, entrega que trocou de status, lançamento corrigido no SimpliRoute.']
].freeze
def up
EVENTOS.each do |nome, chave, gatilho, descricao|
# Idempotente: rodar de novo (ou num banco que já tenha o evento criado à
# mão) não pode estourar índice único.
next if select_value("SELECT 1 FROM eventos_notificacao WHERE chave = #{quote(chave)}")
execute(<<~SQL.squish)
INSERT INTO eventos_notificacao
(nome, chave, gatilho, descricao, ativo, sistema, notificar_envolvido, hora, created_at, updated_at)
VALUES (#{quote(nome)}, #{quote(chave)}, #{quote(gatilho)}, #{quote(descricao)},
true, true, true, 8, NOW(), NOW())
SQL
end
end
def down
EVENTOS.each { |_, chave, _, _| execute("DELETE FROM eventos_notificacao WHERE chave = #{quote(chave)}") }
end
end