聊天记录展示

This commit is contained in:
2025-10-15 18:55:01 +08:00
parent d984cb1457
commit 5714ae08bb
8 changed files with 285 additions and 137 deletions
+26 -14
View File
@@ -138,11 +138,11 @@ export class ChatController {
if (roleId && roleId > 0) {
ChatAIService.Instance.setCurrentRole(roleId);
// 从ChatHistoryManager加载对话记录到ChatModel中
this.loadDialogsFromHistory(roleId);
// 从ChatHistoryManager加载最近10条对话记录到ChatModel中
this.loadDialogsFromHistory(roleId, 10);
// 同步到DialogManager
//this.syncDialogData();
// 同步对话数据到DialogManager和UI
this.syncDialogData();
logger.log(`ChatController initialized with role ${roleId}`);
} else {
@@ -165,15 +165,15 @@ export class ChatController {
return false;
}
// 更新AI服务的当前角色
ChatAIService.Instance.setCurrentRole(roleId);
// 从ChatHistoryManager加载对话记录到ChatModel中
this.loadDialogsFromHistory(roleId);
// 从ChatHistoryManager加载最近10条对话记录到ChatModel中
this.loadDialogsFromHistory(roleId, 10);
// 同步对话数据到DialogManager
//this.syncDialogData();
// 同步对话数据到DialogManager和UI
this.syncDialogData();
logger.log(`ChatController switched to role ${roleId}`);
return true;
@@ -371,8 +371,9 @@ export class ChatController {
/**
* 从ChatHistoryManager加载对话记录到ChatModel中
* @param roleId 角色ID,不传则使用当前角色
* @param limit 加载消息数量限制,默认10条(0表示加载全部)
*/
public loadDialogsFromHistory(roleId?: number): void {
public loadDialogsFromHistory(roleId?: number, limit: number = 10): void {
const targetRoleId = roleId || this.chatModel.getCurrentRoleId();
if (!targetRoleId) {
logger.warn("Cannot load dialogs: no active role");
@@ -380,7 +381,15 @@ export class ChatController {
}
// 从ChatHistoryManager加载聊天记录
const chatHistory = ChatHistoryManager.Instance.loadHistory(targetRoleId);
let chatHistory = ChatHistoryManager.Instance.loadHistory(targetRoleId);
// 如果设置了限制,只取最近的N条消息
if (limit > 0 && chatHistory.length > limit) {
chatHistory = chatHistory.slice(-limit);
logger.log(
`Limited chat history to recent ${limit} messages for role ${targetRoleId}`
);
}
// 清空ChatModel中的对话记录
this.chatModel.clearDialogs(targetRoleId);
@@ -398,8 +407,8 @@ export class ChatController {
}
/**
* 同步ChatModel的对话数据到DialogManager
* 用于确保DialogManager和ChatModel的数据一致性
* 同步ChatModel的对话数据到DialogManager和UI
* 用于确保DialogManager和ChatModel的数据一致性,并更新UI显示
*/
public syncDialogData(): void {
if (!this.dialogManager || !this.chatModel.validate()) {
@@ -410,7 +419,10 @@ export class ChatController {
}
const dialogs = this.chatModel.getDialogs();
this.dialogManager.syncFromChatModel(dialogs);
// 使用loadHistoryDialogs方法加载历史对话到DialogManager
this.dialogManager.loadHistoryDialogs(dialogs);
logger.log(
`Synced ${dialogs.length} dialogs from ChatModel to DialogManager`
);