25 lines
921 B
JavaScript
25 lines
921 B
JavaScript
'use strict';
|
|
|
|
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const { createEscalation } = require('../src/escalation');
|
|
|
|
const esc = createEscalation({ client: { sendPrivateNote: async () => {}, assignUser: async () => {} } });
|
|
|
|
test('escalation: three consecutive fails -> level 2', () => {
|
|
assert.equal(esc.shouldEscalate({ messagesProcessed: 3 }, 'policy_faq', 'high', 3, 2).level, 2);
|
|
});
|
|
|
|
test('escalation: low KB with no hits -> level 1', () => {
|
|
assert.equal(esc.shouldEscalate({ messagesProcessed: 1 }, 'policy_faq', 'low', 0, 0).level, 1);
|
|
});
|
|
|
|
test('escalation: healthy -> level 0', () => {
|
|
assert.equal(esc.shouldEscalate({ messagesProcessed: 1 }, 'policy_faq', 'high', 0, 3).level, 0);
|
|
});
|
|
|
|
test('escalation: appends localized human option', () => {
|
|
const out = esc.appendEscalationOption('您好', '您好,订单怎么查');
|
|
assert.match(out, /转人工/);
|
|
});
|