feat(问翻小宝): 增强帮助搜索与会话历史
关键改动: - 增加问翻小宝会话历史记录规则与测试 - 优化帮助搜索、兜底建议和页面交互结构 - 更新帮助截图资产和截图采集脚本 Co-Authored-By: Codex GPT-5 <codex@openai.com>
This commit is contained in:
54
apps/web/lib/wenfan-conversation-history.test.ts
Normal file
54
apps/web/lib/wenfan-conversation-history.test.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import {
|
||||
createWenfanConversationRecord,
|
||||
deleteWenfanConversationRecord,
|
||||
updateWenfanConversationRecord,
|
||||
} from './wenfan-conversation-history';
|
||||
|
||||
type TestMessage = {
|
||||
role: 'assistant' | 'user';
|
||||
content?: string;
|
||||
};
|
||||
|
||||
const introMessage: TestMessage = {
|
||||
role: 'assistant',
|
||||
content: '我是问翻小宝',
|
||||
};
|
||||
|
||||
test('createWenfanConversationRecord creates history only from the new conversation action', () => {
|
||||
const record = createWenfanConversationRecord('conv-1', [introMessage]);
|
||||
|
||||
assert.equal(record.id, 'conv-1');
|
||||
assert.equal(record.title, '新对话');
|
||||
assert.deepEqual(record.messages, [introMessage]);
|
||||
});
|
||||
|
||||
test('updateWenfanConversationRecord updates an existing conversation without adding a question record', () => {
|
||||
const record = createWenfanConversationRecord('conv-1', [introMessage]);
|
||||
const messages: TestMessage[] = [
|
||||
introMessage,
|
||||
{ role: 'user', content: '怎么新建产品?' },
|
||||
{ role: 'assistant', content: '产品创建帮助' },
|
||||
{ role: 'user', content: '怎么新建项目?' },
|
||||
];
|
||||
|
||||
const next = updateWenfanConversationRecord([record], 'conv-1', messages);
|
||||
|
||||
assert.equal(next.length, 1);
|
||||
assert.equal(next[0]?.title, '怎么新建产品?');
|
||||
assert.deepEqual(next[0]?.messages, messages);
|
||||
});
|
||||
|
||||
test('updateWenfanConversationRecord does not create history when there is no active conversation', () => {
|
||||
const messages: TestMessage[] = [introMessage, { role: 'user', content: '怎么新建产品?' }];
|
||||
|
||||
assert.deepEqual(updateWenfanConversationRecord([], null, messages), []);
|
||||
});
|
||||
|
||||
test('deleteWenfanConversationRecord removes a conversation history item', () => {
|
||||
const first = createWenfanConversationRecord('conv-1', [introMessage]);
|
||||
const second = createWenfanConversationRecord('conv-2', [introMessage]);
|
||||
|
||||
assert.deepEqual(deleteWenfanConversationRecord([first, second], 'conv-1'), [second]);
|
||||
});
|
||||
Reference in New Issue
Block a user