mirror of
https://github.com/Funkoala14/KnowledgeBase_OOIN.git
synced 2025-06-07 23:08:15 +08:00
[dev]resources
This commit is contained in:
parent
72a51d5059
commit
5502bd579c
@ -2,11 +2,11 @@ import React, { useState, useEffect, useRef } from 'react';
|
||||
import { useDispatch, useSelector } from 'react-redux';
|
||||
import { resetSendMessageStatus, addMessage, updateMessage } from '../../store/chat/chat.slice';
|
||||
import { showNotification } from '../../store/notification.slice';
|
||||
import { createChatRecord, fetchAvailableDatasets, fetchConversationDetail } from '../../store/chat/chat.thunks';
|
||||
import { fetchAvailableDatasets, fetchConversationDetail, getChatResources } from '../../store/chat/chat.thunks';
|
||||
import SvgIcon from '../../components/SvgIcon';
|
||||
import SafeMarkdown from '../../components/SafeMarkdown';
|
||||
import ResourceList from '../../components/ResourceList';
|
||||
import { sendChatMessageViaWebSocket, processChatWebSocketMessage } from '../../services/websocket';
|
||||
import { sendChatMessageViaWebSocket } from '../../services/websocket';
|
||||
|
||||
export default function ChatWindow({ chatId, knowledgeBaseId }) {
|
||||
const dispatch = useDispatch();
|
||||
@ -222,9 +222,12 @@ export default function ChatWindow({ chatId, knowledgeBaseId }) {
|
||||
|
||||
console.log('发送消息参数:', requestBody);
|
||||
|
||||
// 同时通过WebSocket发送消息(测试)
|
||||
// 创建WebSocket测试的AI回复消息ID - 必须先初始化
|
||||
const wsMessageId = `ws-${Date.now()}`;
|
||||
let wsMessageContent = '';
|
||||
|
||||
// 添加用户消息
|
||||
const userMessageId = Date.now().toString();
|
||||
const userMessageId = `user-${Date.now()}`;
|
||||
dispatch(
|
||||
addMessage({
|
||||
id: userMessageId,
|
||||
@ -234,10 +237,6 @@ export default function ChatWindow({ chatId, knowledgeBaseId }) {
|
||||
})
|
||||
);
|
||||
|
||||
// 创建WebSocket测试的AI回复消息ID - 必须先初始化
|
||||
const wsMessageId = `ws-${Date.now()}`;
|
||||
let wsMessageContent = '';
|
||||
|
||||
// 添加一个空白的临时消息用于WebSocket流式回复
|
||||
dispatch(
|
||||
addMessage({
|
||||
@ -250,21 +249,23 @@ export default function ChatWindow({ chatId, knowledgeBaseId }) {
|
||||
})
|
||||
);
|
||||
|
||||
// 获取聊天资源 - 在用户消息发送后立即请求资源
|
||||
dispatch(
|
||||
getChatResources({
|
||||
dataset_id_list,
|
||||
question: inputMessage,
|
||||
messageId: wsMessageId, // 将资源关联到助手消息
|
||||
})
|
||||
);
|
||||
|
||||
sendChatMessageViaWebSocket(requestBody, (data) => {
|
||||
try {
|
||||
// 根据消息类型处理不同的响应
|
||||
|
||||
// 处理开始流式传输的消息
|
||||
if (data.message === '开始流式传输') {
|
||||
console.log('WebSocket开始流式传输');
|
||||
// 消息已在上面创建,这里无需重复创建
|
||||
}
|
||||
|
||||
// 处理部分内容
|
||||
if (data.message === 'partial') {
|
||||
const newText = data.data.content || '';
|
||||
wsMessageContent += newText;
|
||||
|
||||
wsMessageId = data.data.id;
|
||||
// 更新消息内容 - 使用完全替换而不是追加,确保React检测到变化
|
||||
dispatch(
|
||||
updateMessage({
|
||||
@ -414,10 +415,11 @@ export default function ChatWindow({ chatId, knowledgeBaseId }) {
|
||||
</span>
|
||||
)}
|
||||
|
||||
{/* 只在AI回复消息下方显示资源列表 */}
|
||||
{/* 只在AI回复消息下方显示资源列表,仅当有内容时显示 */}
|
||||
{message.role === 'assistant' &&
|
||||
!message.is_streaming &&
|
||||
resources.messageId === message.id &&
|
||||
resources.status === 'succeeded' &&
|
||||
resources.items.length > 0 && (
|
||||
<ResourceList resources={resources.items} />
|
||||
)}
|
||||
|
Loading…
Reference in New Issue
Block a user