## Anki 牌组安全预览诊断流程样例 ### 场景 用户说:`红色 flag 都是要删除掉的卡片`。 ### 1. 工具入口 ```bash python /Users/bytedance/Documents/learning-bu/shared/tools/anki_deck_safety_preview.py \ --op delete-flagged \ --deck "英语概念卡" \ --flag red \ --expected-max 20 \ --dry-run ``` ### 2. 输入来源 - AnkiConnect: `deckNames`, `findCards`, `cardsInfo`, `notesInfo` - 用户显式目标: `deck="英语概念卡"`, `flag=red` - 本地回滚目录: `/Users/bytedance/Documents/learning-bu/english/04-projects/anki-backups/` ### 3. 核心检查 | 检查项 | 通过信号 | 失败信号 | | --- | --- | --- | | deck-target | deck 存在且样例 front 是英语概念卡词条 | 命中钢琴、歌词或多个相似 deck | | scope | red flag cards = 7,低于 expected-max | 数量异常,例如 700 或 0 | | preview | 列出 7 个 card_id/note_id/front | 无样例、无法判断删除对象 | | rollback | 已导出 before-delete `.apkg` | 没有备份文件 | | postcheck | 删除后 remaining_red_flag_cards=0 | 删除后仍有红 flag 或 deck count 异常 | ### 4. dry-run 输出摘要 ```text Operation: delete-flagged Target deck: 英语概念卡 Would delete: 7 cards / 7 notes Sample fronts: staggering, mundane, outlet, brockman, provisioned Backup planned: .../英语概念卡_before_red_flag_delete_<timestamp>.apkg Rollback: anki_import_backup --path <backup.apkg> Decision: wait_user_confirm ``` ### 5. 执行条件 只有当用户确认 `目标 deck 是英语概念卡,删除这 7 张红 flag 卡` 后,工具才允许去掉 `--dry-run` 并执行。执行完成后生成 `delete_report.json`,其中必须包含 backup 路径、删除清单、剩余 red flag 数和 deck_cards_after。