[dev]resources

This commit is contained in:
susie-laptop 2025-04-27 19:46:10 -04:00
parent 72a51d5059
commit 5502bd579c

View File

@ -2,11 +2,11 @@ import React, { useState, useEffect, useRef } from 'react';
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
import { resetSendMessageStatus, addMessage, updateMessage } from '../../store/chat/chat.slice'; import { resetSendMessageStatus, addMessage, updateMessage } from '../../store/chat/chat.slice';
import { showNotification } from '../../store/notification.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 SvgIcon from '../../components/SvgIcon';
import SafeMarkdown from '../../components/SafeMarkdown'; import SafeMarkdown from '../../components/SafeMarkdown';
import ResourceList from '../../components/ResourceList'; import ResourceList from '../../components/ResourceList';
import { sendChatMessageViaWebSocket, processChatWebSocketMessage } from '../../services/websocket'; import { sendChatMessageViaWebSocket } from '../../services/websocket';
export default function ChatWindow({ chatId, knowledgeBaseId }) { export default function ChatWindow({ chatId, knowledgeBaseId }) {
const dispatch = useDispatch(); const dispatch = useDispatch();
@ -222,9 +222,12 @@ export default function ChatWindow({ chatId, knowledgeBaseId }) {
console.log('发送消息参数:', requestBody); console.log('发送消息参数:', requestBody);
// WebSocket // WebSocketAIID -
const wsMessageId = `ws-${Date.now()}`;
let wsMessageContent = '';
// //
const userMessageId = Date.now().toString(); const userMessageId = `user-${Date.now()}`;
dispatch( dispatch(
addMessage({ addMessage({
id: userMessageId, id: userMessageId,
@ -234,10 +237,6 @@ export default function ChatWindow({ chatId, knowledgeBaseId }) {
}) })
); );
// WebSocketAIID -
const wsMessageId = `ws-${Date.now()}`;
let wsMessageContent = '';
// WebSocket // WebSocket
dispatch( dispatch(
addMessage({ addMessage({
@ -250,21 +249,23 @@ export default function ChatWindow({ chatId, knowledgeBaseId }) {
}) })
); );
// -
dispatch(
getChatResources({
dataset_id_list,
question: inputMessage,
messageId: wsMessageId, //
})
);
sendChatMessageViaWebSocket(requestBody, (data) => { sendChatMessageViaWebSocket(requestBody, (data) => {
try { try {
// //
//
if (data.message === '开始流式传输') {
console.log('WebSocket开始流式传输');
//
}
// //
if (data.message === 'partial') { if (data.message === 'partial') {
const newText = data.data.content || ''; const newText = data.data.content || '';
wsMessageContent += newText; wsMessageContent += newText;
wsMessageId = data.data.id;
// - 使React // - 使React
dispatch( dispatch(
updateMessage({ updateMessage({
@ -414,10 +415,11 @@ export default function ChatWindow({ chatId, knowledgeBaseId }) {
</span> </span>
)} )}
{/* 只在AI回复消息下方显示资源列表 */} {/* 只在AI回复消息下方显示资源列表,仅当有内容时显示 */}
{message.role === 'assistant' && {message.role === 'assistant' &&
!message.is_streaming && !message.is_streaming &&
resources.messageId === message.id && resources.messageId === message.id &&
resources.status === 'succeeded' &&
resources.items.length > 0 && ( resources.items.length > 0 && (
<ResourceList resources={resources.items} /> <ResourceList resources={resources.items} />
)} )}