fix(sync): 端到端强制人设与布局显式选择加入

This commit is contained in:
2026-09-09 07:27:50 +08:00
parent e788609de7
commit 3a344d35bd
15 changed files with 341 additions and 21 deletions
@@ -730,3 +730,15 @@ Core 的独立数据目录目前不等于已授权 Vault。Python 旧笔记写
- **当前仅完成持久层,尚未接入传输过滤与 UI,因此不能将 default=false 当作已经阻止人设/布局传输的证据。** 下一步必须先完成 sync_paths/发现删除、capture/已排队 job、初始预览、pull 下载/stage/apply 的一致范围检查;排除项只推进元数据游标,不下载对象、不写本地文件、不删除远端数据。不得在这些边界未接齐时宣称“可选同步完成”。
- 持久选择、重开、另一 Vault 隔离、绑定后拒绝修改、解绑后修改及未知字段拒绝的最初定向测试通过(.build/sync-optional-scope.log);补充升级用例后的完整结果另列。
- 最终 desktop 全目标 142 通过、12 ignored(库 127、Host 8、其余集成 7),包含 schema 10 升级新用例;全目标 Clippy -D warnings 通过。日志 .build/sync-scope-foundation-full.log、.build/sync-scope-foundation-clippy.log。此结果仅证明持久层与现有回归,不能证明范围过滤已生效,下一轮优先完成剩余接线。
## 增量:可选范围接入实际传输与设置
- 将 schema 11 的 scope 接入 sync_paths、外部删除发现、outbox 捕获、旧作业选择/提交前检查,以及初始预览(摘要包含选择)。旧可选作业无授权时归档,不让其阻塞普通笔记队列。关闭类别不转换为删除本地文件/远端版本。
- pull 的增量和初始快照两条路径均在对象下载前判断范围;未选记录可在没有 spool 正文时 stage 为元数据,apply 只将状态标为 excluded 并推进相应游标。不能通过已缓存 inbox 或旧 conflict resolution 自动改写未选类别;手工解决关闭类别时明确返回 SYNC_SCOPE_DISABLED。
- 新增主窗口 sync_set_scope 命令,核对 Vault 身份,绑定期间拒绝修改。SyncSettings 显示默认关闭的人设/布局选择,改变范围立即失效旧预览,保存前不乐观显示选中状态;已绑定时提示解绑后重新合并。人设表单文案改为可选择同步。
- 新增范围测试覆盖无正文 spool 时跳过远端人设而游标推进、本地内容不变/无冲突、旧预览因开启范围失效,以及 schema 前残留队列不得越过缺失授权。真实 HTTP 增加默认关闭的第三客户端,要求没有活动人设/布局文件及对应 head spool;开启后新快照绑定补齐两类记录且无重复上传。既有人设/布局传输测试改为显式选择后运行。
- 前端全套 530 项与类型检查通过(.build/scope-wired-frontend.log、.build/scope-wired-types.log);调整最终文案及选择控件后定向 12 项和类型检查通过(.build/scope-ui-final.log、.build/scope-ui-final-types.log)。
- Rust 首次含新增用例的并行全套出现既有 AppContainer 测试失败:启动参数/环境辅助进程返回 1(不是网络越权判定),日志 .build/scope-wired-final-rust.log。单独复核同一实际探测通过,16.94 秒(.build/scope-native-recheck.log),原因尚未定位;保留此失败,不据此宣称全套稳定。随后对最终代码串行全量验证,结果另列。
- 最终串行 desktop 全目标 143 通过、12 ignored(库 128、Host 8、其余集成 7),含第三客户端关闭/重开范围的实际 HTTP 验证,日志 .build/scope-wired-final-serial.log;补充旧队列测试单独 1 项通过(.build/scope-old-queue-final.log),累计覆盖 144 项通过用例。最终全目标 Clippy -D warnings 通过(.build/scope-wired-clippy.log)。
- 本轮修正了先前人设/布局默认进入同步的规划偏差;仅这两类可选记录已经接通选择与传输。尚未实现的可选数据类、完整发布/兼容、独立设备 UI 和上述偶发 native 失败原因仍需处理,完整生产化目标未完成。