Define project membership and private collaboration boundaries #97

Merged
weichen merged 2 commits from feature/project-member-access into main 2026-10-13 11:52:28 +00:00
3 changed files with 90 additions and 0 deletions
@@ -501,3 +501,7 @@ stateDiagram-v2
原始来源:S:35–76 与 D:75–88;RDM requirements/README、00、01/03/04/08/09/10;U0、V2.2 已批准裁定。矩阵中给出每条需求的原文位置。
设计依赖:两树一网展示方案 r1、多人存储方案 r1、模板对话生成方案及 69 类资产盘点。涉及 API 的名称均为候选设计,正式符号由公开契约申请确定。
本轮没有联网核验法律或标准条款,也没有声称系统已符合任何特定法规;本方案讨论项目既定需求、数据追溯与实现验收。
## 2026-10-13 项目成员闭环增量
用户复现宿主项目成员保存成功、成员登录不见项目且不能建对话,已批准针对 U2/U3/U5 的方向与阶段 1–9 连续推进。具体实施主记录为 [系统项目、成员工作入口与私域协作闭环 r1.1](2026-10-13-system-project-membership.md),验证/组件/PR/CI 结果在关联 Dev 任务卡维护。当前实现候选已覆盖统一项目、全局名称、成员个人会话、领域分片、私域与发布知识,以及旧项目显式修复;组合验收与正式 tag 消费仍推进中,不据此声明全部 U2/U3/U5 或总目标完成。部署、8788 数据修复与清理仍未授权。
@@ -0,0 +1,84 @@
# 系统项目、成员工作入口与私域协作闭环 r1.1
状态:用户 2026-10-13 已批准方向并授权阶段 1–9 连续推进;实现与隔离验证进行中。发布版本、部署、8788 数据修复及工作区清理不在本次授权内。
本增量补齐总案 [RDM 最终目标核对与完整交付方案 r1](2026-10-11-rdm-final-target-completion.md) 的 U2,以及 U3/U5 与项目成员协作直接相关的边界。需求来源为 2026-10-13 用户复现和 `.tmp` 会议补充中“同名项目唯一、加入后可见且能新建对话、会话私有、每项目共享两树一网”。这不是模板全量迁移或三权流程重设计。
## 已定位的问题
8788 的成员添加记录已保存,但用的是宿主项目 ID;该 ID 没有领域注册或宿主绑定。列表和对话创建的共享适配器因此拒绝它。新建项目走宿主 owner 表,而成员管理、两树一网走领域表,缺少统一生命周期。会话列表还只检查宿主 owner,领域的名称 UNIQUE 也没有覆盖宿主创建入口。
r1.1 增量:合并现行主干的成员 Picker、职责目录和权限矩阵,并闭合其独立重放发现的首次提交、渲染确认、迟到响应、职责幂等和持久版本问题;范围仍为本次成员与私域协作。
运行制品仅有短来源标记,不能把当前源码视为其已证明的组件组合。只读现场证据、对象 SHA 和完整脱敏输出保存在 Dev 本任务卡,不在本文复制命令输出或线上数据。
## 职责与公开契约
RDM 保持项目、成员、职责与领域数据权威。Backend 管认证、宿主技术投影、私人会话/工件和通用资源执行边界。Frontend 只消费服务端身份与状态。
```mermaid
flowchart LR
U[认证用户] --> P[统一项目应用服务]
P --> D[RDM 项目与成员]
P --> H[宿主一对一投影]
H --> C[按用户归属的个人会话和原件]
D --> W[按项目分片的两树一网]
W --> K[成功发布的知识切片]
K --> R[当前项目的授权检索与模型上下文]
```
基座扩展申请的四要素:
| 要素 | 结论 |
|---|---|
| 场景 | 统一产品项目创建/改名/归档,验证映射两端,并允许项目成员创建个人会话 |
| 公开能力 | 可选 `extension.ProjectHost`、`ProjectLifecycle`、`ProjectLifecycleRegistry`;复用 `/api/projects` 与其会话路径;资源查询追加可选 `Source` |
| 现有能力不足 | 只读 V1/V2 不承担生命周期、跨库初始化和动作授权;原 Host 没有项目技术投影与管理验证接口;仅项目布尔或已知切片 ID 不能证明索引行仍是发布来源 |
| 兼容 | 保留必需 Host/Registry 接口;新能力经可选接口注册。未注册生命周期保留通用基座行为。RDM 产品缺该能力拒绝注册,防止悄然回到宿主个人项目路径 |
`ProjectHost` 由执行端按认证主体构造;投影修改和管理查找保持 owner 限制,共享 metadata 经过授权和脱敏。`ProjectLifecycle` 的 List/Create/Rename/Archive/Work 是完整注册的一组回调,公共项目入口委托给它。客户端传入的 projectId 或 `rdm.projectId` 均是定位符。
## 项目身份、名称和恢复
- 领域项目、名称保留和创建者负责人同库事务提交。跨库投影使用确定的宿主 ID 和持久 `provisioning/failed/ready` 映射;失败重试保持身份,不持有领域事务跨宿主调用。
- 本增量名称为去首尾空白后的精确名称;数据库唯一保护覆盖不同账号和并发。改名、归档后保留旧名归属。Unicode/大小写归一没有在本增量自动引入。
- 所有产品创建、改名、归档路径使用应用服务;归档保存会话、原件和数据,不能继续新工作。管理重试可定位未完成映射,但仍须 owner/动作检查。
- 新绑定验证真实宿主的存在和当前主体管理资格;既有绑定的 metadata/工作还验证物理宿主 owner 与映射创建者相符,不能只信映射存在。
- 现有孤立宿主项目通过 `rdm.project.adopt` 先预览、再显式 apply;保留宿主 ID 和 owner,将成员关系移到领域根。不能凭名称猜测已有领域身份,不把未归属历史默认搬入新根。
## 共享与私域
| 数据 | 默认边界 |
|---|---|
| 个人会话/消息/原件/附件 | owner 私有;成员加入不使其对其他成员可读 |
| 个人 pending/rejected 草稿 | 仅提案人;管理角色及其他职责不自动取得正文 |
| 受控正文、差异与导出 | 当前项目成员身份、阶段/动作及有效章节或文档职责;审计许可不代替正文许可 |
| 已采纳提案的本人不可变历史 | 本人自己的原始提案可保留;其他人读取受控内容走职责 |
| 树结构、元信息、快照哈希 | 项目协作所需的结构视图;不能用元信息入口夹带正文预览 |
| 历史正文预览 | 当前有效权限,不从历史重放恢复已撤销的职责 |
| 原件台账、待处理数量 | 当前 actor 在目标项目的条目;管理角色不自动得全员原件视图 |
| 项目发布知识 | 成员、明确领域根、成功发布台账、当前撤销代际与存活切片共同授权 |
发布切片保留其 ID、owner、原件锚点,索引 `ProjectID` 为领域 ID,来源为 `plugin:rdm:published`。跨 owner 查询还检查实际存储行的 `Source`;手工/私人来源不能借已知切片 ID 绕行。撤销代际阻止已排队或在途任务重新授予共享。替换按 owner、精确项目(含空 ID)、ref、插件命名空间隔离。
会话使用宿主 ID;HTTP、Host 和模型上下文通过服务端 provider 的可信 metadata 解析领域检索范围。每个实际知识对象再经过 V2,不能先按错误 ID 查空,也不能把 private 候选截断置于授权之前而隐藏合法结果。
## 界面与执行
沿用现有侧栏与项目设置,不新增管理屏。服务端 metadata 提供平面的 `rdm.projectId` / `rdm.state`,领域命令用 canonical ID,通用会话接口保留宿主 ID。未就绪项目不能回退创建默认项目;归档/关闭项目仍能读成员、权限和审签状态,不能新工作或修改。
账号切换使所有待返回的列表、工件、卡片和工作续接失效。执行在确认后、排队恢复以及写入前重验当前权限,撤权后的 HITL 回复不能产生工件或恢复执行。
项目 SSE 的历史重放和实时发送也必须按对象过滤。旧上传卡没有可信共享声明,不能因加入成员而暴露文件名、解析器或预览。权限从实际卡片/运行归属取值;明确共享由内部发布入口写入与 channel、seq、type 和 payload hash 绑定的声明,客户端 payload 不授予共享。未知或损坏证明拒绝,跳过私域事件仍推进扫描游标,保留未注册基座兼容。此为内部事件数据约束,不增加下游必需接口。
职责保存先校验对象、三权、成员及版本;无变化不使在途轮次失效,仅实际变更生效前执行既有失效规则。职责版本随事件持久化,旧载荷按实际角色变化重建;写入失败不修改内存职责。
## 验证与交付
追溯:R1 名称→并发/碰撞/旧名保留;R2 身份→真实创建/失败重试/物理 owner/绑定;R3 成员→真实登录、同 ID 项目、个人对话;R4 项目分片→两项目隔离;R5 私域→所有查询/预览/台账/模型上下文及撤权;R6 旧数据→显式预览/幂等修复/保留;R7 真实组合→浏览器、真实模型任务对照、独立 Review 和当前 HEAD CI。
测试原始输出由 evidence 工具写入任务卡,来源分开。单测、桩适配器、源码存在均不作为用户流程已完成的证明。当前完整运行/CI结果在任务卡维护,不在本文预写 PASS。
RDM README/AGENTS 要求合入前回到基座 tag pin;开发期采用隔离 modfile组合验证。发布新 tag 属用户亲手执行的高后果操作,必须先形成已评审且 CI 通过的具体基座候选。tag、合入、部署、运行库修复和清理分别核验,不能合并成一个“完成”。
下一步:完成本增量的组合验收与 tag 消费闭环;随后建议由用户授权在 8788 部署精确组合,并预览/修复已确认的孤立项目。未知历史归属、名称碰撞或身份不一致保留现场交人工裁定。
+2
View File
@@ -189,3 +189,5 @@ RDM 总案把库分期作为支撑与依赖,不覆盖库分期的原始范围
- [RDM 最终目标核对与完整交付方案 r1](2026-10-11-rdm-final-target-completion.md):本轮用户确认系统级唯一项目、管理员上限内覆盖、私域与三权读取边界;覆盖 34 UR/68 SR/10 F、全部69类模板及现有XLSX,当前源复核 RDM d8d7e743。总体方案待评审,实施/迁移/运行验收 NOT_RUN;模板方案为子方案。
- [工作台界面重设计 r0.2](2026-10-12-work-companion-ui-design.md)及[实施计划 r1](2026-10-12-work-companion-ui-plan.md):对话优先、渐进任务摘要、窄屏与单一状态投影;已获本次连续实施授权。
- [系统项目、成员工作入口与私域协作闭环 r1.1](2026-10-13-system-project-membership.md):2026-10-13 已批准方向及阶段 1–9 连续推进;统一生命周期、成员个人会话、每项目两树一网与私域权限;组合验收/CI/tag 消费推进中,部署和线上修复未授权。