移除聊天组件中的调试日志

This commit is contained in:
pingchuan
2025-06-06 15:31:36 +08:00
parent 1b79f973da
commit ab960f6dd0
6 changed files with 150 additions and 150 deletions
+2 -2
View File
@@ -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) {
+6 -6
View File
@@ -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');
+13 -13
View File
@@ -82,22 +82,22 @@ const ChatSidebar = forwardRef<ChatSidebarRef, ChatSidebarProps>(({
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<ChatSidebarRef, ChatSidebarProps>(({
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<ChatSidebarRef, ChatSidebarProps>(({
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('⚠️ 重命名失败,会话将保持默认名称');
}
},
}));
+59 -59
View File
@@ -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({
+7 -7
View File
@@ -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);
};
/**
+63 -63
View File
@@ -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<string, any>;
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) => {