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
4.6 KiB
4.6 KiB
兼容性样本对照表
样本边界
- 旧 Markdown 样本:
9Anki背诵/《城市居住区规划设计标准》图解2021年.md - 新 Markdown 样本:
999,试验卡片/课件2/卡片试验.md - 当前插件设置来源:
.obsidian/plugins/Anki Heading Sync/data.json - 当前 Anki 真值来源:
/tmp/ahs_compat_raw/*.json
Anki 侧样本发现快照
| 查询 | 返回结果 | 解释 |
|---|---|---|
findNotes tag:Obsidian_to_Anki |
返回大量 noteId,包含旧样本里的 1760624596099 等 noteId |
说明旧卡语料真实存在于当前 Anki 中 |
findNotes deck:"999,试验卡片::课件2::卡片试验" |
[1776515511480, 1776515511477] |
说明新链路样本 2 张卡也真实存在于当前 Anki 中 |
旧样本 5 张卡
| noteId | cardId | Markdown 标题 | Markdown marker | Markdown deck hint | Anki deck | model / tags | 字段形态摘要 | 样本结论 |
|---|---|---|---|---|---|---|---|---|
| 1760624596099 | 1760624596105 | 城市居住区,定义? | <!--ID: 1760624596099--> |
[[anki背诵]]::[[《城市居住区规划设计标准》图解2021年]] |
[[anki背诵]]::[[《城市居住区规划设计标准》图解2021年]] |
问答题 / Obsidian_to_Anki |
Front 含题目和 Obsidian 链接;Back 含块级 backlink + 正文 | noteId 在 Markdown 与 Anki 间可直接对上 |
| 1760624596121 | 1760624596122 | 居住区依据其居住人口规模,可分为几类? | <!--ID: 1760624596121--> |
同上 | 同上 | 问答题 / Obsidian_to_Anki |
Front 含题目与 Obsidian 链接;Back 为列表 HTML | 数据模型与当前设置兼容 |
| 1760624596130 | 1760624596131 | 十五分钟生活圈居住区?定义? | <!--ID: 1760624596130--> |
同上 | 同上 | 问答题 / Obsidian_to_Anki |
Back 含强调、标记、旧样式链接 | deck 与字段都能继续沿用 |
| 1760624596139 | 1760624596140 | 十分钟生活圈居住区?定义? | <!--ID: 1760624596139--> |
同上 | 同上 | 问答题 / Obsidian_to_Anki |
Back 含旧渲染 HTML,含强调与标记 | 接管后字段可能被新渲染归一 |
| 1760624596147 | 1760624596147 | 五分钟生活圈居住区 | <!--ID: 1760624596147--> |
同上 | 同上 | 问答题 / Obsidian_to_Anki |
Front 含题目与 Obsidian 链接;Back 为旧链路 HTML | 旧卡确有可认领的 live note |
新样本 2 张卡
| noteId | cardId | Markdown 标题 | Markdown marker | Deck 来源 | Anki deck | model / tags | 字段形态摘要 | 样本结论 |
|---|---|---|---|---|---|---|---|---|
| 1776515511477 | ahs_a217324b |
试验的2 | <!-- AHS:card=ahs_a217324b note=1776515511477 --> |
文件夹 + 文件名 | 999,试验卡片::课件2::卡片试验 |
问答题 / 无 tag |
Front 只有题目;Back 含 Open in Obsidian backlink |
当前主链是 cardId + noteId 双锚点 |
| 1776515511480 | ahs_dca62365 |
试验2333 | <!-- AHS:card=ahs_dca62365 note=1776515511480 --> |
文件夹 + 文件名 | 999,试验卡片::课件2::卡片试验 |
问答题 / 无 tag |
Front 只有题目;Back 含 Open in Obsidian backlink |
新链路不依赖 Anki tag 识别 |
旧样本 Markdown 与新样本 Markdown 的直接差异
| 维度 | 旧样本 | 新样本 | 含义 |
|---|---|---|---|
| heading 层级 | #### |
###### |
当前设置里 qaHeadingLevel=6,旧样本若直接进入当前主链,是否被识别为 QA 卡还取决于设置或迁移策略 |
| marker 格式 | <!--ID: noteId--> |
<!-- AHS:card=... note=... --> |
identity 模型已经换代 |
| deck 来源 | 文件内 TARGET DECK |
folder-and-file |
deck 决策来源不同,但都能映射到 live Anki deck |
| Front 字段内容 | 题目后通常拼接一个 Obsidian 链接 | 仅保留题目 | 接管后若做字段归一,旧卡正面会被改写 |
| Back 字段内容 | 旧链路 HTML,常带块级 backlink | 新链路 HTML,统一 Open in Obsidian |
迁移后是否强制重渲染,是一个策略位 |
| Tag | 常带 Obsidian_to_Anki |
通常为空 | tag 可用于审计,但不是当前主链 identity 输入 |
三侧真值归纳
- 旧 Markdown 已经提供了最关键的身份锚点:
noteId。 - 旧卡 live Anki 中的 note model 与字段映射和当前插件设置兼容。
- 旧卡 live deck 与旧 Markdown 中的
TARGET DECK完全一致,且当前 deck normalization 不会破坏 wikilink deck 名。 - 新链路真正新增的是
cardId这一层主键,而不是新的 note model。 - 因此旧卡“无法接管”的原因不是数据不够,而是当前主链没有把旧身份格式翻译进新身份模型。