# H5 Session 本地 Soak 测试 > **状态:自动化已通过(2026-07-06 14:57);手工场景待 john 账号验证** > 分支:`0706-bug干净` · 禁止 merge main / 上 103 / commit(除非另行指令) ## 前置 ```bash # .env 建议全开(勿提交 Git) MEMIND_SESSION_BROKER_ENABLED=1 MEMIND_SESSION_BROKER_METRICS=1 # 场景 8 MEMIND_ROUTER_NORMALIZED_DECISION=1 MEMIND_SSE_EVENT_TAXONOMY=1 MEMIND_RUN_STREAM_REPLAY=1 MEMIND_SESSION_STREAM_REPLAY=1 # 场景 5(4c) MEMIND_H5_HTML_FINISH_GUARD=1 pnpm dev # 访问 http://127.0.0.1:5173/ 全屏聊天 ``` **2026-07-06 检查**:本地 `.env` 已有 5 个开关,**缺少** `MEMIND_SESSION_STREAM_REPLAY`、`MEMIND_SESSION_BROKER_METRICS`。 手工测场景 5/8 前请补上并 **重启 `pnpm dev`**。 **DB**:已执行 `migrateSchema`,`h5_session_stream_events` 表已创建。若 dev 在迁移前启动,需重启后 4c store 才会注入。 --- ## 自动化验收(2026-07-06 14:57) | 命令 | 结果 | |------|------| | `npm run verify:h5-session-patches` | ✅ pass(含单测 + broker coverage + goosed boundary + publish guards) | | `npm run verify:chat-finish-sync` | ✅ pass | | `npm run verify:mindspace-page-sync-guards` | ✅ pass | | `node scripts/check-session-broker-coverage.mjs` | ✅ pass | | `node scripts/check-goosed-proxy-boundary.mjs` | ✅ pass | | 本地服务探活 `5173` / `8081` | ✅ HTTP 200 | | `h5_session_stream_events` 表 | ✅ 迁移后存在 | ### 历史数据辅助(john,近 2h intent_routed) | 指标 | 值 | |------|-----| | 采样条数 | 10 | | router timeout fallback | 2/10(睡前故事、讲笑话各 1 次) | | 其余 | `source: llm`,路由正常 | > 自动化**不能**替代场景 1–8 的浏览器/DevTools 验证。 --- ## 测试账号 | 用户 | 用途 | |------|------| | john | 主 soak 账号(已有 session 历史) | ## 场景清单 | # | 场景 | 操作 | 预期 | 结果 | 备注 | |---|------|------|------|------|------| | 1 | 普通 direct_chat | 「讲一个睡前故事吧」 | ~7s 内整段回复;loading 点消失 | ☐ 待人工 | 历史:7.1s,曾 router timeout | | 2 | 简单 hi | 「hi」 | 2–3s 回复;无永久 loading | ☐ 待人工 | Finish 竞态 | | 3 | agent 生成页 | 「帮我生成一个唐诗页面…」 | agent 路径;Finish 后 public HTML 落盘 | ☐ 待人工 | publish guards 已自动化 ✅ | | 4 | run SSE 重连 | 发消息 → DevTools 断网 3s → 恢复 | run events 从 Last-Event-ID 补发 | ☐ 待人工 | 4b,需 `MEMIND_RUN_STREAM_REPLAY=1` | | 5 | session SSE 重连 | 流式回复中断网 | 重连后 merge,不盲覆盖 | ☐ 待人工 | 4c,需补 `MEMIND_SESSION_STREAM_REPLAY=1` + 重启 dev | | 6 | MindSpace 小窗 | `/?preview=mindspace` 发消息 | 同全屏,Finish 不丢消息 | ☐ 待人工 | | | 7 | Router 稳定性 | 连发笑话/写诗/故事各 1 条 | 无频繁 1500ms timeout fallback | ☐ 待人工 | 历史 2/10 timeout;快路径已合入未 soak | | 8 | Broker metrics | 403 访问他人 session | Portal 日志含 `[session_broker.ownership.denied]` | ☐ 待人工 | 需 `MEMIND_SESSION_BROKER_METRICS=1` | ## 记录模板(每条失败场景填写) ```text 场景 #: 时间: sessionId / runId: 现象: Network / Console: 是否 blocker: ``` ## 结论(手工测试后填写) - **自动化闸门**:✅ 通过(2026-07-06) - **整体 soak**:☐ 待人工 - **blocker 列表**:(暂无) - **是否可进入 merge main 讨论**:等手工场景 1–8 完成后再定