关键改动: - 增加问翻小宝会话历史记录规则与测试 - 优化帮助搜索、兜底建议和页面交互结构 - 更新帮助截图资产和截图采集脚本 Co-Authored-By: Codex GPT-5 <codex@openai.com>
54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
export type WenfanHistoryMessage = {
|
|
role: string;
|
|
content?: string;
|
|
};
|
|
|
|
export type WenfanConversationRecord<TMessage extends WenfanHistoryMessage> = {
|
|
id: string;
|
|
title: string;
|
|
messages: TMessage[];
|
|
};
|
|
|
|
const DEFAULT_CONVERSATION_TITLE = '新对话';
|
|
|
|
function getConversationTitle<TMessage extends WenfanHistoryMessage>(messages: TMessage[]): string {
|
|
const firstQuestion = messages.find((message) => message.role === 'user' && message.content?.trim());
|
|
return firstQuestion?.content?.trim() || DEFAULT_CONVERSATION_TITLE;
|
|
}
|
|
|
|
export function createWenfanConversationRecord<TMessage extends WenfanHistoryMessage>(
|
|
id: string,
|
|
messages: TMessage[],
|
|
): WenfanConversationRecord<TMessage> {
|
|
return {
|
|
id,
|
|
title: getConversationTitle(messages),
|
|
messages,
|
|
};
|
|
}
|
|
|
|
export function updateWenfanConversationRecord<TMessage extends WenfanHistoryMessage>(
|
|
records: WenfanConversationRecord<TMessage>[],
|
|
activeId: string | null | undefined,
|
|
messages: TMessage[],
|
|
): WenfanConversationRecord<TMessage>[] {
|
|
if (!activeId) return records;
|
|
|
|
return records.map((record) =>
|
|
record.id === activeId
|
|
? {
|
|
...record,
|
|
title: getConversationTitle(messages),
|
|
messages,
|
|
}
|
|
: record,
|
|
);
|
|
}
|
|
|
|
export function deleteWenfanConversationRecord<TMessage extends WenfanHistoryMessage>(
|
|
records: WenfanConversationRecord<TMessage>[],
|
|
id: string,
|
|
): WenfanConversationRecord<TMessage>[] {
|
|
return records.filter((record) => record.id !== id);
|
|
}
|