From b5284ce18e229ac5f063dd2c26ac7f1c76bd2460 Mon Sep 17 00:00:00 2001 From: hubian <908234780@qq.com> Date: Mon, 13 Apr 2026 17:36:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=90=9C=E7=B4=A2=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E6=8C=81=E4=B9=85=E5=8C=96=E4=BF=9D=E5=AD=98=EF=BC=8C=E5=88=B7?= =?UTF-8?q?=E6=96=B0=E9=A1=B5=E9=9D=A2=E5=90=8E=E5=8E=86=E5=8F=B2=E5=AF=B9?= =?UTF-8?q?=E8=AF=9D=E4=B9=9F=E6=98=BE=E7=A4=BA=E6=90=9C=E7=B4=A2=E7=BB=93?= =?UTF-8?q?=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 用户消息 extra_data 存储搜索结果 - API 返回消息时包含 extra_data - 前端 displayHistory 处理历史搜索结果显示 --- main_v2.py | 7 +++++-- templates/index.html | 23 ++++++++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/main_v2.py b/main_v2.py index 994e84c..eb7c60d 100644 --- a/main_v2.py +++ b/main_v2.py @@ -648,6 +648,7 @@ async def get_messages(conversation_id: str, db: Session = Depends(get_db)): "role": m.role, "content": m.content, "thinking_content": m.thinking_content, # v2新增 + "extra_data": m.extra_data, # 包含搜索结果等 "source": m.source, "agent_id": m.agent_id, # v2新增 "model_used": m.model_used, # v2新增 @@ -807,6 +808,7 @@ async def websocket_endpoint(websocket: WebSocket, user_id: str): # 4. 执行搜索并发送搜索结果 search_context = None + search_results_for_client = None # 用于发送给前端和保存 logger.info(f"检查搜索条件: agent_tools={agent_tools}, disabled_tools={disabled_tools}") if 'search' in agent_tools and 'search' not in disabled_tools: @@ -888,12 +890,13 @@ async def websocket_endpoint(websocket: WebSocket, user_id: str): 'duration_ms': duration_ms }) - # 5. 保存用户消息到数据库 + # 5. 保存用户消息到数据库(包含搜索结果) user_msg = conv_service.add_message( conversation_id=conversation.id, role='user', content=message, - source='web' + source='web', + extra_data={'search_results': search_results_for_client, 'search_query': message} if search_results_for_client else None ) # 6. 获取对话历史(包含刚保存的用户消息) diff --git a/templates/index.html b/templates/index.html index fd1f968..c8dfb1d 100644 --- a/templates/index.html +++ b/templates/index.html @@ -622,7 +622,28 @@ function displayHistory(messages) { const container = document.getElementById('messagesContainer'); container.innerHTML = ''; - messages.forEach(m => appendMessage(m.role, m.content, m.thinking_content)); + messages.forEach(m => { + appendMessage(m.role, m.content, m.thinking_content); + // 如果用户消息有搜索结果,追加显示 + if (m.role === 'user' && m.extra_data && m.extra_data.search_results) { + displaySearchResultsForHistory(m.extra_data.search_results, m.extra_data.search_query || m.content); + } + }); + } + + function displaySearchResultsForHistory(results, query) { + if (!results || results.length === 0) return; + + const container = document.getElementById('messagesContainer'); + const userMessages = container.querySelectorAll('.message.user'); + const lastUserMsg = userMessages[userMessages.length - 1]; + + if (lastUserMsg) { + const msgBody = lastUserMsg.querySelector('.message-body'); + if (msgBody) { + msgBody.innerHTML += buildSearchResultsHtml(results, query); + } + } } function clearMessages() {