import { scoreQualidade, scoreComercial, scoreGeral, classificarScoreGeral, dedupKey, extractDdd, segmentLabel, onlyDigits } from '../scoring.mjs'; // Converte um item processado ({payload, lead}) — formato produzido por // processLead e tambem o formato dos JSONs legados — na linha canonica da // tabela leads, com os scores/classificacao/dedup_key calculados. export function leadRowFromProcessed(item, fallbackOrigin = '') { const lead = item.lead || {}; const prospecting = item.payload?.prospecting || lead.raw?.prospecting || {}; const empresa = String(lead.companyName ?? '').trim(); const whatsapp = onlyDigits(lead.phone); const cnpj = onlyDigits(prospecting.cnpj); const cidade = String(lead.city ?? '').trim(); const segmento = String(lead.segment ?? '').trim(); const cnae = String(prospecting.cnae ?? '').trim(); const website = String(prospecting.website ?? '').trim(); const email = String(lead.email ?? '').trim(); const affinity = prospecting.affinity || 'media'; const produtos = Array.isArray(prospecting.products) ? prospecting.products : []; const qualidade = scoreQualidade({ whatsapp, cnpj, empresa, cidade, segmento, cnae, website }); const comercial = scoreComercial({ whatsapp, cnpj, website, email, affinity }); const geral = scoreGeral(qualidade.score, comercial); const tier = classificarScoreGeral(geral); const produtoPrincipal = produtos.length ? [...produtos].sort((a, b) => b.estrelas - a.estrelas)[0].nome : ''; return { lead_uid: lead.id || null, dedup_key: dedupKey({ cnpj, whatsapp, empresa, cidade }), empresa, legal_name: String(prospecting.legal_name ?? ''), whatsapp, ddd: extractDdd(whatsapp), email, cidade, uf: String(lead.state ?? '').trim().toUpperCase(), segmento, segmento_label: segmentLabel(segmento), interesse: String(lead.serviceLabel ?? ''), cnpj, cnae, endereco: String(prospecting.address ?? ''), website, pains_json: JSON.stringify(lead.pains || []), origem: String(lead.source || fallbackOrigin || 'indefinida'), telefone_valido: qualidade.telefoneValido ? 1 : 0, cnpj_valido: qualidade.cnpjValido ? 1 : 0, empresa_valida: qualidade.empresaValida ? 1 : 0, score: geral, classificacao: tier.id, motivo_classificacao: `score geral ${geral} (qualidade ${qualidade.score}, comercial ${comercial})`, score_qualidade: qualidade.score, score_comercial: comercial, prioridade: tier.prioridade, produto_principal: produtoPrincipal, produtos_json: JSON.stringify(produtos), capture_run_id: null, captured_at: lead.createdAt || null, exported_at: null }; }