-- 051 — WA Onsms A1.5: Ponte de Handoff (disparo → número de atendimento).
--
-- Config por campanha (destino do interessado) + tokens opacos curtos para
-- atribuição fina quando o contato cai no número oficial. O link wa.me
-- tokenizado vai em MENSAGEM LIVRE (compliant — a proibição da Meta é link
-- em botão de template). Casamento por telefone é a rede universal; o token
-- só refina.

CREATE TABLE IF NOT EXISTS handoff_configs (
  campaign_id varchar PRIMARY KEY REFERENCES campaigns(id) ON DELETE CASCADE,
  owner_user_id varchar NOT NULL REFERENCES users(id) ON DELETE CASCADE,
  mode varchar(15) NOT NULL DEFAULT 'quick_reply',   -- quick_reply | landing | none
  connection_id varchar NOT NULL REFERENCES meta_cloud_connections(id) ON DELETE CASCADE,
  trigger_label varchar(60) NOT NULL DEFAULT 'Quero atendimento',
  invite_text varchar(300),
  greeting varchar(200),
  created_at timestamptz DEFAULT now(),
  updated_at timestamptz DEFAULT now()
);

CREATE TABLE IF NOT EXISTS handoff_tokens (
  id varchar PRIMARY KEY DEFAULT gen_random_uuid(),
  token varchar(12) NOT NULL,
  owner_user_id varchar NOT NULL REFERENCES users(id) ON DELETE CASCADE,
  campaign_id varchar NOT NULL,
  connection_id varchar NOT NULL,
  contact_phone varchar(20) NOT NULL,                -- canônico normalizeBrPhone
  global_contact_id varchar,
  invite_sent_at timestamptz,
  used_at timestamptz,
  created_at timestamptz DEFAULT now(),
  CONSTRAINT handoff_tokens_token_uniq UNIQUE (token),
  CONSTRAINT handoff_tokens_campaign_phone_uniq UNIQUE (campaign_id, contact_phone)
);
