diff --git a/server/src/main/java/com/emotion/service/impl/ShortNovelServiceImpl.java b/server/src/main/java/com/emotion/service/impl/ShortNovelServiceImpl.java index 38f3cc9..ee90e46 100644 --- a/server/src/main/java/com/emotion/service/impl/ShortNovelServiceImpl.java +++ b/server/src/main/java/com/emotion/service/impl/ShortNovelServiceImpl.java @@ -307,6 +307,15 @@ public class ShortNovelServiceImpl implements ShortNovelService { long eventTimestamp = System.currentTimeMillis(); log.info("[ShortNovel SSE] 处理事件: type={}, timestamp={}", type, eventTimestamp); + // 从事件顶层取 session_id 同步 sessionId + // 上游事件结构与前端对齐:session_id 与 type 同级,不在 payload 内 + // 修复:首次 stream 里 status 处理从 payload 取不到 session_id,导致 currentSessionId 保持 null, + // 第一个 clarification_card 因 sessionId 为 null 不累积,详情页少显示第一个选项卡 + String topSessionId = event.getString("session_id"); + if (topSessionId != null && !topSessionId.isEmpty()) { + currentSessionId[0] = topSessionId; + } + // 拦截 status 事件,缓存 sessionId → originalQuery 映射(供 followup 兜底) if ("status".equals(type)) { JSONObject payload = event.getJSONObject("payload");