feat(sync): 显式导入 Vault 前预览旧版人设

This commit is contained in:
2026-09-09 07:03:29 +08:00
parent e2dbddb979
commit 3ef4766da4
7 changed files with 146 additions and 3 deletions
@@ -700,3 +700,13 @@ Core 的独立数据目录目前不等于已授权 Vault。Python 旧笔记写
- 扩展 core_workspace 实际 Python Core HTTP + Host 管道测试:读取空人设、保存得到 64 位摘要、同一操作和输入重放 20 次返回相同响应、用空旧摘要重新提交得到 409、不同 Vault 读取被拒绝,正常读取仍等于原回执。Host 待处理操作计数仅增加 1,持久记录 hash 等于 HTTP revision。
- cargo test --features desktop --test core_workspace --test sync_push:两项集成通过、1 项辅助进程入口 ignored;分别 2.79 秒和 25.44 秒,后者同时包含既有真实 100 MiB 上传断点/重启用例。日志 .build/persona-layout-integration.log。全目标 Clippy -D warnings 通过,日志 .build/persona-layout-integration-clippy.log。本轮仅扩充集成测试,没有重复无关生产代码回归。
- 证据范围为本机隔离服务与两个 Rust 客户端,并非两台独立硬件上的最终 UI。此处只覆盖同改与两种取舍,不覆盖全部 S-03 的改对删/rename/副本/历史恢复矩阵,也不完成旧全局人设明确归属导入或发布版本兼容。完整生产化目标保持未完成。
## 增量:明确选择旧全局人设导入目标
- 新增桌面专用只读 /api/settings/persona/legacy。先经 Host persona.get 验证当前 Vault,再读取旧 SQLite 来源;无来源返回 available=false。源数据不含目标 CAS revision,不修改 Workspace,也不删除或重写旧人设行。
- 人设对话框新增查看旧全局人设、内容预览和填入当前表单两步。预览文字按普通 Vue 文本渲染,限制长文本展示高度;填入操作仅复制 name/system_prompt/dialogue_pairs,保留当前工作区 version/revision。用户仍需正常点击保存,沿用 Host CAS/journal。界面说明替换草稿与保留来源的行为。
- 预览响应持有发起时 Vault 标识;切库/关闭后不将迟到内容填入新工作区。测试验证预览与复制阶段均没有 PUT、保存使用目标摘要而非源版本、切库迟到响应不展示、无来源、Host 拒绝时不能读取,以及旧数据保持不变。
- 前端人设定向 6 项、Python 人设定向 7 项通过;完整前端 101 文件/529 项通过,日志 .build/persona-import-frontend.log。完整后端与类型检查结果另列。
- 此流程是用户明确选择的复制导入,不是自动所有权推断;没有实现旧来源清除。完整导入进程中断矩阵、独立设备 UI 与发布兼容验收仍需继续,完整生产化目标保持未完成。
- 最终后端全套 904 通过、1 项依赖弃用警告,81.49 秒;前端 type-check 通过。日志 .build/persona-import-python.log、.build/persona-import-types.log。本轮无 Rust 生产代码改动,未重复 Rust 全套;用户 Vault 修改保持原状。