Skip to content

fix(rag): 客户端中断时收尾流式消息 - #57

Merged
Snailclimb merged 1 commit into
Snailclimb:masterfrom
xujiantop-crypto:fix/rag-stream-cancel-persistence
Oct 8, 2026
Merged

Snailclimb merged 1 commit into
Snailclimb:masterfrom
xujiantop-crypto:fix/rag-stream-cancel-persistence

Conversation

@xujiantop-crypto

Copy link
Copy Markdown
Contributor

问题

RAG SSE 流当前只在正常完成或异常时更新 AI 消息。浏览器取消请求、切页或网络中断会产生 Reactor CANCEL 信号,既不会触发 doOnComplete,也不会触发 doOnError,导致:

  • 已生成的部分回答没有落库;
  • AI 消息占位会一直保持未完成状态。

修改

  • 在流式链路中处理取消信号;
  • 已收到分片时保存部分回答;
  • 首个分片前取消时保存 【已中断】回答生成已取消,结束消息占位;
  • 增加控制器单元测试,覆盖上述两个取消时机。

验证

  • ./gradlew :app:test --tests interview.guide.modules.knowledgebase.RagChatControllerTest --no-daemon
  • ./gradlew :app:test --no-daemon

以上测试均通过(Java 25)。

@Snailclimb
Snailclimb merged commit 3c4de0d into Snailclimb:master Oct 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants