| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import { classificarPergunta } from "#services/atendimentosQueryService.js";
- const CASES = [
-
- { query: "cliente pedindo segunda via de boleto", esperado: true, tipo: "positivo" },
- { query: "problema de internet lenta", esperado: true, tipo: "positivo" },
- { query: "cancelamento de contrato", esperado: true, tipo: "positivo" },
- { query: "cliente reclamando que a internet caiu de novo", esperado: true, tipo: "positivo" },
- { query: "solicitação de mudança de endereço de instalação", esperado: true, tipo: "positivo" },
- { query: "cliente questionando cobrança duplicada na fatura", esperado: true, tipo: "positivo" },
- { query: "pedido de upgrade de plano de internet", esperado: true, tipo: "positivo" },
-
- { query: "me conta algo engraçado que um cliente falou", esperado: true, tipo: "quase-armadilha" },
- { query: "qual foi a reclamação mais estranha que já recebemos", esperado: true, tipo: "quase-armadilha" },
- { query: "quantos atendimentos tivemos essa semana", esperado: true, tipo: "quase-armadilha" },
- { query: "o que aconteceu no último atendimento", esperado: true, tipo: "quase-armadilha" },
- { query: "vocês têm histórico de conversas com clientes?", esperado: true, tipo: "quase-armadilha" },
-
- { query: "previsão do tempo para amanhã em Paris", esperado: false, tipo: "negativo" },
- { query: "receita de bolo de chocolate", esperado: false, tipo: "negativo" },
- { query: "quem ganhou o jogo de futebol ontem", esperado: false, tipo: "negativo" },
- { query: "qual a capital da Austrália", esperado: false, tipo: "negativo" },
- { query: "como treinar para uma maratona", esperado: false, tipo: "negativo" },
- { query: "melhores filmes de ficção científica dos anos 80", esperado: false, tipo: "negativo" }
- ];
- async function main() {
- const rows = [];
- for (const c of CASES) {
- const { relacionado } = await classificarPergunta(c.query, []);
- rows.push({
- query: c.query,
- tipo: c.tipo,
- esperado: c.esperado,
- obtido: relacionado,
- resultado: relacionado === c.esperado ? "OK" : (c.esperado ? "FALSO-NEGATIVO (grave)" : "falso-positivo")
- });
- }
- console.log("\n=== evalAtendimentosGate ===\n");
- console.table(rows);
- const acertos = rows.filter((r) => r.resultado === "OK").length;
- const falsosNegativos = rows.filter((r) => r.resultado.startsWith("FALSO-NEGATIVO"));
- const falsosPositivos = rows.filter((r) => r.resultado === "falso-positivo");
- console.log("\n--- resumo ---");
- console.log(`acurácia: ${acertos}/${rows.length} (${((acertos / rows.length) * 100).toFixed(0)}%)`);
- console.log(`falsos-negativos (bloqueou pergunta legítima, ERRO GRAVE): ${falsosNegativos.length}`);
- if (falsosNegativos.length) console.log(falsosNegativos.map((r) => ` - "${r.query}"`).join("\n"));
- console.log(`falsos-positivos (deixou passar pergunta fora do tema): ${falsosPositivos.length}`);
- if (falsosPositivos.length) console.log(falsosPositivos.map((r) => ` - "${r.query}"`).join("\n"));
- console.log("");
- }
- main()
- .then(() => process.exit(0))
- .catch((err) => {
- console.error("[evalAtendimentosGate] erro:", err);
- process.exit(1);
- });
|