-- Duas Etapas ponta a ponta (24/07/2026) — resposta de NEGATIVA central + desfecho.
--
-- 1) ai_agent_config: termos negativos e a resposta padrão de encerramento ficam
--    CENTRALIZADOS (Central de IA), nunca por campanha. Se o contato recusa o
--    chamariz ("não", clique no botão Não), ele recebe o encerramento e NÃO a
--    oferta — mandar marketing para quem recusou faz o contato reportar o sender.
--    "sair" fica FORA da lista de propósito: o opt-out/black-list roda antes e
--    tem semântica própria (bloqueia o número para sempre).
--
-- 2) ai_conversations.two_stage_outcome: registra o DESFECHO da etapa
--    pré-programada ('offer' | 'declined' | NULL = ainda não consumida). Sem ele
--    é impossível medir o funil — main_message_sent_at só diz que "algo saiu".
--
-- Aplicar com:
--   psql "$DATABASE_URL" -f migrations/045_duas_etapas_negativa_desfecho.sql
-- Aditiva e idempotente. Rollback: dropar as 3 colunas.

BEGIN;

ALTER TABLE ai_agent_config
  ADD COLUMN IF NOT EXISTS two_stage_negative_terms jsonb NOT NULL
    DEFAULT '["não","nao","não quero","nao quero","não tenho interesse","nao tenho interesse","não obrigado","nao obrigado","não, obrigado","nao me interessa","sem interesse"]'::jsonb;

ALTER TABLE ai_agent_config
  ADD COLUMN IF NOT EXISTS two_stage_negative_reply text NOT NULL
    DEFAULT 'Ok, não daremos continuidade. Obrigado!';

ALTER TABLE ai_conversations
  ADD COLUMN IF NOT EXISTS two_stage_outcome varchar(12);

-- Consulta do funil por campanha (badge/estatística no detalhe da campanha).
CREATE INDEX IF NOT EXISTS ai_conversations_campaign_outcome_idx
  ON ai_conversations (campaign_id, two_stage_outcome);

COMMIT;
