-- 068 — Calibração do lead scoring: o sistema aprende com quem realmente fecha
--
-- O dono define os pontos de cada resposta por intuição de mercado. Esta tabela
-- guarda o que os DADOS dizem: de quem já foi decidido (convertido ou perdido),
-- qual a taxa de fechamento de cada resposta.
--
-- Por que existe uma tabela em vez de calcular na hora: o cálculo varre todos
-- os leads decididos do formulário e é chamado pelo painel a cada abertura.
-- Guardar o resultado deixa a tela instantânea e dá histórico do aprendizado.
--
-- ⚠ Lead desqualificado (abaixo do piso) TAMBÉM entra na conta. Sem exemplo
-- negativo não há o que aprender — uma estatística que só vê ganhador não
-- distingue nada.

CREATE TABLE IF NOT EXISTS lead_score_stats (
  id            varchar PRIMARY KEY DEFAULT gen_random_uuid(),
  form_id       varchar NOT NULL REFERENCES lead_forms(id) ON DELETE CASCADE,
  pergunta_id   varchar(40) NOT NULL,
  resposta_id   varchar(40) NOT NULL,
  -- n = leads DECIDIDOS que marcaram esta resposta; convertidos = quantos fecharam
  n             integer NOT NULL DEFAULT 0,
  convertidos   integer NOT NULL DEFAULT 0,
  -- taxa suavizada (Laplace): (c+1)/(n+2). Impede que 1 acerto em 1 tentativa
  -- vire "100% de conversão" e desmonte a escala com amostra ridícula.
  taxa          numeric(6,4),
  -- lift = taxa desta resposta ÷ taxa média do formulário. 1,0 = na média.
  lift          numeric(8,4),
  -- peso 0-100 derivado do lift, na mesma escala dos pontos manuais
  peso_sugerido integer,
  updated_at    timestamptz NOT NULL DEFAULT now(),
  CONSTRAINT lead_score_stats_uniq UNIQUE (form_id, pergunta_id, resposta_id)
);

CREATE INDEX IF NOT EXISTS lead_score_stats_form_idx ON lead_score_stats (form_id, lift DESC);
