fix: 流结束后手动插入RAG来源到DOM,解决历史中不显示的问题
ragSources 在流结束后才添加到消息对象,但 assistant 消息 DOM 已由流式更新创建, renderMessages 只追加新消息不会重新渲染已有元素。 直接在流结束后将 RAG 来源 HTML 插入到 msg-body 中。
This commit is contained in:
@@ -508,6 +508,21 @@ ${ragContext}
|
||||
updateLastAssistantMessage(assistantContent, thinkContent || null, finalStats, modelName || null);
|
||||
}
|
||||
|
||||
// 流结束后插入 RAG 来源到现有 DOM(renderMessages 不会重新渲染已有消息)
|
||||
if (ragSources && ragSources.length > 0) {
|
||||
const lastAssistant = document.querySelector('#messagesContainer .message.assistant:last-of-type');
|
||||
if (lastAssistant) {
|
||||
const sourcesHtml = ragSources.map((s, i) => {
|
||||
const scorePercent = s.score ? `${(s.score * 100).toFixed(0)}%` : '';
|
||||
return `<div class="rag-source-item"><span class="rag-source-name">📄 来源 ${i + 1}: ${escapeHtml(s.filename)}</span>${scorePercent ? `<span class="rag-source-score">${scorePercent}</span>` : ''}</div>`;
|
||||
}).join('');
|
||||
const ragDiv = document.createElement('div');
|
||||
ragDiv.className = 'rag-sources';
|
||||
ragDiv.innerHTML = `<div class="rag-sources-header">🧠 基于知识库回答</div>${sourcesHtml}`;
|
||||
lastAssistant.querySelector('.msg-body').appendChild(ragDiv);
|
||||
}
|
||||
}
|
||||
|
||||
await saveCurrentSession();
|
||||
|
||||
} catch (err) {
|
||||
|
||||
Reference in New Issue
Block a user