mirror of
https://github.com/panatgithub/AnkiHeadingSync.git
synced 2026-07-22 06:51:43 +00:00
中文: 新增 deck 模式选择、文件级 deck 解析、文件夹映射、模板插入与 warning 汇总 English: Add deck mode selection, file-level deck parsing, folder mapping, template insertion, and warning aggregation
2.1 KiB
2.1 KiB
Module 5 Decisions
1. 配置模型
新增并持久化以下字段:
fileDeckEnabledfileDeckMarkerfileDeckTemplatefileDeckInsertLocationfolderDeckMode
默认值严格按计划:
fileDeckEnabled = falsefileDeckMarker = "TARGET DECK"fileDeckTemplate = "obsidian::filename"fileDeckInsertLocation = "body"folderDeckMode = "off"
2. 文件级 deck 解析
DeckExtractionService 改为接收 fileDeckMarker 参数,而不是写死:
- YAML key 使用同一个 marker
- 正文单行 / 双行语法也使用同一个 marker
- 当
fileDeckEnabled = false时,索引阶段完全跳过显式 deck 提取
3. 文件夹映射
FolderDeckMappingService 改为显式接收 folderDeckMode:
off不参与映射folder使用父文件夹folder-and-file使用父文件夹 + 当前文件名
非法路径片段包含 :: 时:
- 不抛错中断
- 产出
deck_invalid_folder_segmentwarning - 丢弃映射结果
- 继续回退到
defaultDeck
4. 模板插入能力
新增单独的 deck 模板插入服务:
- 负责
filename变量展开 - 负责 YAML / 正文两种插入模式
- 负责在已有 YAML key 或正文 deck 声明存在时进行就地替换,避免重复声明
该能力通过设置页按钮触发,目标固定为当前活动 Markdown 文件。
5. manual-sync 接入
继续沿用当前 manual-sync 主链路:
CardIndexingService只提取“文件级显式 deck 线索”RenderConfigService调用DeckResolutionService解析最终 deckDiffPlannerService保持当前旧卡行为,不额外改写 update / changeDeck 语义AnkiBatchExecutor继续让toCreate使用resolvedDeck
6. warnings
继续使用结构化 warning 结果对象,不把 notice 当作唯一载体。
模块 5 需要继续保证:
deck_conflict_yaml_bodydeck_multiple_body_declarationsdeck_invalid_folder_segmentdeck_fallback_default
7. UI 选择
为保持改动聚焦,本轮设置页的“单选”使用 dropdown 实现,而不是新增自定义 radio 组件。 语义仍然是互斥单选,不扩展复杂交互。