FEAT: Adiciona migrations para config WhatsApp e templates HSM

025: Tabela whatsapp_config com access_token, phone_number_id,
     api_version e webhook_token (singleton via UNIQUE INDEX on TRUE)
026: waba_id na whatsapp_config; colunas HSM em whatsapp_templates:
     language, meta_template_name, meta_template_id, meta_status,
     header_type, header_text, footer_text, buttons (JSONB),
     body_variables (JSONB)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Rafael Alves Lopes 2026-06-23 09:58:01 -03:00
parent 03d28495f0
commit 51eaaf0735
2 changed files with 46 additions and 0 deletions

View File

@ -0,0 +1,17 @@
-- Migration 025: Configuração da integração WhatsApp (Meta API)
CREATE TABLE whatsapp_config (
id SERIAL PRIMARY KEY,
access_token TEXT,
phone_number_id VARCHAR(50),
api_version VARCHAR(20) NOT NULL DEFAULT 'v25.0',
webhook_token VARCHAR(255),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_by INTEGER REFERENCES usuarios(id) ON DELETE SET NULL
);
-- Garante que exista no máximo uma linha de configuração
CREATE UNIQUE INDEX whatsapp_config_singleton ON whatsapp_config ((TRUE));
-- Linha inicial vazia para facilitar o U PDATE posterior
INSERT INTO whatsapp_config (access_token, phone_number_id, api_version, webhook_token)
VALUES (NULL, NULL, 'v25.0', NULL);

View File

@ -0,0 +1,29 @@
-- Migration 026: WhatsApp HSM Templates + WABA ID
-- Adiciona suporte a templates HSM da Meta com botões, header, footer e variáveis estruturadas.
-- WABA ID na config (necessário para gerenciar templates via API)
ALTER TABLE whatsapp_config
ADD COLUMN IF NOT EXISTS waba_id VARCHAR(100);
-- Colunas HSM na tabela de templates
ALTER TABLE whatsapp_templates
ADD COLUMN IF NOT EXISTS language VARCHAR(10) NOT NULL DEFAULT 'pt_BR',
ADD COLUMN IF NOT EXISTS meta_template_name VARCHAR(512),
ADD COLUMN IF NOT EXISTS meta_template_id VARCHAR(100),
ADD COLUMN IF NOT EXISTS meta_status VARCHAR(50),
ADD COLUMN IF NOT EXISTS header_type VARCHAR(20),
ADD COLUMN IF NOT EXISTS header_text TEXT,
ADD COLUMN IF NOT EXISTS footer_text TEXT,
ADD COLUMN IF NOT EXISTS buttons JSONB,
ADD COLUMN IF NOT EXISTS body_variables JSONB;
-- Templates existentes sem meta_template_name ficam como rascunho
UPDATE whatsapp_templates
SET status = 'draft'
WHERE status IN ('approved', 'meta_review', 'admin_review')
AND meta_template_name IS NULL;
-- Índice único para meta_template_name (ignora NULLs)
CREATE UNIQUE INDEX IF NOT EXISTS whatsapp_templates_meta_name_idx
ON whatsapp_templates (meta_template_name)
WHERE meta_template_name IS NOT NULL;