mirror of
https://github.com/panatgithub/AnkiHeadingSync.git
synced 2026-07-22 17:10:28 +00:00
- 将 marker、state、writeback 的 durable identity 改为 noteId - Switch marker, state, and writeback durable identity to noteId - 支持满足标题规则的旧 ID 卡片重接进并按当前 renderer 重渲染 - Reconnect legacy ID cards that match heading rules and rerender them with the current renderer - 补充 schema migration、测试、构建验证与插件同步 - Add schema migration, tests, build verification, and plugin sync
3 KiB
3 KiB
兼容性矩阵
维度矩阵
| 维度 | 旧卡现状 | 当前 manual-sync 要求 | 当前兼容性 | 说明 |
|---|---|---|---|---|
| Markdown marker 识别 | <!--ID: noteId--> |
<!-- AHS:card=... note=... --> |
不兼容 | 当前 parser 完全不识别旧 marker |
| 首次 identity 建立 | 只有 noteId |
需要 cardId 或已存在的 pluginState |
不兼容 | 没有 cardId 就会生成新身份 |
| 旧状态利用 | data.json 里可能还有 syncRegistry |
manual-sync 只看 pluginState |
不兼容 | 旧 registry 不会自动转成新状态 |
rawBlockHash 一致性 |
旧 marker 是正文最后一行的一部分 | 新主链只会剥离 AHS marker 再算 hash | 不兼容 | 直接扫描旧文件时,legacy marker 会进入 hash |
| 首次 diff 规划 | 旧卡应被认领为已有 note | resolvedNoteId 为空就 toCreate |
不兼容 | 直接运行会建重复卡 |
| Markdown 写回效果 | 理想上应替换旧 marker | 当前 write-back 只会写 AHS marker | 有风险 | 不做迁移时会出现旧 marker + 新 marker 并存 |
| Note model | 旧样本 live note 为 问答题 |
当前配置的 QA note type 为 问答题 |
兼容 | 无需 note type 迁移 |
| 字段映射 | 旧样本 live note 为 正面 / 背面 |
当前映射也是 正面 / 背面 |
兼容 | 无需字段结构转换 |
| Deck 语义 | 旧样本使用 wikilink deck 名 | 当前 deck normalization 保留 segment 原文 | 兼容 | deck 不是阻塞点 |
| Tag 利用 | 旧卡常带 Obsidian_to_Anki |
当前主链不使用 tag 认领 | 条件兼容 | tag 适合审计,不适合作为主 identity |
| 字段渲染风格 | 旧卡 front/back 含旧式 Obsidian 链接 | 当前渲染使用 Open in Obsidian backlink |
条件兼容 | 接管后字段可能被归一 |
| 一次性迁移可行性 | Markdown 已含精确 noteId | 新状态可容纳 cardId -> noteId |
兼容 | 可以通过一次迁移把旧身份翻译成新身份 |
结果分层
直接兼容的维度
- note model
- 字段映射
- deck 名字与 deck 提示
阻塞直接接管的维度
- marker 识别
- 首次 identity 建立
- 旧状态复用
- 首次 diff 规划
- 直接写回行为
只有迁移后才兼容的维度
cardId -> noteId状态落盘- 新 marker 写回
- 后续 normal sync 的稳定更新与改 deck
四种结论类别映射
| 结论类别 | 与当前证据的匹配度 | 判断 |
|---|---|---|
| 可直接接管 | 低 | 否 |
| 可接管,但必须先做一次迁移写回 | 高 | 是 |
| 不可安全接管,只能导入为新卡 | 中 | 否,除非某些块缺 noteId 或 note 已丢失 |
| 需要双 marker 过渡期 | 低到中 | 否,当前证据不要求双 marker 才能安全完成迁移 |
最核心的矩阵结论
如果只看 Anki 侧数据模型,旧卡与当前主链是兼容的。
如果看 identity 进入主链的入口,旧卡与当前主链是不兼容的。
所以真正的系统级判断不是“不能接管”,而是“不能直接接管,但可以通过一次显式迁移接管”。