Skip to content

Latest commit

 

History

History
49 lines (32 loc) · 3.3 KB

006-reading-queue.md

File metadata and controls

49 lines (32 loc) · 3.3 KB

ADR 006:日期阅读队列

  • 状态:已发布,0.16.0
  • 日期:2026-10-19
  • 范围:静态版、账户版、桌面本地与上游模式

问题

0.15.0 已能保存阅读位置,但所有材料始终混在一个列表中。继续使用现有 Source 快照,补充待阅读、延后和归档,避免提前引入 ReadingTopic、优先级或新的调度算法。

决定

新增可选 Source.queue:

{
  state: 'active' | 'archived'
  availableOn: string // YYYY-MM-DD,本机日历日期
}

缺少安排的材料立即可读。active 的日期晚于今天时进入稍后阅读,到当天进入待阅读;archived 始终在归档列表。归档保留原日期,主动恢复或提前阅读将日期改为今天。延后操作只接受今天之后的有效日期;恢复旧备份允许已经到期的安排。

日期不转换为 UTC 午夜。可读状态按当前设备的本机日期计算,跨时区时可能提前或推迟进入待阅读。应用沿用现有时钟刷新日期,跨日无需修改记录或产生评估事件。同一状态按安排日期、导入时间和 ID 排序;缺少安排时用导入日期。全部材料先列待阅读,再列稍后阅读和归档;阅读位置变化不重排列表。搜索、状态筛选和分页只作用于材料列表。

保存与恢复

core/source-queue.ts 处理日期和状态,useLibrary.arrangeSource 校验库作用域与快照 ID,复用现有修订和事务。更改安排时,将当前可捕获的阅读位置与安排一起提交,并创建操作前快照;失败整体回滚,界面保留原材料和错误提示。

原自动保存队列仍可继续运行。操作成功只确认已包含的那一条待保存位置,期间较新的滚动保留;后续位置更新从当前 Source 合并,不覆盖 queue。切库后的旧操作拒绝提交,沿用读取、账户隔离与 revision 冲突规则。

归档与延后不删除来源快照、摘录、笔记或卡片,不改变评分、额度、练习或 FSRS。归档卡片的「查看原文」仍可访问快照。阅读安排随完整备份、媒体重编号和快照恢复;独立导出原文仍只包含正文。静态 / 桌面本地模式可离线使用,账户 / 上游模式需服务在线。

格式与验证

格式 0.15.0 0.16.0
Library 7 8
IndexedDB 10 11
SQLite schema 4 5
HTTP API 5 6
.repeaty 4 5
JSON 备份 7 8

记录表不变。旧库保留来源、位置、卡片、进度、检查点与待确认草稿,未安排的材料默认可读。版本门槛拒绝旧客户端覆盖新字段,客户端与服务需一起更新;旧备份仍可恢复。

验证覆盖日期无效、夏令时与跨年、稳定排序、归档 / 恢复、旧 IndexedDB / SQLite 升级、旧备份、新备份与快照往返。三版本浏览器流程比较原卡片和复习记录,测试配额或服务故障的回滚及重试,并通过修改设备日期验证到期不写库。Linux 原生测试完全退出重开应用,检查归档与延后状态、Markdown 位置及原学习记录。

优先级、自动轮换、独立片段树、完成度和自动掌握判断不在本次范围内。后续按实际使用选择下一项。