diff --git a/src/outreach/campaign-queue.mjs b/src/outreach/campaign-queue.mjs index 67a2e87..fbe70de 100644 --- a/src/outreach/campaign-queue.mjs +++ b/src/outreach/campaign-queue.mjs @@ -38,10 +38,10 @@ export function generateCampaignQueue(db, campaignId, { quantidade = 50 } = {}) if (!campaign.segmentos.length) throw new Error('campanha sem segmentos configurados'); const statement = db.prepare(candidateQuery()); - const candidatos = campaign.segmentos + const todosCandidatos = campaign.segmentos .flatMap((segmento) => statement.all(campaign.produto, segmento, campaign.produto, campaign.produto)) - .sort((a, b) => a.prioridade - b.prioridade || b.score - a.score || a.id - b.id) - .slice(0, quantidade); + .sort((a, b) => a.prioridade - b.prioridade || b.score - a.score || a.id - b.id); + const candidatos = todosCandidatos.slice(0, quantidade); const insert = db.prepare( `INSERT INTO outreach_campaign_queue @@ -55,7 +55,7 @@ export function generateCampaignQueue(db, campaignId, { quantidade = 50 } = {}) insert.run(campaignId, lead.id, variant.id, lead.segmento, lead.whatsapp, renderedMessage); adicionados += 1; } - return { candidatosEncontrados: candidatos.length, adicionadosNaFila: adicionados }; + return { candidatosEncontrados: todosCandidatos.length, adicionadosNaFila: adicionados }; } export function listQueue(db, campaignId, status = null) { diff --git a/tests/campaign-queue.test.mjs b/tests/campaign-queue.test.mjs index edf934a..d4d2040 100644 --- a/tests/campaign-queue.test.mjs +++ b/tests/campaign-queue.test.mjs @@ -105,6 +105,19 @@ test('generateCampaignQueue respeita o parametro quantidade', () => { db.close(); }); +test('generateCampaignQueue reporta candidatosEncontrados como o pool elegivel completo, mesmo com quantidade menor', () => { + const db = openDb(':memory:'); + for (let i = 0; i < 5; i += 1) { + inserirLead(db, { dedup_key: `pool-${i}`, whatsapp: `551199998000${i}` }); + } + const campanha = campanhaComVariantes(db); + const resultado = generateCampaignQueue(db, campanha.id, { quantidade: 2 }); + assert.equal(resultado.candidatosEncontrados, 5); + assert.equal(resultado.adicionadosNaFila, 2); + assert.equal(listQueue(db, campanha.id).length, 2); + db.close(); +}); + test('approveQueueRows so aprova linhas em preview da campanha certa', () => { const db = openDb(':memory:'); inserirLead(db, { whatsapp: '5511999990001' });