oudecheng c749df4e0a fix(web): WebSocket 断连时清理流式状态,防止重连后消息串流
流式优化引入的回归风险:当 WebSocket 在流式输出中途断连时,
streamingRef(contentChunks/index)不会被重置。重连后新消息的
delta 会通过 s.index >= 0 分支追加到旧消息的错误位置。

修复链路:useWebSocket 的 onDisconnect 回调 → useChat 的
finishStreaming → useMessages 的 finishStreaming(重置 ref +
flush pending chunks)。

- useMessages.ts: 在 UseMessagesReturn 接口和 return 对象暴露
  finishStreaming(原为内部函数)
- useChat.ts: 在返回对象透传 finishStreaming
- App.tsx: useWebSocket 调用新增 onDisconnect 回调触发 finishStreaming
- useChat.test.ts: 新增用例 17 验证断连后新 delta 不污染旧消息
2026-08-07 08:33:48 +08:00
..