该资料是一份架构文档,描述一个基于翻译对的间隔重复(SRS)系统及其数据模型与学习流程。
用途:为每条翻译短语对生成两个方向的卡片(primary_to_secondary、secondary_to_primary),卡片只存排程状态与外键,显示文本实时取自短语行。牌组(deck)包含翻译对,卡片限定在单个牌组内。
主要能力:采用 WatermelonDB 数据模型,包含 deck、deck_translation、srs_card、srs_review_log 四张表。srs_card 存方向、状态(new、learning、review、relearning)、due_at、interval_days、ease、reps、lapses、step_index、last_reviewed_at、suspended 及预留 FSRS 字段 stability、difficulty。srs_review_log 为追加式复习历史,含评分与前后快照。排程为 SM-2 启发式并带有学习步骤:学习阶段评分 Failed 1 分钟、Hard 5 分钟、Good 10 分钟后毕业至 1 天、Easy 4 天;重学与复习阶段按状态改变 ease 与间隔,ease 默认 2.5、最低 1.3。未来日期卡片在当日 dayStartHour(默认 4 点)开头排程。
使用方式:每牌组有 maxNewPerDay 与 maxReviewsPerDay 每日限额,按 dayStartHour 计算跨日;每日限额在会话队列初次构建时应用,之后回插的卡片不再复查限额。复习队列仅纳入到期卡片,排除已暂停卡片,新卡按创建时间升序、复习卡按到期时间升序,并合并后按 due_at 排序,再通过翻译对分离算法保证同一 translation_id 的两张卡片在队列中至少相隔 MIN_CARD_SPACING(4)个位置。会话在屏幕失焦时重置,评分后更新内存队列并重新加载下一张到期卡。
限制:已知 tomorrowStartMs 在会话开始时计算一次、会话中不更新,跨 dayStartHour 边界复习时“今日到期”阈值会过期;hydration 失败会移除卡片;FSRS、多牌组分配、额外卡片模板列为未来扩展,暂未实现。