From 610215c990237eddd03d0bf010ccdda0cbd3fe5d Mon Sep 17 00:00:00 2001 From: ILoveBingLu Date: Tue, 3 Mar 2026 03:27:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=B6=88=E6=81=AF=E5=8E=BB=E9=87=8D=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E4=BD=BF=E7=94=A8=E5=A4=9A=E7=BB=B4=20Key=20?= =?UTF-8?q?=E4=BB=A5=E6=8F=90=E9=AB=98=E5=87=86=E7=A1=AE=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/ChatPage.tsx | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/pages/ChatPage.tsx b/src/pages/ChatPage.tsx index 42b49fa..625dde4 100644 --- a/src/pages/ChatPage.tsx +++ b/src/pages/ChatPage.tsx @@ -529,10 +529,18 @@ function ChatPage(_props: ChatPageProps) { const cleanup = window.electronAPI.chat.onNewMessages((data: { sessionId: string; messages: Message[] }) => { if (data.sessionId === currentSessionId && data.messages && data.messages.length > 0) { setMessages((prev: Message[]) => { - // 使用 sortSeq 去重 - const newMsgs = data.messages.filter((nm: Message) => - !prev.some((pm: Message) => pm.sortSeq === nm.sortSeq) + // 使用与后端一致的多维 Key (serverId + localId + createTime + sortSeq) 进行去重 + const existingKeys = new Set( + prev.map(pm => `${pm.serverId}-${pm.localId}-${pm.createTime}-${pm.sortSeq}`) ) + + const newMsgs = data.messages.filter(nm => { + const key = `${nm.serverId}-${nm.localId}-${nm.createTime}-${nm.sortSeq}` + if (existingKeys.has(key)) return false + existingKeys.add(key) + return true + }) + if (newMsgs.length === 0) return prev return [...prev, ...newMsgs]