ce2a4b0e1a
Memind CI / Test, build, and release guards (push) Has been cancelled
对比/清单/行程等口吻按人群场景交给分类器;本机 .env 可覆盖 admin-db 的 router 开关。 顺带在 MindSpace MCP token 过期时轮换 Goose 会话,避免旧会话空 Finish。
35 lines
1.3 KiB
JavaScript
35 lines
1.3 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import { classifyWithRules } from './chat-intent-router.mjs';
|
|
import { loadPersonaIntentCases } from './scripts/simulate-persona-intent-routing.mjs';
|
|
|
|
test('persona intent cases: rule utterances hit rules, llm utterances defer', async () => {
|
|
const { cases } = await loadPersonaIntentCases();
|
|
assert.ok(cases.length >= 20);
|
|
const personas = new Set(cases.map((item) => item.persona));
|
|
for (const required of ['青年男性', '青年女性', '中年男性', '中年女性', '老年', '小孩']) {
|
|
assert.ok(personas.has(required), `missing persona ${required}`);
|
|
}
|
|
|
|
for (const item of cases) {
|
|
const result = classifyWithRules({
|
|
text: item.text,
|
|
sessionId: 'h5direct_persona_sim',
|
|
sessionMessageCount: 3,
|
|
userMessage: {
|
|
role: 'user',
|
|
content: [{ type: 'text', text: item.text }],
|
|
metadata: { displayText: item.text },
|
|
},
|
|
chatSessionDeferEnabled: true,
|
|
chatSessionDeferMinTextLength: 12,
|
|
});
|
|
if (item.expectSource === 'llm') {
|
|
assert.equal(result, null, `${item.id} should defer to llm: ${item.text}`);
|
|
continue;
|
|
}
|
|
assert.equal(result?.route, item.expectRoute, `${item.id} route ${item.text}`);
|
|
assert.equal(result?.source, 'rule', `${item.id} source ${item.text}`);
|
|
}
|
|
});
|