跳转至

权限、组织协作与交互验收

历史记录 / Historical record:本文保留当时的计划、研究或验收证据,不代表 0.11 当前能力全集。现行说明见 文档入口;英文入口见 English overview。

本轮从 exp / 8d24630f 接手。用户授权完成五项审计问题,并要求保留真实双账号联调入口;目前没有第二个测试账号,也没有连接 Android 实机。

设计决定

  1. 资料库权限以清华云盘服务端为准。授权、降权、移除和邮箱更换都执行读取、修改、回读;HTTP 成功不能代替实际授权成功。远端待办保留未完成步骤,失败允许重试,撤权先于新增授权。
  2. 组织以私有 GitLab 群组成员为身份依据,以专用私有项目保存共享状态。管理配置与协作内容分别放在受保护分支;成员不能改管理配置,编辑者可以维护项目和公告。写入使用文件提交版本检查,冲突保留编辑内容。已有本地组织需要明确初始化协作。
  3. 清华云盘当前为 Seafile 11.0.21,不提供新版公开链接按用户限制接口。私密分享采用 AES-256-GCM:公开短链接只有密文,每条分享的随机密钥单独保存在私有资料库,靠云盘账号权限授权接收人。附件也加密。修改接收范围轮换密钥及口令并撤销旧分享;改名称可保留口令。已经读走的内容无法追回。
  4. 导览每节的操作直接打开对应功能,并能返回导览。实用模式不引入完整模式入口;重播不覆盖已有设置。
  5. OneGUI 使用语义令牌和共享组件收口,基线不放宽。手机验收必须包含真实坐标触摸、拖动、缩放、滚动、遮挡检查与截图检查。

独立密钥资料库有额外小文件与资料库开销,但避免依赖自建分享服务,也避免把账号校验放在可绕过的客户端。组织内容采用 GitLab 文件而非数据库,因此用版本冲突提示与定时刷新,不能宣称实时共同编辑。

接口依据:Seafile 分享 API、11.0.21 分享链接实现。当前部署能力通过只读服务端信息核实。

实施与验收

  • [x] 原生资料库权限命令、回读校验和可重试撤销。
  • [x] 私密分享密文、附件、收件人变更及撤销完整链路。
  • [x] 组织共享状态、服务端角色、权限变更待办及冲突处理。
  • [x] 导览直接到达功能,桌面及手机真实点击。
  • [x] OneGUI 守卫通过且不改变容许基线。
  • [x] 手机坐标触摸、横竖屏、保存倍率、遮挡截图验收。
  • [x] 构建及回归,记录确切范围与证据。

模拟多身份测试用于故障注入和并发复现;真实服务单账号测试用于确认 API 接线。双账号互访、实机 NFC 与 Android 触摸须单独记录,不能由模拟测试替代。

本轮验收结果

范围 结果 证据与边界
私密分享 43 项通过 四个独立浏览器上下文,实际 WebCrypto;模拟服务端持有身份与 ACL,覆盖附件、撤销、换收件人、重启恢复及旧分享升级。见私密分享报告。
原生清华云盘 单账号 live 测试通过 实际建库、所有者身份、账号读取/匿名拒绝、共享旁路审计、内存上传及清理。发现并修复建库响应 repo_id 和所有者账号读取两处接口差异。
组织权限协议与协作 38 + 25 项通过 协议故障注入和双浏览器模拟 ACL/CAS,含降权、撤权、换邮箱、并发冲突、失败恢复与初始化重试。见组织协作说明。
组织与名片界面 29 + 23 项通过 实际浏览器操作,隔离模拟账号与资源。
导览与体验模式 48 + 83 项通过 桌面和手机实际点击目标、返回导览、切换模式、保留偏好。见导览验收。
短口令 49 项通过 统一收发、兼容旧码、过期和撤销、雷达入口。
暂存箱 50 项通过 实际拖入、文件暂存、收发与撤销、收件人变更、手机长按及取消;测试浏览器自然退出,exit 0。
手机白板 55 项通过 320/390 竖屏及横屏,可信触摸事件驱动拖动、缩放、平移、滚动;截图人工抽查。见手机操作报告。
OneGUI 既有基线下通过 共享 FocalImage、Slider、语义令牌与 recipes;旧 CSS 9888 → 9742 行,上限仍为 9753;46 组语义对比度通过。
集成构建 通过 pnpm guard、pnpm guard:onegui、桌面生产构建与 Rust cargo check --lib。保留已有大包体积及 Rust 未使用项警告。

暂存箱回归曾在全部功能断言通过后因浏览器退出超时而失败。定位到 macOS 测试 Chrome 启动的 GoogleUpdater 继承 stderr,令 Playwright 等待进程流关闭;仅为该隔离测试进程加入 --disable-updater-scheduler,顺序重跑 50 项通过,Chrome 正常退出并清理临时目录。没有强制结束进程或修改系统 Chrome 更新设置,最终成功提示也移到清理完成之后。

保留的外部联调

用户已明确暂无第二个账号,先完成实现并保留联调入口。本轮没有宣称以下项目已通过:

  • 真实清华云盘双账号读写授权、降权、撤销:cargo test --lib seafile::tests::live_two_account_permissions -- --ignored --nocapture,所需安全环境变量见私密分享报告。
  • 真实 GitLab 实例写接口与第二账号互访:node tools/org-collaboration-live.mjs --run-isolated,使用隔离测试群组,支持 GITLAB_TOKEN / GITLAB_SECOND_TOKEN,不打印令牌。
  • Android 实体设备、系统键盘、原生文件选择器与 NFC:当前没有连接设备。移动 Chrome 可信触摸与截图验收不能代替这些原生系统链路。

权限不能追回接收人已经读走的内容。历史明文受限分享在再次分享或点击「升级并复制」时升级;尚未升级的历史链接需要发送者主动撤销或升级。