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,29 @@
# Corpo das mensagens montado pelo ADM, um template por EVENTO e por CANAL.
#
# Antes, o texto era string interpolada dentro do NotificacaoService: mudar uma
# palavra exigia deploy. Agora o ADM empilha blocos (cabeçalho, texto, tabela de
# valores, aviso, botão, rodapé) na tela.
#
# `blocos` é jsonb e não tabela filha de propósito: a ordem faz parte do dado
# (é uma lista, não um conjunto), o conteúdo de cada tipo de bloco é diferente, e
# salvar o template inteiro numa transação evita estado meio-salvo. A validação
# da forma acontece no model (MensagemTemplate#normalizar_blocos), não no banco.
class CreateMensagemTemplates < ActiveRecord::Migration[7.1]
def change
create_table :mensagem_templates do |t|
t.references :evento_notificacao, null: false, foreign_key: true
t.string :canal, null: false # whatsapp | email
t.string :assunto # só e-mail
t.jsonb :blocos, null: false, default: []
t.boolean :ativo, null: false, default: true
t.timestamps
end
# Um template por evento+canal: dois templates ativos para o mesmo par
# deixariam o envio escolhendo em silêncio.
add_index :mensagem_templates, %i[evento_notificacao_id canal],
unique: true, name: 'index_template_evento_canal_unico'
end
end