Files
reader/docs/p0-progress-2026-09-23.md

2.2 KiB

P0 推进记录:第一批

范围为备份、阅读状态与本地数据可靠性。本批没有改数据库 schema,也没有执行部署或操作现有用户数据。

已实现

  1. 进度可靠性:后台/隐藏事件经过 App.flush,先等待阅读器待保存位置和本地写队列,再触发同步;打开书籍比较本地和服务端时间,保留较新的记录。服务端查询最长等待 5 秒,不可达时回退本地。存储写入错误向调用者报告,后续写入可重试,阅读器显示保存失败。
  2. 数据保护:服务端离线 backup/verify/restore 命令,完整 DATA_DIR 文件校验、SQLite 完整性检查、恢复到新目录、拒绝覆盖与路径重叠。未完成目录和备份目录不能直接启动服务。操作说明见 备份恢复。
  3. 部署接入:按当前 CI 标签规则把 latest 改为 main,可通过 READER_IMAGE 固定版本;添加源码构建 Compose 覆盖文件;限制容器日志为 3 × 10 MiB;补充新旧版数据兼容范围。

验证方式

  • Web 真实 ReaderScreen/OfflineStore 测试覆盖较新服务端、较新离线记录、网络失败、后台落盘顺序和读取期间不写临时位置。
  • 存储失败测试先观察到错误被吞,再修复并验证重试及 outbox 保留。
  • 服务端真实 SQLite 测试覆盖账号/进度/笔记/密钥/服务状态往返、损坏/缺失文件、路径篡改、恢复覆盖拒绝和启动保护。
  • Compose 默认和源码构建配置可解析;两端 TypeScript/构建检查。

未完成的 P0 范围

  • 进度历史和用户主动恢复入口;多设备系统时间偏差下的冲突策略。
  • iOS Safari 与 Android 真机的手势、跨章、旋转、关闭/强制退出测试。本地 jsdom 测试不能替代真实渲染与系统生命周期。
  • 备份/恢复图形界面和运行中一致性快照;本批只提供需要停机的维护命令。
  • 首次接入向导、旧版数据自动迁移、数据损坏诊断界面。
  • 镜像拉取及真实容器升级演练:当前 Docker 引擎未运行,无法执行。Linux 符号链接和权限分支需在 Linux CI 验证。

当前实现仍以客户端 updatedAt 合并进度,不能据此承诺所有历史跳章/进度问题都已修复。