From ab960f6dd03e195d94d87d64d1ac9f02c5162296 Mon Sep 17 00:00:00 2001 From: pingchuan <1259732256@qq.com> Date: Fri, 6 Jun 2025 15:31:36 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E8=81=8A=E5=A4=A9=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E4=B8=AD=E7=9A=84=E8=B0=83=E8=AF=95=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/chat/index.tsx | 4 +- app/components/chat/markdown.tsx | 12 +-- app/components/chat/sidebar.tsx | 26 +++---- app/hooks/use-chat-message.ts | 118 ++++++++++++++--------------- app/hooks/use-conversation.ts | 14 ++-- app/services/api.client.ts | 126 +++++++++++++++---------------- 6 files changed, 150 insertions(+), 150 deletions(-) diff --git a/app/components/chat/index.tsx b/app/components/chat/index.tsx index 68a7b64..0e1a6b9 100644 --- a/app/components/chat/index.tsx +++ b/app/components/chat/index.tsx @@ -389,7 +389,7 @@ export default function Chat() { (async () => { try { - console.log('🚀 开始初始化聊天应用...'); + // console.log('🚀 开始初始化聊天应用...'); // 并行获取会话列表和应用参数 const [conversationData, appParams] = await Promise.all([ @@ -441,7 +441,7 @@ export default function Chat() { } setInited(true); - console.log('✅ 聊天应用初始化完成'); + // console.log('✅ 聊天应用初始化完成'); } catch (e: any) { console.error('❌ 初始化失败:', e); if (e.status === 404) { diff --git a/app/components/chat/markdown.tsx b/app/components/chat/markdown.tsx index 412635b..3eb51af 100644 --- a/app/components/chat/markdown.tsx +++ b/app/components/chat/markdown.tsx @@ -17,12 +17,12 @@ interface MarkdownProps { * 使用 react-markdown 库进行标准 Markdown 解析,支持流式渲染 */ export default function Markdown({ content, className = '' }: MarkdownProps) { - console.log('🎨 [Markdown] 渲染组件:', { - contentLength: content?.length || 0, - contentPreview: content?.substring(0, 100) + (content && content.length > 100 ? '...' : ''), - className, - hasContent: !!content - }); + // console.log('🎨 [Markdown] 渲染组件:', { + // contentLength: content?.length || 0, + // contentPreview: content?.substring(0, 100) + (content && content.length > 100 ? '...' : ''), + // className, + // hasContent: !!content + // }); if (!content) { console.log('⚠️ [Markdown] 内容为空,返回null'); diff --git a/app/components/chat/sidebar.tsx b/app/components/chat/sidebar.tsx index eef8abf..5e48317 100644 --- a/app/components/chat/sidebar.tsx +++ b/app/components/chat/sidebar.tsx @@ -82,22 +82,22 @@ const ChatSidebar = forwardRef(({ setDeleteLoading(true); try { - console.log('🗑️ 开始删除会话:', deletingConversation.id); + // console.log('🗑️ 开始删除会话:', deletingConversation.id); // 调用API删除服务器端的会话 const response = await deleteConversation(deletingConversation.id); - console.log('✅ 服务器端会话删除响应:', response); + // console.log('✅ 服务器端会话删除响应:', response); // 检查响应是否成功 if (response && (response as any).result === 'success') { - console.log('✅ 服务器端会话删除成功'); + // console.log('✅ 服务器端会话删除成功'); message.success('会话删除成功'); setDeleteModalVisible(false); // 通知父组件会话已删除 onConversationDeleted?.(deletingConversation.id); - console.log('✅ 会话删除完成:', deletingConversation.id); + // console.log('✅ 会话删除完成:', deletingConversation.id); } else { throw new Error((response as any)?.error || '删除会话失败'); } @@ -130,22 +130,22 @@ const ChatSidebar = forwardRef(({ setRenameLoading(true); try { - console.log('✏️ 开始重命名会话:', { conversationId: renamingConversation.id, newName: newName.trim() }); + // console.log('✏️ 开始重命名会话:', { conversationId: renamingConversation.id, newName: newName.trim() }); // 调用API重命名服务器端的会话 const response = await renameConversation(renamingConversation.id, newName.trim(), false); - console.log('✅ 服务器端会话重命名响应:', response); + // console.log('✅ 服务器端会话重命名响应:', response); // 检查响应是否成功 if (response && (response as any).name) { - console.log('✅ 服务器端会话重命名成功'); + // console.log('✅ 服务器端会话重命名成功'); message.success('重命名成功'); setRenameModalVisible(false); // 通知父组件会话已重命名 onConversationRenamed?.(renamingConversation.id, (response as any).name); - console.log('✅ 会话重命名完成:', renamingConversation.id, '->', (response as any).name); + // console.log('✅ 会话重命名完成:', renamingConversation.id, '->', (response as any).name); } else { throw new Error((response as any)?.error || '重命名会话失败'); } @@ -213,27 +213,27 @@ const ChatSidebar = forwardRef(({ useImperativeHandle(ref, () => ({ autoRename: async (conversationId: string) => { try { - console.log('🏷️ 开始自动重命名会话为"新对话":', conversationId); + // console.log('🏷️ 开始自动重命名会话为"新对话":', conversationId); // 调用API将会话重命名为固定的"新对话" const response = await renameConversation(conversationId, '新对话', false); - console.log('✅ 服务器端会话重命名响应:', response); + // console.log('✅ 服务器端会话重命名响应:', response); // 检查响应是否成功 if (response && (response as any).name) { - console.log('✅ 服务器端会话重命名成功'); + // console.log('✅ 服务器端会话重命名成功'); // 通知父组件会话已重命名 onConversationRenamed?.(conversationId, (response as any).name); - console.log('✅ 会话重命名完成:', conversationId, '->', (response as any).name); + // console.log('✅ 会话重命名完成:', conversationId, '->', (response as any).name); } else { throw new Error((response as any)?.error || '重命名会话失败'); } } catch (error) { console.error('❌ 重命名会话失败:', error); // 重命名失败时不显示错误消息,避免打扰用户 - console.warn('⚠️ 重命名失败,会话将保持默认名称'); + // console.warn('⚠️ 重命名失败,会话将保持默认名称'); } }, })); diff --git a/app/hooks/use-chat-message.ts b/app/hooks/use-chat-message.ts index 32850f1..7fcfa6a 100644 --- a/app/hooks/use-chat-message.ts +++ b/app/hooks/use-chat-message.ts @@ -61,27 +61,27 @@ export default function useChatMessage({ questionItem: ChatItem, originalResponseId?: string ) => { - console.log('🔄 [useChatMessage] 更新聊天列表:', { - responseItemId: responseItem.id, - responseContentLength: responseItem.content.length, - responsePreview: responseItem.content.substring(0, 50) + (responseItem.content.length > 50 ? '...' : ''), - originalResponseId, - questionId, - placeholderAnswerId - }); + // console.log('🔄 [useChatMessage] 更新聊天列表:', { + // responseItemId: responseItem.id, + // responseContentLength: responseItem.content.length, + // responsePreview: responseItem.content.substring(0, 50) + (responseItem.content.length > 50 ? '...' : ''), + // originalResponseId, + // questionId, + // placeholderAnswerId + // }); setChatList(produce(getChatList(), (draft) => { - console.log('📝 [useChatMessage] 当前聊天列表:', draft.map(item => ({ - id: item.id, - contentLength: item.content.length, - contentPreview: item.content.substring(0, 20) + (item.content.length > 20 ? '...' : ''), - isAnswer: item.isAnswer - }))); + // console.log('📝 [useChatMessage] 当前聊天列表:', draft.map(item => ({ + // id: item.id, + // contentLength: item.content.length, + // contentPreview: item.content.substring(0, 20) + (item.content.length > 20 ? '...' : ''), + // isAnswer: item.isAnswer + // }))); // 移除占位符 const placeholderIndex = draft.findIndex(item => item.id === placeholderAnswerId); if (placeholderIndex !== -1) { - console.log('🗑️ [useChatMessage] 移除占位符:', placeholderAnswerId, 'at index:', placeholderIndex); + // console.log('🗑️ [useChatMessage] 移除占位符:', placeholderAnswerId, 'at index:', placeholderIndex); draft.splice(placeholderIndex, 1); } @@ -94,12 +94,12 @@ export default function useChatMessage({ // 更新或添加响应 - 考虑ID可能已经改变的情况 let responseIndex = draft.findIndex(item => item.id === responseItem.id); - console.log('🔍 [useChatMessage] 查找响应索引 (当前ID):', { responseItemId: responseItem.id, responseIndex }); + // console.log('🔍 [useChatMessage] 查找响应索引 (当前ID):', { responseItemId: responseItem.id, responseIndex }); // 如果找不到当前ID的响应,尝试查找原始ID if (responseIndex === -1 && originalResponseId) { responseIndex = draft.findIndex(item => item.id === originalResponseId); - console.log('🔍 [useChatMessage] 查找响应索引 (原始ID):', { originalResponseId, responseIndex }); + // console.log('🔍 [useChatMessage] 查找响应索引 (原始ID):', { originalResponseId, responseIndex }); } // 如果找不到任何匹配的响应,查找最后一个AI回答 @@ -108,30 +108,30 @@ export default function useChatMessage({ item.isAnswer && index > draft.findIndex(q => q.id === questionId) ); - console.log('🔍 [useChatMessage] 查找响应索引 (最后AI回答):', { responseIndex }); + // console.log('🔍 [useChatMessage] 查找响应索引 (最后AI回答):', { responseIndex }); } if (responseIndex !== -1) { - console.log('✏️ [useChatMessage] 更新现有响应:', { - responseIndex, - oldContentLength: draft[responseIndex].content.length, - newContentLength: responseItem.content.length - }); + // console.log('✏️ [useChatMessage] 更新现有响应:', { + // responseIndex, + // oldContentLength: draft[responseIndex].content.length, + // newContentLength: responseItem.content.length + // }); draft[responseIndex] = { ...responseItem }; } else { - console.log('➕ [useChatMessage] 添加新响应:', { - responseId: responseItem.id, - contentLength: responseItem.content.length - }); + // console.log('➕ [useChatMessage] 添加新响应:', { + // responseId: responseItem.id, + // contentLength: responseItem.content.length + // }); draft.push({ ...responseItem }); } - console.log('📝 [useChatMessage] 更新后聊天列表:', draft.map(item => ({ - id: item.id, - contentLength: item.content.length, - contentPreview: item.content.substring(0, 20) + (item.content.length > 20 ? '...' : ''), - isAnswer: item.isAnswer - }))); + // console.log('📝 [useChatMessage] 更新后聊天列表:', draft.map(item => ({ + // id: item.id, + // contentLength: item.content.length, + // contentPreview: item.content.substring(0, 20) + (item.content.length > 20 ? '...' : ''), + // isAnswer: item.isAnswer + // }))); })); }, [getChatList, setChatList]); @@ -269,27 +269,27 @@ export default function useChatMessage({ // 发送消息 await sendChatMessage(data, { onData: (message: string, isFirstMessage: boolean, { conversationId: newConversationId, messageId, taskId }) => { - console.log('📨 [useChatMessage] 收到流式数据:', { - messageLength: message.length, - message: message.substring(0, 100) + (message.length > 100 ? '...' : ''), - isFirstMessage, - messageId, - newConversationId, - taskId, - isAgentMode, - currentContentLength: responseItem.content.length - }); + // console.log('📨 [useChatMessage] 收到流式数据:', { + // messageLength: message.length, + // message: message.substring(0, 100) + (message.length > 100 ? '...' : ''), + // isFirstMessage, + // messageId, + // newConversationId, + // taskId, + // isAgentMode, + // currentContentLength: responseItem.content.length + // }); if (!isAgentMode) { // 累积消息内容 const oldContent = responseItem.content; responseItem.content = responseItem.content + message; - console.log('📝 [useChatMessage] 累积消息内容:', { - oldLength: oldContent.length, - newLength: responseItem.content.length, - addedLength: message.length, - preview: responseItem.content.substring(0, 50) + '...' - }); + // console.log('📝 [useChatMessage] 累积消息内容:', { + // oldLength: oldContent.length, + // newLength: responseItem.content.length, + // addedLength: message.length, + // preview: responseItem.content.substring(0, 50) + '...' + // }); } else { const lastThought = responseItem.agent_thoughts?.[responseItem.agent_thoughts?.length - 1]; if (lastThought) { @@ -340,16 +340,16 @@ export default function useChatMessage({ // originalResponseId // }); - console.log('🔄 [useChatMessage] 准备调用updateCurrentQA:', { - responseItemId: responseItem.id, - responseContentLength: responseItem.content.length, - responsePreview: responseItem.content.substring(0, 100) + (responseItem.content.length > 100 ? '...' : ''), - questionId, - placeholderAnswerId, - originalResponseId, - isAgentMode, - agentThoughtsCount: responseItem.agent_thoughts?.length || 0 - }); + // console.log('🔄 [useChatMessage] 准备调用updateCurrentQA:', { + // responseItemId: responseItem.id, + // responseContentLength: responseItem.content.length, + // responsePreview: responseItem.content.substring(0, 100) + (responseItem.content.length > 100 ? '...' : ''), + // questionId, + // placeholderAnswerId, + // originalResponseId, + // isAgentMode, + // agentThoughtsCount: responseItem.agent_thoughts?.length || 0 + // }); // 更新当前问答(使用防抖) updateCurrentQA({ diff --git a/app/hooks/use-conversation.ts b/app/hooks/use-conversation.ts index f8751e5..8f9294f 100644 --- a/app/hooks/use-conversation.ts +++ b/app/hooks/use-conversation.ts @@ -113,7 +113,7 @@ export default function useConversation() { isSetToLocalStorage = true, newConversationName = '' ) => { - console.log('🔄 设置当前会话ID:', { id, appId, isSetToLocalStorage }); + // console.log('🔄 设置当前会话ID:', { id, appId, isSetToLocalStorage }); doSetCurrConversationId(id); @@ -130,18 +130,18 @@ export default function useConversation() { globalThis.localStorage?.setItem(storageConversationIdKey, JSON.stringify(conversationIdInfo)); - console.log('💾 会话ID已保存到localStorage:', { - appUrlKey, - conversationId: id, - fullStorage: conversationIdInfo - }); + // console.log('💾 会话ID已保存到localStorage:', { + // appUrlKey, + // conversationId: id, + // fullStorage: conversationIdInfo + // }); } catch (error) { console.error('保存会话ID到本地存储失败:', error); } } // 不进行URL导航,保持单页面应用模式 - console.log('✅ 会话切换完成,当前会话ID:', id); + // console.log('✅ 会话切换完成,当前会话ID:', id); }; /** diff --git a/app/services/api.client.ts b/app/services/api.client.ts index f2465bc..1b39c40 100644 --- a/app/services/api.client.ts +++ b/app/services/api.client.ts @@ -122,11 +122,11 @@ const handleStream = ( onNodeFinished?: IOnNodeFinished, onError?: IOnError, ) => { - console.log('🌊 [handleStream] 开始处理流式响应:', { - status: response.status, - statusText: response.statusText, - headers: Object.fromEntries(response.headers.entries()) - }); + // console.log('🌊 [handleStream] 开始处理流式响应:', { + // status: response.status, + // statusText: response.statusText, + // headers: Object.fromEntries(response.headers.entries()) + // }); if (!response.ok) { console.error('❌ [handleStream] 响应错误:', response.status, response.statusText); @@ -141,19 +141,19 @@ const handleStream = ( let isFirstMessage = true; let messageCount = 0; - console.log('📖 [handleStream] 获取reader:', !!reader); + // console.log('📖 [handleStream] 获取reader:', !!reader); function read() { let hasError = false; reader?.read().then((result: any) => { - console.log('📨 [handleStream] 读取数据块:', { - done: result.done, - valueLength: result.value?.length, - messageCount: ++messageCount - }); + // console.log('📨 [handleStream] 读取数据块:', { + // done: result.done, + // valueLength: result.value?.length, + // messageCount: ++messageCount + // }); if (result.done) { - console.log('✅ [handleStream] 流式响应完成, 总消息数:', messageCount); + // console.log('✅ [handleStream] 流式响应完成, 总消息数:', messageCount); onCompleted && onCompleted(); return; } @@ -162,31 +162,31 @@ const handleStream = ( buffer += chunk; const lines = buffer.split('\n'); - console.log('🔍 [handleStream] 处理数据块:', { - chunkLength: chunk.length, - bufferLength: buffer.length, - linesCount: lines.length, - chunk: chunk.substring(0, 100) + (chunk.length > 100 ? '...' : '') - }); + // console.log('🔍 [handleStream] 处理数据块:', { + // chunkLength: chunk.length, + // bufferLength: buffer.length, + // linesCount: lines.length, + // chunk: chunk.substring(0, 100) + (chunk.length > 100 ? '...' : '') + // }); try { lines.forEach((message, index) => { if (message.startsWith('data: ')) { const jsonStr = message.substring(6); - console.log(`📋 [handleStream] 解析消息 ${index}:`, { - jsonLength: jsonStr.length, - preview: jsonStr.substring(0, 200) + (jsonStr.length > 200 ? '...' : '') - }); + // console.log(`📋 [handleStream] 解析消息 ${index}:`, { + // jsonLength: jsonStr.length, + // preview: jsonStr.substring(0, 200) + (jsonStr.length > 200 ? '...' : '') + // }); try { bufferObj = JSON.parse(jsonStr) as Record; - console.log('✨ [handleStream] JSON解析成功:', { - event: bufferObj.event, - hasAnswer: !!bufferObj.answer, - answerLength: bufferObj.answer?.length || 0, - conversationId: bufferObj.conversation_id, - messageId: bufferObj.id || bufferObj.message_id - }); + // console.log('✨ [handleStream] JSON解析成功:', { + // event: bufferObj.event, + // hasAnswer: !!bufferObj.answer, + // answerLength: bufferObj.answer?.length || 0, + // conversationId: bufferObj.conversation_id, + // messageId: bufferObj.id || bufferObj.message_id + // }); } catch (e) { console.warn('⚠️ [handleStream] JSON解析失败:', e, 'JSON:', jsonStr); @@ -218,14 +218,14 @@ const handleStream = ( if (bufferObj.event === 'message' || bufferObj.event === 'agent_message') { const answer = unicodeToChar(bufferObj.answer); - console.log('💬 [handleStream] 处理消息事件:', { - event: bufferObj.event, - isFirstMessage, - answerLength: answer.length, - answer: answer.substring(0, 50) + (answer.length > 50 ? '...' : ''), - conversationId: bufferObj.conversation_id, - messageId: bufferObj.id || bufferObj.message_id - }); + // console.log('💬 [handleStream] 处理消息事件:', { + // event: bufferObj.event, + // isFirstMessage, + // answerLength: answer.length, + // answer: answer.substring(0, 50) + (answer.length > 50 ? '...' : ''), + // conversationId: bufferObj.conversation_id, + // messageId: bufferObj.id || bufferObj.message_id + // }); onData(answer, isFirstMessage, { conversationId: bufferObj.conversation_id, @@ -234,44 +234,44 @@ const handleStream = ( }); isFirstMessage = false; } else if (bufferObj.event === 'agent_thought' && onThought) { - console.log('🤔 [handleStream] 处理思考事件:', bufferObj.event); + // console.log('🤔 [handleStream] 处理思考事件:', bufferObj.event); onThought(bufferObj as ThoughtItem); } else if (bufferObj.event === 'message_file' && onFile) { - console.log('📁 [handleStream] 处理文件事件:', bufferObj.event); + // console.log('📁 [handleStream] 处理文件事件:', bufferObj.event); onFile(bufferObj as VisionFile); } else if (bufferObj.event === 'message_end' && onMessageEnd) { - console.log('🏁 [handleStream] 处理消息结束事件:', bufferObj.event); + // console.log('🏁 [handleStream] 处理消息结束事件:', bufferObj.event); onMessageEnd(bufferObj as MessageEnd); } else if (bufferObj.event === 'message_replace' && onMessageReplace) { - console.log('🔄 [handleStream] 处理消息替换事件:', bufferObj.event); + // console.log('🔄 [handleStream] 处理消息替换事件:', bufferObj.event); onMessageReplace(bufferObj as MessageReplace); } else if (bufferObj.event === 'workflow_started' && onWorkflowStarted) { - console.log('🚀 [handleStream] 处理工作流开始事件:', bufferObj.event); + // console.log('🚀 [handleStream] 处理工作流开始事件:', bufferObj.event); onWorkflowStarted(bufferObj as WorkflowStartedResponse); } else if (bufferObj.event === 'workflow_finished' && onWorkflowFinished) { - console.log('🎯 [handleStream] 处理工作流完成事件:', bufferObj.event); + // console.log('🎯 [handleStream] 处理工作流完成事件:', bufferObj.event); onWorkflowFinished(bufferObj as WorkflowFinishedResponse); } else if (bufferObj.event === 'node_started' && onNodeStarted) { - console.log('🔗 [handleStream] 处理节点开始事件:', bufferObj.event); + // console.log('🔗 [handleStream] 处理节点开始事件:', bufferObj.event); onNodeStarted(bufferObj as NodeStartedResponse); } else if (bufferObj.event === 'node_finished' && onNodeFinished) { - console.log('✅ [handleStream] 处理节点完成事件:', bufferObj.event); + // console.log('✅ [handleStream] 处理节点完成事件:', bufferObj.event); onNodeFinished(bufferObj as NodeFinishedResponse); } else { - console.log('❓ [handleStream] 未知事件类型:', bufferObj.event); + // console.log('❓ [handleStream] 未知事件类型:', bufferObj.event); } } else if (message.trim()) { - console.log('📝 [handleStream] 非data消息:', message.substring(0, 100)); + // console.log('📝 [handleStream] 非data消息:', message.substring(0, 100)); } }); // 保留最后一行(可能是不完整的消息) const lastLine = lines[lines.length - 1]; buffer = lastLine; - console.log('💾 [handleStream] 保留缓冲区:', { - lastLineLength: lastLine.length, - preview: lastLine.substring(0, 50) - }); + // console.log('💾 [handleStream] 保留缓冲区:', { + // lastLineLength: lastLine.length, + // preview: lastLine.substring(0, 50) + // }); } catch (err) { console.error('❌ [handleStream] 解析响应时出错:', err); @@ -286,10 +286,10 @@ const handleStream = ( } if (!hasError) { - console.log('🔄 [handleStream] 继续读取下一块...'); + // console.log('🔄 [handleStream] 继续读取下一块...'); read(); } else { - console.log('🛑 [handleStream] 因错误停止读取'); + // console.log('🛑 [handleStream] 因错误停止读取'); } }).catch(err => { console.error('❌ [handleStream] 读取流时出错:', err); @@ -348,11 +348,11 @@ const baseFetch = (url: string, fetchOptions: any, needAllResponseContent: boole .then((res: Response) => { const resClone = res.clone(); - console.log('📥 API Response:', { - status: res.status, - statusText: res.statusText, - url: urlWithPrefix - }); + // console.log('📥 API Response:', { + // status: res.status, + // statusText: res.statusText, + // url: urlWithPrefix + // }); // 错误处理 if (!/^(2|3)\d{2}$/.test(res.status.toString())) { @@ -456,11 +456,11 @@ export const ssePost = ( return fetch(urlWithPrefix, options) .then((res: Response) => { - console.log('📡 SSE Response:', { - status: res.status, - statusText: res.statusText, - url: urlWithPrefix - }); + // console.log('📡 SSE Response:', { + // status: res.status, + // statusText: res.statusText, + // url: urlWithPrefix + // }); if (!/^(2|3)\d{2}$/.test(res.status.toString())) { res.json().then((data: any) => {