Files
mnote/.codex/reasonix-tasks/results/batch-c-worker-b-gfm-tail.md
T

4.2 KiB
Raw Blame History

Batch C Worker BGFM AST 尾项小包

执行日期:2026-05-21 执行人:Reasonix Code (deepseek-v4-flash)


修改文件列表

文件 操作 说明
rust/crates/mnote-web/src/routes/local_markdown_parser.rs 编辑 新增 2 个解析测试
rust/crates/mnote-web/src/routes/local_folder_source.rs 编辑 给 3 个写侧函数加过渡注释
rust/crates/mnote-web/src/routes/web_shell.rs 编辑 测试断言扩展 + JS 适配层过渡注释
design/03-rust-web/process/3-13-rust-web-local-markdown-gfm-ast-parser-migration-v1.md 编辑 更新 checklist 状态
.codex/reasonix-tasks/results/batch-c-worker-b-gfm-tail.md 新建 本报告文件

关闭/追认的 3-13 尾项

11.2 空表格单元格 / 空引用块处理规则

  • 追加测试 markdown_empty_blockquote_parse:验证 > / > 输出 type=quote, content=[]
  • 追加测试 markdown_table_empty_cells_parse:验证空表头/数据单元格的 paragraph.content[]
  • 行为固定为 comrak 默认输出,不再无规则

11.4 legacy→Tiptap→legacy marks 不丢 marks

  • document_shell_bootstrap_preserves_inline_mark_conversion 原仅断言 code / link
  • 已扩展断言bold, italic, underline, strike, code, link 全部 6 种 core marks 的 JS 生成代码均存在于 HTML 中

11.8 web shell 单测:legacy↔Tiptap 不丢 marks

  • 同上 — 测试名称不变但断言已补全

11.9 手写 parser 标记为过渡实现

  • inline_nodes_to_markdownlocal_folder_source.rs:7004):加中文过渡注释
  • editor_blocks_to_markdown_for_filelocal_folder_source.rs:6221):加中文过渡注释
  • editor_blocks_to_markdown_with_rewritelocal_folder_source.rs:6393):加中文过渡注释

📌 11.9 web_shell.rs 临时适配分支

  • 未删除,但加了过渡注释 // 过渡适配(TODO step-4
  • 完整标记了 legacyStylesToTiptapMarks / legacyMarkArrayToTiptapMarks / mergeTiptapMarks / legacyInlineContentToTiptap 四函数组的迁移计划

验证命令与结果

命令 1local_markdown 测试组

cargo test --manifest-path rust/Cargo.toml -p mnote-web local_markdown -- --test-threads=1

结果:30 passed, 0 failed

新测试确认通过:

  • routes::local_markdown_parser::tests::markdown_empty_blockquote_parse
  • routes::local_markdown_parser::tests::markdown_table_empty_cells_parse

命令 2web_shell 测试组

cargo test --manifest-path rust/Cargo.toml -p mnote-web web_shell -- --test-threads=1

结果:10 passed, 0 failed

核心测试确认通过:

  • routes::web_shell::tests::document_shell_bootstrap_preserves_inline_mark_conversion

未完成项与风险

未完成项(保持 [ ] 状态)

说明 原因
11.2 标题优先级 frontmatter > H1 > 文件名 任务明确排除 本包不做 frontmatter title 优先级修复
11.6 降级策略测试 仅部分完成 列对齐已追认、空单元格已补测试;但 unsupported → paragraph 等降级策略无专项测试
11.7 保存失败状态保留 未触及 需要前端侧 error handler + 状态保留测试,属不同责任域
11.9 web_shell.rs 临时适配分支移除 未删除 仅加过渡注释 — JS 侧函数仍需等 Step 4 才能移除
11.9 process→done 未移动 以上 [ ] 项全部关闭后执行

风险

  1. 空单元格解析层 vs 回写层行为可能不一致:解析层测试已验证空的 paragraph.content = [],但回写侧 editor_blocks_to_markdown_with_rewrite 对空单元格的处理未覆盖测试(它的流程是 inline_nodes_to_markdown → 空字符串 → .trim().to_string() → 空 → replace('\n', " ") → 保持空)。建议后续补 save 侧空单元格 round-trip 测试。
  2. 过渡注释不产生编译期警告:当前使用普通 // 注释而非 #[deprecated],不会在编译时提醒迁移。如要严格追踪,建议未来 Step 4 前统一加 #[deprecated(note = "...")]
  3. 新加但未整体编译验证:两个测试组均通过,但未执行 cargo test -p mnote-web 全量。局部风险较低。