Files
cc-web/.trellis/tasks/10-14-session-switch-timeout/findings.md

17 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 调查发现
- 继承调查确认切换经 WebSocket load_session,服务端 handleLoadSession。
- 前端 12 秒释放遮罩、45 秒取消请求;目前尚未有请求级日志证实现场根因。
- 浏览器显示 OPEN 不等于连接可收发;后台会话 running 与页面连接状态独立。
- 待核查:切换请求在重连后的恢复、晚到响应、loadSession 渲染异常以及历史读取异常。
- 用户拒绝继续只补重试、重连和日志;此次交付改为 HTTP 首屏及分页、WebSocket 独立实时订阅。
- 不能断言 WebSocket 必然超时;已证实架构把历史读取与单条长连接绑定,原日志不能确认每次现场超时的唯一原因。
- 已确认目录连续分页和单条定位也发送 load_history_page,必须一并迁移。
- 新契约:GET /api/sessions/:id(首屏12条及运行态快照)、GET /api/sessions/:id/history?before=...(24条);subscribe_session 只绑定实时连接,按修订号检测读取与订阅之间的提交变化。
- HTTP 查询不协调跨会话、不清未读、不扫描原生日志;实时订阅清未读并协调跨会话。归档异常不能吞成404;仅缺失会话返回404。
- 可复现证据:隔离 Firefox 将 WS 业务帧黑洞化且保留 OPEN,首屏和运行输出仍经 HTTP 显示;主动断 WS、拒绝重连后仍可切换和查看。
- HTTP 读取已完成但尚未订阅时,任务可能刚好完成;订阅比较历史修订并触发 HTTP 对账。已经接到 done 后的旧快照也须按完成版本重新读取,防止生成状态复活。
- 除首屏外,目录、定位和手动分页全部迁移;只改首屏会遗留同类连接依赖。
- 错误归类:跨层契约和隐含连接假设。重试/重连只能改善连接恢复,不会取消历史查询对长连接的依赖。新回归直接注入假 OPEN 和消息交错,避免只验证 ws.send 被调用。
- 范围限制:同步磁盘及 JSON 处理未整体异步化;旧版存储自身迁移仍由存储层负责,不能把通道拆分描述为所有服务端阻塞都已解决。