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 });