Appearance
冲突与隐私
冲突策略
iCloud 同步(iCloudSyncManager)和手动 JSON 导入(BookSourceService)用的是两套不同 粒度的合并策略,容易混为一谈:
- iCloud 同步 — 书架/书源都是简单的“并集 + 本地优先”:书架按
book.id、书源按bookSourceUrl判断“是否已存在”,只把本地没有的远端记录补进来;同一 ID/URL 在本地和 远端都存在时,直接保留本地版本,不逐字段比较哪份更完整——这点和 在线书源里手动导入 JSON 时的“比较完整度、保留更可用的 一份”是两套不同粒度的策略,写文档或排查“为什么同步后书源信息没有变成远端那份”时 不要混用; - 阅读进度:按
lastReadAt时间戳比较,远端严格更新时才覆盖本地,否则保留本地 (见书签、进度与统计里characterOffset相关说明); - 书签:按稳定 ID/内容去重,不因同步重复;
- 空数据不能覆盖非空远端;
- 无法自动决定时保留双方并提示用户。
隐私
备份和云同步可能包含阅读历史、来源 URL 和用户自定义配置。导出文件由用户负责保管。 诊断日志、Cookie、Authorization 和登录 token 不应默认进入可分享备份——不过目前应用内 也没有“完整数据可分享备份包”这个功能(见备份与恢复),实际风险面主要是 在线书源导出的书源 JSON 本身可能带有 header/loginUi 等字段,分享书源 JSON 前应该自己确认这些字段里没有残留账号相关信息。
