git-subtree-dir: coordenador git-subtree-mainline:facbe2e340git-subtree-split:ce7af94d55
42 lines
1.8 KiB
JavaScript
42 lines
1.8 KiB
JavaScript
const { test } = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const { buildFallbackClassification, AI_FALLBACK_CLASSIFICATION } = require('./fallback');
|
|
const { VALID_CLASSIFICATIONS } = require('./classification');
|
|
|
|
test('fallback e sempre seguro e marcado como tal', () => {
|
|
const result = buildFallbackClassification('ai_timeout');
|
|
assert.equal(result.is_fallback, true);
|
|
assert.equal(result.fallback_reason, 'ai_timeout');
|
|
assert.equal(result.confidence, 0);
|
|
assert.ok(result.reason.includes('Fallback'));
|
|
});
|
|
|
|
test('fallback NUNCA finge ser ACTIONABLE_NOW -- usa AI_FALLBACK, um estado tecnico explicito', () => {
|
|
const result = buildFallbackClassification('ai_error');
|
|
assert.equal(result.classification, AI_FALLBACK_CLASSIFICATION);
|
|
assert.notEqual(result.classification, 'ACTIONABLE_NOW');
|
|
assert.equal(result.actionable_today, false);
|
|
});
|
|
|
|
test('AI_FALLBACK nunca e uma classe que a propria IA pode retornar (fica fora do schema enviado a OpenAI)', () => {
|
|
assert.ok(!VALID_CLASSIFICATIONS.includes(AI_FALLBACK_CLASSIFICATION));
|
|
});
|
|
|
|
test('AI_MAX_CANDIDATES gera AI_FALLBACK, nao ACTIONABLE_NOW', () => {
|
|
const result = buildFallbackClassification('ai_max_candidates_cap');
|
|
assert.equal(result.classification, AI_FALLBACK_CLASSIFICATION);
|
|
assert.equal(result.fallback_reason, 'ai_max_candidates_cap');
|
|
});
|
|
|
|
test('erro de IA gera AI_FALLBACK', () => {
|
|
assert.equal(buildFallbackClassification('ai_error').classification, AI_FALLBACK_CLASSIFICATION);
|
|
});
|
|
|
|
test('IA desligada gera AI_FALLBACK', () => {
|
|
assert.equal(buildFallbackClassification('ai_disabled').classification, AI_FALLBACK_CLASSIFICATION);
|
|
});
|
|
|
|
test('JSON invalido gera AI_FALLBACK', () => {
|
|
assert.equal(buildFallbackClassification('invalid_json').classification, AI_FALLBACK_CLASSIFICATION);
|
|
});
|