## Anki 删除复活审计流程样例 ### 场景 用户问:`deck:英语概念卡 里红旗 flag1 怎么又有了?之前不是删了吗?` ### 输入 - 当前查询:`deck:英语概念卡 flag:1` - 当前 Anki 数据源:`~/Library/Application Support/Anki2/<profile>/collection.anki2` 的只读快照,或 AnkiConnect 查询结果 - 历史删除记录:`reports/anki_flag_delete/2026-05-16-delete-report.json` - 可选日志:Anki 同步日志、导入日志、最近一次备份恢复记录 ### 工具步骤 1. 复制 Anki collection 到临时目录,避免直接读取写入中的数据库。 2. 查询当前 `deck:英语概念卡 flag:1`,导出 card_id、note_id、deck、flag、card.mod、note.mod、首字段摘要。 3. 读取历史删除报告,按 card_id、note_id、字段指纹做三层匹配。 4. 按时间线分类:历史未覆盖、删除后新建、删除后同步/恢复带回、删除后重新打红旗、证据不足。 5. 如果用户确认删除,先写删除前备份和明细,再执行删除,最后复核 deck 级与全局 flag 计数。 ### 成功信号 - `deck:英语概念卡 flag:1 = 0` - `flag:1 = 0` - 删除报告中每个 card/note 都有 before 快照和删除结果 - 审计报告能解释为什么这批卡不是“今天刚产生”,而是更可能来自同步、撤销、恢复或导入回流 ### 失败信号 - 无 previous report,只能说明当前状态,不能证明之前是否删过 - 只有 card.mod,没有同步/恢复日志,不能指认具体回流来源 - Anki 正在运行且数据库被写入,必须改走 AnkiConnect 或先复制快照 ### 建议输出 ```text 当前命中:25 张卡 / 25 个 note 历史覆盖:10 张曾在 2026-05-16 删除且当时复核为 0 主要判断:不是删除命令漏删,更像同步、撤销、恢复或导入带回旧状态 删除后复核:deck flag:1 = 0,全局 flag:1 = 0 报告:reports/anki_flag_audit/2026-05-18-英语概念卡-flag1.json ```