# 3-15 [done] 垃圾箱 workbench 残留 `pollMs=1000` 触发 Convex query 风险 > 创建时间:2026-05-17 > > 更新时间:2026-05-17 > > 状态:`done` ## 问题 主页面树实时链路已在 `57ec8322` 切到 WebSocket push,但 `/trash` 渲染的垃圾箱 workbench 仍创建 `EventSource('/api/tree/events')` 并显式设置 `pollMs=1000`。 这条路径不是首页主链路,但用户打开垃圾箱页面或弹窗后,仍可能把 `/api/tree/events` 带回 1 秒轮询语义,重新放大 Convex `POST /api/query` 压力。 ## 处理方案 1. 为 `/trash` 渲染测试增加断言:垃圾箱 workbench 不得输出 `pollMs=1000`。 2. 修改垃圾箱 workbench 事件订阅,移除显式 `pollMs=1000`。 3. 保留 `EventSource('/api/tree/events')` 作为兼容刷新通道,让 Rust SSE route 使用当前 push-driven 默认行为。 4. 运行 `mnote-web` 相关单测,确认渲染输出不再包含旧轮询参数。 ## 处理结果 - 已移除 `rust/crates/mnote-web/src/routes/gateway.rs` 中垃圾箱 workbench 的 `url.searchParams.set('pollMs', '1000')`。 - 已保留 `/api/tree/events` 事件通道,避免破坏垃圾箱打开后根据 tree event 刷新的兼容行为。 - 已增加测试断言,确保 `/trash?workspaceId=...` HTML 不再输出 `pollMs`。 ## 验证 ```bash cargo test --manifest-path rust/Cargo.toml -p mnote-web routes::gateway::tests::trash_entry_renders_real_workspace_trash_workbench -- --nocapture ``` 结果:`1 passed`。 ```bash cargo test --manifest-path rust/Cargo.toml -p mnote-web routes::gateway::tests:: -- --nocapture ``` 结果:`18 passed`。 ```bash cargo test --manifest-path rust/Cargo.toml -p mnote-web routes::sse::tests::live_poll_query_drops_bridge_pagination_cursor -- --nocapture cargo test --manifest-path rust/Cargo.toml -p mnote-web routes::sse::tests::sse_route_returns_workspace_snapshot_event -- --nocapture ``` 结果:两个 SSE 单测均 `1 passed`。 ## 备注 整组 `routes::sse::tests::` 批量运行时,两个长连接流测试超过 60 秒未自然结束,已中断;本次改动未触碰 SSE route 行为,已用相关短测试和 `gateway` 渲染测试覆盖本缺陷。