Persist PageTree expand state via control-plane view-state and align chevron/DOM with restored expansion; keep Sidex-style shallow page-tree scan and drop the unused recursive scanner that only added cargo noise. Add password vault workbench routes/runtime/skill/CLI, split page_ai_pi into a module package, and retire Hermes/ACP/OpenHub recycle + root harness evidence from the index while gitignoring recycle and local diag dumps. Archive superseded design/bugs docs under old/, point architecture at ARCHITECTURE.md, and refresh smokes for Pi S1–S7, vault, and editor regressions so the working tree can stay clean.
110 lines
5.3 KiB
Markdown
110 lines
5.3 KiB
Markdown
# [recycle] MNote 浏览器 QA 实测发现 2026-07-08
|
||
|
||
- **状态**:`process`
|
||
- **来源**:Agent Board Pi Taskflow 实测(MNote 浏览器 QA → Bug 文档 20260708-130503)
|
||
- **复现环境**:
|
||
- MNote Web:`http://127.0.0.1:3000`,Rust SSR + leptos-tiptap island
|
||
- 后端:control-plane libSQL local
|
||
- 浏览器:Playwright Chromium headless,viewport 1280×800
|
||
- 登录:测试账号 `mnote.e2e@example.com`,authMode=controlPlaneSession
|
||
- 工作区:`/mnt/Data1T/Mnote_data/users/mnote-e2e/workspaces/my-space`
|
||
|
||
---
|
||
|
||
## 1. 总体状态
|
||
|
||
| 检查项 | 结果 | 详情 |
|
||
|--------|------|------|
|
||
| API Gateway /health | ✅ PASS | 200 |
|
||
| Auth 页面加载 | ✅ PASS | 518ms |
|
||
| 测试账号快速登录 | ✅ PASS | 跳转到 `/` |
|
||
| Workspace 壳渲染 | ✅ PASS | sidebar / topbar / shell 均可见 |
|
||
| Page AI / OpenHub 页面 | ✅ PASS | 130ms 加载,AI 输入框可见 |
|
||
| Console 错误 | ✅ PASS | 0 errors |
|
||
| 业务网络错误 | ✅ PASS | 0 real errors(SSE abort 为预期导航行为) |
|
||
|
||
---
|
||
|
||
## 2. 发现的问题
|
||
|
||
### 2.1 `file-order.json` 页面排序索引为空
|
||
|
||
- **严重程度**:medium
|
||
- **实际结果**:`/mnt/Data1T/Mnote_data/users/mnote-e2e/workspaces/my-space/.mnote/file-order.json` 内容为 `{"parents": {}, "version": 1}`,无任何页面条目。
|
||
- **预期结果**:工作区中存在有效页面目录(`新页面054900`、`新页面145827`、`新页面233155`、`有机合成中的保护基` 等),每个目录下均有 `.md` 正文文件,file-order.json 应包含这些页面的排序条目。
|
||
- **证据**:
|
||
```bash
|
||
$ cat .mnote/file-order.json
|
||
{"parents": {}, "version": 1}
|
||
|
||
$ ls workspace/
|
||
新页面054900/ 新页面145827/ 新页面233155/ 有机合成中的保护基/
|
||
```
|
||
- **影响范围**:页面树(Page Tree)排序可能不正确,新建页面可能无法正确出现在侧边栏页面列表中。
|
||
- **建议修复方向**:检查页面创建/重命名/移动流程是否正确更新 `file-order.json`;检查 Pi lab 批量创建页面的流程是否绕过了正常的 metadata 写入路径。
|
||
|
||
### 2.2 `/api/tree/page-tree` 端点返回 404
|
||
|
||
- **严重程度**:low
|
||
- **实际结果**:`GET /api/tree/page-tree` 返回 HTTP 404。
|
||
- **预期结果**:应返回 200 或 401(需要认证),而非 404。
|
||
- **证据**:
|
||
```bash
|
||
$ curl -s -w "\nHTTP: %{http_code}" http://127.0.0.1:3000/api/tree/page-tree
|
||
HTTP: 404
|
||
```
|
||
- **影响范围**:直接调用此 API 的外部客户端或测试脚本会失败。前端使用 `GET /api/tree/view-state?treeKind=pagetree`(需要认证,已正常工作),当前不受影响。
|
||
- **建议修复方向**:确认 `/api/tree/page-tree` 是否为已废弃路由;若是,应在路由注册时返回 410 Gone 或转发到 view-state;若不是,应修复路由注册。
|
||
|
||
### 2.3 侧边栏中无 `a[href*="/document/"]` 格式的文档链接
|
||
|
||
- **严重程度**:low(待确认是否为预期行为)
|
||
- **实际结果**:Playwright selector `a[href*="/document/"]` 在侧边栏中找到 0 个元素。
|
||
- **预期结果**:侧边栏页面树中的页面应可点击跳转到文档页。
|
||
- **证据**:QA 脚本 `page.locator('a[href*="/document/"]').count()` 返回 0。
|
||
- **影响范围**:如果页面确实使用不同 URL 模式(如 `/page/...` 或前端路由),则无影响;否则侧边栏页面无法点击跳转。
|
||
- **建议修复方向**:确认当前侧边栏页面树使用的链接格式;如果是前端 SPA 路由(如 `data-page-id` + click handler),则更新测试 selector;如果是 bug,修复链接生成。
|
||
|
||
### 2.4 Dev 模式 hot-reload 轮询累积
|
||
|
||
- **严重程度**:low(仅 dev 模式)
|
||
- **实际结果**:多个 `GET /api/dev/hot-reload` 请求处于 pending 状态,随时间累积。
|
||
- **预期结果**:hot-reload 连接应复用或及时关闭,不应无限累积。
|
||
- **证据**:网络追踪显示 20+ 个 pending 的 `GET /api/dev/hot-reload` 请求。
|
||
- **影响范围**:仅影响开发模式下的浏览器性能和内存占用,不影响生产环境。
|
||
- **建议修复方向**:检查 hot-reload EventSource/WebSocket 连接的生命周期管理,确保旧连接在页面导航或重连时正确关闭。
|
||
|
||
---
|
||
|
||
## 3. 已验证无问题的路径
|
||
|
||
- Auth 登录流程:正常
|
||
- Workspace 壳渲染:正常
|
||
- Page AI / OpenHub 页面:正常加载
|
||
- API `/api/auth/session`:正常
|
||
- API `/api/tree/view-state`(需认证):正常
|
||
- API `/api/tree/projections/file/children`(需认证):正常
|
||
- SSE `/api/local-folder/events`:正常建立连接
|
||
- API `/api/page-ai/pi/status`:正常
|
||
- API `/api/ai-settings/effective`:正常
|
||
|
||
---
|
||
|
||
## 4. 测试脚本
|
||
|
||
QA 脚本位于:
|
||
- `/tmp/mnote-browser-qa-20260708.js`(基础检查)
|
||
- `/tmp/mnote-browser-qa-20260708-detail.js`(详细检查)
|
||
- `/tmp/mnote-browser-qa-comprehensive.js`(综合检查)
|
||
- `/tmp/mnote-network-trace.js`(网络追踪)
|
||
|
||
结果文件:
|
||
- `/tmp/mnote-browser-qa-20260708/result.json`
|
||
- `/tmp/mnote-browser-qa-20260708/result-detail.json`
|
||
- `/tmp/mnote-browser-qa-20260708/result-final.json`
|
||
|
||
截图:
|
||
- `/tmp/mnote-browser-qa-20260708/01-main-page.png`(Auth 页)
|
||
- `/tmp/mnote-browser-qa-20260708/02-after-login.png`(登录后 workspace)
|
||
- `/tmp/mnote-browser-qa-20260708/05-post-login-workspace.png`(workspace 页)
|