资料库误报与个人资料跨设备同步¶
历史记录 / Historical record:本文保留当时的计划、研究或验收证据,不代表 0.11 当前能力全集。现行说明见 文档入口;英文入口见 English overview。
已确认¶
只读检查真实清华云盘接口:个人库 type=repo, virtual=false, owner=当前账号;群组库 type=grepo 没有 virtual 字段。这是正常服务器响应,不代表客户端版本过旧。旧前端把群组库也按个人库要求字段,导致全局误报。个人库归属与虚拟子库删除限制继续保留。
个人名片、好友索引、组织本地索引原来只有 localStorage。OH 记忆同步与 GitLab 组织协作不能替代这些索引的跨设备同步。
实现范围¶
- 共享/群组库不需要提供个人库虚拟标记来证明“不是我拥有的库”。只对目标同名库归属不明、旧宿主完全缺字段的情况阻止自动建库。
- 新增私有
OneTHU-Profile资料库,按经过验证的云盘账号隔离,既不上传登录凭据/API Key,也不公开分享。 - 每台设备写自己的记录文件,合并个人名片、联系人、组织索引;每项独立版本与删除墓碑,避免空设备覆盖旧数据、删除后复活及两设备覆盖整个清单。
- 同步本地组织索引/资源引用;组织权限仍必须向 GitLab/云盘重新验证,绝不能把本地同步记录作为授权依据。
- 完整模式启动、资料修改后与回到前台拉取/推送,定时收敛;极简/实用不导入这些完整模式内容。切账号、切模式、退出后阻止旧请求应用数据。
- 首次从当前设备本地存量迁移;其他设备需要更新到含此同步功能的版本,才能上传原来的本地记录。
用户追加的冲突规则与实现¶
默认自动同步和合并,不为正常修改反复询问。记录带因果上下文和共同祖先:不同字段、不同成员/项目等独立条目、字符串清单可自动三方合并;只把同一字段改成不同内容、删除与修改并发等真实矛盾显示出来。
真冲突由全应用唯一的 OneGUI ModalHost 展示,避免多个常驻标签或设置页各弹一个遮罩。按用户追加反馈,不展示 JSON、字段路径或技术表:复用真实 IdentityCard 卡面,桌面并排、手机横向滑动对比“这台设备/另一台设备”,卡下突出不同姓名、手机号、具体成员的角色等人类可读内容。选择“保留这张名片/使用另一张名片”只决定矛盾字段,其他兼容变化继续保留;删除明确显示删除状态。真正冲突强制二选一,不提供“两边都保留”、稍后处理、关闭按钮或遮罩/Escape 退出;手动处理接口也只接受 local/remote。兼容修改仍自动合并,不能用组合结果绕过互斥的成员/角色决定。其他无冲突记录继续同步,每个设备写独立文件,不直接覆盖另一台设备的快照。组织协作状态/权限缓存不作为云端授权,也不把刷新时间变动当成用户修改;保留同一资源在本机已有的权限缓存,不从其他设备导入授权结论。
同步后的私有资料库由原生命令再次校验:本人完整库、名称为 OneTHU-Profile、没有群组/子目录/公开链接或用户共享;照片使资料可能超过通用文本 2 MB 限制,采用单独的 12 MB 有界内存上传,不写个人通讯录明文临时文件。
验证¶
真实云盘元数据只读核对;归属回归测试继续覆盖共享写权限不可删库、旧宿主不能盲建库。新增同步合并/删除/并发/空设备/账号隔离/模式切换测试,以及真实状态模块配合模拟云盘的双设备验收。不得以测试通过冒称真实 Win/Mac 双端同步已验收。
本轮结果:
- Seafile 生命周期 18 项通过;真实群组无 virtual 字段不再误报,但同名个人库归属不明仍禁止盲建。
- 合并模型测试通过:空设备保护、收敛、删除墓碑、账号隔离、不同字段自动合并、真正冲突的明确二选一,以及离线分支接续已合并祖先。
- 模拟认证云盘 + 两个隔离浏览器设备通过 16 项,使用实际名片/组织/同步模块;切账号时故意挂起旧读取,确认晚到的旧账号内容不会写入新账号。进入实际通讯录页面的唯一冲突弹窗,在 390×844 手机视口横向滑到另一张名片、验证仅两张版本卡片、Escape 不退出、没有稍后处理后,点真实“使用另一张名片”按钮完成收敛,并检查桌面/手机前后截图。
- 原生测试 49 通过、11 项真实联调测试按原配置忽略;上传文件名/大小边界在访问网络前拒绝。Windows 建窗死锁回归护栏通过。
- TypeScript 与中英文词典检查通过;新增文案和种子已登记、翻译交接文件重新生成。
- 上述双设备测试运行于 macOS Chromium,Windows 平台标识仅用于前端分支,非 Windows 硬件验收。真实云盘只核对接口形状和权限查询,没有上传、删除或改动用户资料。
更新后操作¶
Mac、Windows 都需要更新到本轮实现;先在保留旧数据的 Mac 完整模式连接同一个云盘账号,等“名片、好友与组织索引已同步”,再在 Windows 的通讯录点“立即同步”或切到前台自动同步。旧版本从未上传的本机资料,不能仅靠更新 Windows 凭空恢复。GitLab 登录凭据不跨设备传输;组织权限仍向服务端重新验证。