From 51eaaf07350b5618dda60ca9451df829f582df4d Mon Sep 17 00:00:00 2001 From: Rafael Lopes Date: Tue, 23 Jun 2026 09:58:01 -0300 Subject: [PATCH] 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 --- database/migrations/025_whatsapp_config.sql | 17 +++++++++++ .../migrations/026_whatsapp_templates_hsm.sql | 29 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 database/migrations/025_whatsapp_config.sql create mode 100644 database/migrations/026_whatsapp_templates_hsm.sql diff --git a/database/migrations/025_whatsapp_config.sql b/database/migrations/025_whatsapp_config.sql new file mode 100644 index 0000000..95a5f37 --- /dev/null +++ b/database/migrations/025_whatsapp_config.sql @@ -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); diff --git a/database/migrations/026_whatsapp_templates_hsm.sql b/database/migrations/026_whatsapp_templates_hsm.sql new file mode 100644 index 0000000..94f381d --- /dev/null +++ b/database/migrations/026_whatsapp_templates_hsm.sql @@ -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;