refactor: modularize portal server and harden session recovery
This commit is contained in:
@@ -21,6 +21,7 @@ Portal 对 SSE 帧使用本地持久化游标。该游标可能是 Portal 生成
|
||||
- `session-stream.mjs`
|
||||
- `session-stream-store.mjs`
|
||||
- `tkmind-proxy.mjs`
|
||||
- `server/portal-session-routes.mjs`(Portal Session 路由、流中 public HTML 落盘与 Finish 后同步)
|
||||
- `src/hooks/useTKMindChat.ts`
|
||||
|
||||
## 回归测试
|
||||
|
||||
@@ -38,7 +38,8 @@
|
||||
| 位置 | 行为 |
|
||||
|------|------|
|
||||
| `src/hooks/useTKMindChat.ts` | `syncSessionMessages` 用 `mergeConversationSnapshot`,**禁止**盲覆盖;服务端条数不足时按 `FINISH_SYNC_RETRY_DELAYS_MS` 重试 |
|
||||
| `server.mjs` | Session snapshot 缓存仅在 `hint_mc` **且** `hint_ua` 均提供且匹配时命中 |
|
||||
| `server/portal-session-routes.mjs` | Session snapshot 缓存仅在 `hint_mc` **且** `hint_ua` 均提供且匹配时命中 |
|
||||
| `server.mjs` | 必须通过 `attachPortalSessionRoutes` 组合 Session 路由并注入 snapshot / proxy 依赖 |
|
||||
| `conversation-display.mjs` + `src/utils/message.ts` | 用户消息无 `displayText` 时,用 `deriveUserFacingText` 剥掉 routing / skill / 用户身份前缀 |
|
||||
| `chat-finish-sync.mjs` | 纯函数 merge 逻辑(被 TS 与单测共用) |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user