关键改动: - 增加问翻小宝会话历史记录规则与测试 - 优化帮助搜索、兜底建议和页面交互结构 - 更新帮助截图资产和截图采集脚本 Co-Authored-By: Codex GPT-5 <codex@openai.com>
55 lines
1.9 KiB
TypeScript
55 lines
1.9 KiB
TypeScript
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]);
|
|
});
|