Files
Agent-System/web/src/engine/categoryHelper.test.ts
T

78 lines
2.1 KiB
TypeScript

import test from 'node:test';
import assert from 'node:assert/strict';
import { deriveFallbackCategory, enrichMessagesWithCategories } from './categoryHelper';
import { ChatMessage } from '../types/workbench';
test('deriveFallbackCategory identifies categories correctly', () => {
assert.equal(deriveFallbackCategory({ role: 'system', content: '系统启动' }), 'system');
assert.equal(
deriveFallbackCategory({
role: 'assistant',
intentTag: '🎯 项目初始画像与责任人就绪',
content: '初始化完成',
}),
'milestone'
);
assert.equal(
deriveFallbackCategory({
role: 'assistant',
intentTag: '📚 监管法规与核心参数咨询',
content: '法规要点解析',
}),
'consult'
);
assert.equal(
deriveFallbackCategory({
role: 'assistant',
phaseEvents: [{ step: '1', icon: '👥', label: '组装小队', status: 'completed' }],
content: '开始执行声学建模任务',
}),
'task'
);
assert.equal(
deriveFallbackCategory({
role: 'assistant',
intentTag: '驳回门禁',
meta: { interactive_card: true },
content: '请重新审核',
}),
'review'
);
});
test('enrichMessagesWithCategories backfills categories without overwriting existing ones', () => {
const input: ChatMessage[] = [
{
id: 'm-1',
sessionId: 'sess-1',
role: 'user',
content: '请教三类超声设备的注册审评要求和关键工程参数',
timestamp: '10:00',
},
{
id: 'm-2',
sessionId: 'sess-1',
role: 'assistant',
content: '三类超声器械审评要求如下:1. 强标符合性...',
timestamp: '10:01',
},
{
id: 'm-3',
sessionId: 'sess-1',
role: 'user',
category: 'task',
content: '启动声学仿真任务',
timestamp: '10:02',
},
];
const enriched = enrichMessagesWithCategories(input);
assert.equal(enriched[0].category, 'consult');
assert.equal(enriched[1].category, 'consult'); // inherited / derived
assert.equal(enriched[2].category, 'task'); // retained original
});