116 lines
4.5 KiB
Markdown
116 lines
4.5 KiB
Markdown
# 1-11 [done] Batch D P1 小尾项执行 checklist v1
|
||||
|
|
|
|||
|
|
> 创建时间:2026-05-21
|
|||
|
|
>
|
|||
|
|
> 当前状态:`DONE`
|
|||
|
|
>
|
|||
|
|
> 目标:把 P1 阶段剩余的两个最小尾项拆成可独立执行的小批次,避免继续在大而散的 process 文档中发散:
|
|||
|
|
> 1. 资源打开 resolver 收敛
|
|||
|
|
> 2. 本地 Markdown 页面标题优先级收口
|
|||
|
|
>
|
|||
|
|
> 上位依据:
|
|||
|
|
> - `/mnt/Data1T/mnote/design/01-tree-first-graph-kernel/process/1-8-mvp-post-process-execution-order-v1.md`
|
|||
|
|
> - `/mnt/Data1T/mnote/design/05-editor-mainline/process/5-26-resource-open-resolver-convergence-checklist-v1.md`
|
|||
|
|
> - `/mnt/Data1T/mnote/design/03-rust-web/process/3-13-rust-web-local-markdown-gfm-ast-parser-migration-v1.md`
|
|||
|
|
> - `/mnt/Data1T/mnote/design/01-tree-first-graph-kernel/process/1-6-next-phase-gap-closure-checklist-v1.md`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. 执行顺序
|
|||
|
|
|
|||
|
|
先跑资源打开收敛,再跑 Markdown 标题优先级。
|
|||
|
|
|
|||
|
|
- 资源打开收敛影响面更窄,且可通过现有 smoke 快速确认。
|
|||
|
|
- Markdown 标题优先级属于读侧口径收口,改动点更集中,但会影响 page tree / aggregate 的标题展示,因此单独成批。
|
|||
|
|
|
|||
|
|
不要把这两个尾项和 open editors、filetree action、BufferStore conflict UI、AI 主线混在同一轮 worker 中。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. Batch D1:资源打开 resolver 收敛
|
|||
|
|
|
|||
|
|
### 2.1 目标
|
|||
|
|
|
|||
|
|
继续对照 Sidex editor input resolver,把正文附件、FileTree asset、new-window、active-tab 的资源打开策略收敛到更一致的 helper 和断言。
|
|||
|
|
|
|||
|
|
### 2.2 允许修改范围
|
|||
|
|
|
|||
|
|
- `rust/crates/mnote-web/src/ssr/pages/layout.rs`
|
|||
|
|
- `scripts/task463-onlyoffice-resolver-smoke.js`
|
|||
|
|
- `design/05-editor-mainline/process/5-26-resource-open-resolver-convergence-checklist-v1.md`
|
|||
|
|
|
|||
|
|
### 2.3 禁止事项
|
|||
|
|
|
|||
|
|
- 不修改 `rust/crates/mnote-web/src/routes/web_shell.rs`
|
|||
|
|
- 不修改 `rust/crates/mnote-web/src/routes/onlyoffice.rs`
|
|||
|
|
- 不修改 ACP / Hermes 相关文件
|
|||
|
|
- 不破坏文件树 edit-mode active tab 已验证行为
|
|||
|
|
- 不把 `md/text/code` 改成 OnlyOffice 默认打开
|
|||
|
|
|
|||
|
|
### 2.4 Checklist
|
|||
|
|
|
|||
|
|
- [ ] 审查 `buildLocalOnlyOfficeOpenUrl`、`openEditorAttachmentEditTab`、`openConvexAssetFromFileTree` 与正文附件 open path 的重复判断。
|
|||
|
|
- [ ] 提炼最小 helper,优先减少正文附件与 FileTree 的分歧。
|
|||
|
|
- [ ] 保持正文附件 `弹窗编辑` 进入 main resource tab。
|
|||
|
|
- [ ] 保持正文附件 `新窗口编辑` 进入浏览器新窗口。
|
|||
|
|
- [ ] 保持 `md/text/code` 继续走 tiptap / 内建编辑器。
|
|||
|
|
- [ ] 更新或补充 smoke 断言,覆盖正文附件编辑模式分流。
|
|||
|
|
|
|||
|
|
### 2.5 验收
|
|||
|
|
|
|||
|
|
- `cargo test -p mnote-web sidebar_tree_runtime_opens_office_assets_through_resource_shell -- --test-threads=1`
|
|||
|
|
- `node scripts/task463-onlyoffice-resolver-smoke.js`
|
|||
|
|
|
|||
|
|
### 2.6 完成条件
|
|||
|
|
|
|||
|
|
这一批完成后,可以把 `5-26` 中对应重复判断项打勾,并保留剩余未完成项在原文。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. Batch D2:Markdown 标题优先级收口
|
|||
|
|
|
|||
|
|
### 3.1 目标
|
|||
|
|
|
|||
|
|
把本地 Markdown 页面标题口径收口为:
|
|||
|
|
|
|||
|
|
> frontmatter title > 第一条 H1 > 文件名
|
|||
|
|
|
|||
|
|
当前 `parse_markdown_page` 仍只按文件名生成标题,需要补齐前两级优先级,但不能破坏 `mnote_id / path-id` 相关行为。
|
|||
|
|
|
|||
|
|
### 3.2 允许修改范围
|
|||
|
|
|
|||
|
|
- `rust/crates/mnote-web/src/routes/local_markdown_parser.rs`
|
|||
|
|
- `rust/crates/mnote-web/src/routes/local_folder_source.rs`
|
|||
|
|
|
|||
|
|
### 3.3 禁止事项
|
|||
|
|
|
|||
|
|
- 不改 resource lifecycle / trash / open resolver 行为
|
|||
|
|
- 不改 Page Aggregate 的 identity 规则
|
|||
|
|
- 不引入新的大解析层或额外 adapter
|
|||
|
|
- 不把标题优先级改回前端补丁
|
|||
|
|
|
|||
|
|
### 3.4 Checklist
|
|||
|
|
|
|||
|
|
- [ ] 为 `parse_markdown_page` 增加 frontmatter title 优先级。
|
|||
|
|
- [ ] 若 frontmatter 没有 title,则回退到正文第一条 H1。
|
|||
|
|
- [ ] 若都没有,再回退到文件名 stem。
|
|||
|
|
- [ ] 保持 page_id / document_id / path-id 规则不变。
|
|||
|
|
- [ ] 更新现有标题相关测试,避免继续断言“标题只取文件名”。
|
|||
|
|
- [ ] 补一个最小回归测试,覆盖 frontmatter / H1 / 文件名三层优先级。
|
|||
|
|
|
|||
|
|
### 3.5 验收
|
|||
|
|
|
|||
|
|
- `cargo test -p mnote-web local_markdown -- --test-threads=1`
|
|||
|
|
|
|||
|
|
### 3.6 完成条件
|
|||
|
|
|
|||
|
|
这一批完成后,可以把 `3-13` 中标题相关尾项打勾,并继续保留其余 GFM AST 迁移尾项为 `process`。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. 本轮执行记录
|
|||
|
|
|
|||
|
|
- 2026-05-21:已将 P1 剩余尾项拆为 `Batch D1`(资源打开 resolver 收敛)与 `Batch D2`(Markdown 标题优先级收口)。
|
|||
|
|
- 2026-05-21:这两个批次都保持最小 scope,不与 open editors、BufferStore conflict UI、AI 主线混跑。
|
|||
|
|
- 2026-05-21:两项都已完成并经 Rust 单测、task474 / task463 浏览器 smoke 与 CodeGraph 同步复核,现归档到 `done/`。
|