# Batch B Worker A：Resource Open Resolver Convergence

项目根目录：`/mnt/Data1T/mnote`

你不是单独在代码库里工作，可能有其他 worker 并行执行。不要回滚、覆盖或格式化与你任务无关的文件；不要提交 git。

## 目标

推进 `design/05-editor-mainline/process/5-26-resource-open-resolver-convergence-checklist-v1.md`：

- 审查并尽量收敛正文附件与 FileTree asset 的资源打开分流。
- 重点看 `rust/crates/mnote-web/src/routes/web_shell.rs` 中：
  - `resolveResourceOpen`
  - 正文附件编辑 / 新窗口编辑相关函数
  - FileTree asset open / edit-mode 相关路径
- 保持当前已验证行为：
  - 正文附件“弹窗编辑”应在 main resource tab 打开。
  - 正文附件“新窗口编辑”应在浏览器新窗口打开。
  - `.md` / text / code 继续走 tiptap / text/code 路径，不要改成 OnlyOffice。

## 允许修改范围

- `rust/crates/mnote-web/src/routes/web_shell.rs`
- `design/05-editor-mainline/process/5-26-resource-open-resolver-convergence-checklist-v1.md`
- 如确有必要，可新增或修改 `scripts/task48*-resource-open-resolver-*.js`。

不要修改其他 Rust 核心文件；如发现需要修改，请在 final.md 中提出建议。

## 验收命令

至少运行：

```bash
cargo test -p mnote-web sidebar_tree_runtime_opens_office_assets_through_resource_shell -- --test-threads=1
node --check scripts/task463-onlyoffice-resolver-smoke.js
```

如果新增 smoke，运行 `node --check`。

## 输出要求

最终说明：

- 修改了哪些文件。
- 是否实际实现了 helper / resolver 收敛，还是只给出审查结论。
- 验证命令和结果。
- 保留的风险和未完成项。

