-- +goose Up
-- +goose StatementBegin

-- ─────────────────────────────────────────────────────────────────────────────
-- LEADS: campos novos adicionados pelo LeadsView aprimorado
-- (busca inteligente, segmento, IA qualificação, contato, site, etc.)
-- ─────────────────────────────────────────────────────────────────────────────
ALTER TABLE leads
  -- Segmento de mercado (escola, prefeitura, comercio, industria, saude, corporativo, outro)
  ADD COLUMN IF NOT EXISTS segmento            TEXT    DEFAULT 'escola',

  -- Nome fantasia / comercial (diferente da razão social)
  ADD COLUMN IF NOT EXISTS nome_fantasia       TEXT    DEFAULT '',

  -- Contato principal na empresa
  ADD COLUMN IF NOT EXISTS contato_nome        TEXT    DEFAULT '',
  ADD COLUMN IF NOT EXISTS contato_cargo       TEXT    DEFAULT '',

  -- Dados web
  ADD COLUMN IF NOT EXISTS site                TEXT    DEFAULT '',

  -- Campos específicos de escola
  ADD COLUMN IF NOT EXISTS rede                TEXT    DEFAULT '',   -- mantenedora / rede de ensino

  -- Campos específicos de prefeitura
  ADD COLUMN IF NOT EXISTS populacao           INTEGER DEFAULT 0,
  ADD COLUMN IF NOT EXISTS secretaria          TEXT    DEFAULT '',
  ADD COLUMN IF NOT EXISTS num_servidores      INTEGER DEFAULT 0,

  -- Campos específicos de comércio/indústria
  ADD COLUMN IF NOT EXISTS num_funcionarios    INTEGER DEFAULT 0,
  ADD COLUMN IF NOT EXISTS ramo_atividade      TEXT    DEFAULT '',

  -- IA: próximas ações sugeridas (pipe-separated)
  ADD COLUMN IF NOT EXISTS proximas_acoes_ia   TEXT    DEFAULT '',

  -- Situação cadastral (Receita Federal)
  ADD COLUMN IF NOT EXISTS situacao_receita    TEXT    DEFAULT '';

-- Índice para busca por segmento
CREATE INDEX IF NOT EXISTS idx_leads_segmento ON leads(tenant_id, segmento);

-- ─────────────────────────────────────────────────────────────────────────────
-- CLIENTES: espelhar os campos enriquecidos do lead para conversão completa
-- (013 já tem: tipo_escola, num_alunos, segmento, score_ia, notas, tags)
-- Adicionamos os que faltam
-- ─────────────────────────────────────────────────────────────────────────────
ALTER TABLE clientes
  ADD COLUMN IF NOT EXISTS nome_fantasia       TEXT    DEFAULT '',
  ADD COLUMN IF NOT EXISTS contato_nome        TEXT    DEFAULT '',
  ADD COLUMN IF NOT EXISTS contato_cargo       TEXT    DEFAULT '',
  ADD COLUMN IF NOT EXISTS site                TEXT    DEFAULT '',
  ADD COLUMN IF NOT EXISTS rede                TEXT    DEFAULT '',
  ADD COLUMN IF NOT EXISTS populacao           INTEGER DEFAULT 0,
  ADD COLUMN IF NOT EXISTS secretaria          TEXT    DEFAULT '',
  ADD COLUMN IF NOT EXISTS num_servidores      INTEGER DEFAULT 0,
  ADD COLUMN IF NOT EXISTS num_funcionarios    INTEGER DEFAULT 0,
  ADD COLUMN IF NOT EXISTS ramo_atividade      TEXT    DEFAULT '',
  ADD COLUMN IF NOT EXISTS situacao_receita    TEXT    DEFAULT '',
  -- Campos de endereço estruturado (se não existirem já em 003)
  ADD COLUMN IF NOT EXISTS cidade              TEXT    DEFAULT '',
  ADD COLUMN IF NOT EXISTS uf                  TEXT    DEFAULT '',
  ADD COLUMN IF NOT EXISTS cep                 TEXT    DEFAULT '',
  ADD COLUMN IF NOT EXISTS logradouro          TEXT    DEFAULT '',
  ADD COLUMN IF NOT EXISTS numero_endereco     TEXT    DEFAULT '',
  ADD COLUMN IF NOT EXISTS bairro              TEXT    DEFAULT '',
  -- Origem (de onde veio o cliente)
  ADD COLUMN IF NOT EXISTS origem              TEXT    DEFAULT 'manual',
  -- Lead de origem
  ADD COLUMN IF NOT EXISTS lead_id             UUID    REFERENCES leads(id) ON DELETE SET NULL;

CREATE INDEX IF NOT EXISTS idx_clientes_segmento ON clientes(tenant_id, segmento);
CREATE INDEX IF NOT EXISTS idx_clientes_lead     ON clientes(tenant_id, lead_id);
CREATE INDEX IF NOT EXISTS idx_clientes_cidade   ON clientes(tenant_id, cidade, uf);

-- ─────────────────────────────────────────────────────────────────────────────
-- VIEW: clientes_enriquecidos — une dados do cliente com o lead de origem
-- Útil para relatórios e tela de clientes
-- ─────────────────────────────────────────────────────────────────────────────
CREATE OR REPLACE VIEW clientes_enriquecidos AS
SELECT
  c.*,
  l.score_ia          AS lead_score_ia,
  l.valor_potencial   AS lead_valor_potencial,
  l.probabilidade     AS lead_probabilidade,
  l.origem            AS lead_origem,
  l.proximas_acoes_ia AS lead_proximas_acoes_ia,
  u.nome              AS responsavel_nome
FROM clientes c
LEFT JOIN leads l ON l.id = c.lead_id
LEFT JOIN users u ON u.id = c.responsavel_id;

-- +goose StatementEnd

-- +goose Down
-- +goose StatementBegin

DROP VIEW IF EXISTS clientes_enriquecidos;

ALTER TABLE clientes
  DROP COLUMN IF EXISTS nome_fantasia,
  DROP COLUMN IF EXISTS contato_nome,
  DROP COLUMN IF EXISTS contato_cargo,
  DROP COLUMN IF EXISTS site,
  DROP COLUMN IF EXISTS rede,
  DROP COLUMN IF EXISTS populacao,
  DROP COLUMN IF EXISTS secretaria,
  DROP COLUMN IF EXISTS num_servidores,
  DROP COLUMN IF EXISTS num_funcionarios,
  DROP COLUMN IF EXISTS ramo_atividade,
  DROP COLUMN IF EXISTS situacao_receita,
  DROP COLUMN IF EXISTS cidade,
  DROP COLUMN IF EXISTS uf,
  DROP COLUMN IF EXISTS cep,
  DROP COLUMN IF EXISTS logradouro,
  DROP COLUMN IF EXISTS numero_endereco,
  DROP COLUMN IF EXISTS bairro,
  DROP COLUMN IF EXISTS origem,
  DROP COLUMN IF EXISTS lead_id;

ALTER TABLE leads
  DROP COLUMN IF EXISTS segmento,
  DROP COLUMN IF EXISTS nome_fantasia,
  DROP COLUMN IF EXISTS contato_nome,
  DROP COLUMN IF EXISTS contato_cargo,
  DROP COLUMN IF EXISTS site,
  DROP COLUMN IF EXISTS rede,
  DROP COLUMN IF EXISTS populacao,
  DROP COLUMN IF EXISTS secretaria,
  DROP COLUMN IF EXISTS num_servidores,
  DROP COLUMN IF EXISTS num_funcionarios,
  DROP COLUMN IF EXISTS ramo_atividade,
  DROP COLUMN IF EXISTS proximas_acoes_ia,
  DROP COLUMN IF EXISTS situacao_receita;

-- +goose StatementEnd
