Files
memind/docs/pending-fixes/h5-local-soak-20260706.md
T
john 14a00774d9 feat(h5): web 联网能力、实时查询路由与 session Finish 对齐
- 新增 web 能力并挂载 platform/web(web_search/fetch_url)
- 实时查询强制 web skill,router fallback 与 await session Finish
- Session Broker 覆盖率/指标、stream replay 与相关单测/E2E 脚本

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-06 16:06:26 +08:00

89 lines
3.5 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.
# 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 # 场景 54c
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」 | 23s 回复;无永久 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 完成后再定