docs: add workspace collaboration design and client demos
Document shared workspaces, realtime messaging, member handling, and source permissions. Include local interaction demos and verification scripts, and update development startup for Electron Node mode. Production collaboration services remain unimplemented.
This commit is contained in:
@@ -5,8 +5,8 @@
|
||||
| 项目 | 内容 |
|
||||
| --- | --- |
|
||||
| 状态 | 设计中 |
|
||||
| 版本 | 0.3 |
|
||||
| 日期 | 2026-09-09 |
|
||||
| 版本 | 0.5 |
|
||||
| 日期 | 2026-09-28 |
|
||||
| 关联 PRD | [ShareServer PRD](./prd.md) |
|
||||
| 共享规则 | [共享网络总体设计](../../../../goodbuddy/docs/architecture/share-network-architecture.md) |
|
||||
|
||||
@@ -61,6 +61,9 @@ ShareServer 只路由调用方冻结的 provider,不在离线、繁忙或失
|
||||
事实,不能读取原始条目、分区内容、来源正文或检索结果。新增可读分区按权限扩大重新审批,
|
||||
移除分区可以立即收紧。
|
||||
|
||||
以上限制针对本地记忆授权。用户另行选定并发布的知识、监督回顾副本按 FR-18 计算内容授权,
|
||||
不使底层记忆分区可浏览;回答使用与原文读取是不同动作。
|
||||
|
||||
### INV-11 服务端检查点不等于源文件已保存
|
||||
|
||||
ONLYOFFICE 保存只产生 ShareServer 权威的 `DocumentCheckpoint`。只有 Desktop 或远程
|
||||
@@ -156,6 +159,63 @@ checkpoint_available -> dirty
|
||||
`offline` 不删除已确认 checkpoint。`outcome_unknown` 必须通过对象摘要和 callback 幂等键查询
|
||||
同一次保存,不能自动创建另一份 checkpoint。
|
||||
|
||||
### 2.8 工作空间共享与资料同步
|
||||
|
||||
本地 Workspace 始终具有本地身份,共享关联记录目标组织和服务端身份。每个关联单独记录:
|
||||
|
||||
| 维度 | 状态与含义 |
|
||||
| --- | --- |
|
||||
| 共享生命周期 | `local_only -> enable_pending -> shared -> revoke_pending -> revoked`;开启失败回到 local_only 并保留原因 |
|
||||
| 资料同步策略 | `on_demand` 或 `periodic`;暂停只暂停资料自动交换,不影响实时消息或撤销共享 |
|
||||
| 消息连接 | 实时订阅及断线补收独立运行,消息与处理状态不等待资料周期 |
|
||||
| 连接 | online / offline,与共享授权独立 |
|
||||
| 同步结果 | idle / syncing / partial / failed / conflict,附最近成功时间及未确认变更 |
|
||||
|
||||
`revoked` 表示该共享关联终止,本地 Workspace 仍可使用。重新开启使用新关联。撤销请求结果
|
||||
未知时保持 `revoke_pending` 并查询同一请求;权限被拒不能伪装为已撤销。已有共享关联被
|
||||
服务端移除或组织停用时,由服务端状态收紧访问,本地的 shared 缓存不产生权威。
|
||||
|
||||
开启共享仅发布确认清单中的内容。新增成员可以访问当前被授予的空间历史,管理者添加前
|
||||
必须确认该范围;不能通过添加成员突破来源授权。首期同一关联不可跨组织移动。
|
||||
|
||||
同步以逐项确认推进进度;冲突保留本地和远端版本,权限与撤销始终采用服务端当前权威。
|
||||
发起关闭后本端停止普通上传,联网先提交关闭;服务端已确认的关闭阻止旧队列重放。
|
||||
已经发送的历史不能通过暂停、删除本地队列或关闭共享改写为从未发送。
|
||||
|
||||
### 2.9 消息交付与处理
|
||||
|
||||
消息交付:`local_pending -> submitting -> accepted | rejected`。local_pending 显示“待发送”。确认丢失时保留未确认状态,
|
||||
按稳定消息身份重试或查询;不能先生成第二个身份。accepted 仅表示服务端接收,不表示成员
|
||||
设备收到、已读或已执行。公开回复同样先经历交付确认。未确认 AI 草稿存入本人私有范围,
|
||||
其正文不进入空间实时流、公开历史和普通成员的离线补收;只可向本人发送私有草稿就绪通知。
|
||||
|
||||
普通消息和提及只有交付状态;只有 accepted 且明确携带“请求处理”及处理人身份的消息进入处理流程:
|
||||
|
||||
```text
|
||||
本人模式 / 要求本人确认 -> awaiting_human -> human_handling -> replied_by_human
|
||||
分身先回复 -> ai_running -> replied_by_ai
|
||||
分身起草 -> ai_running -> draft_ready -> replied_by_human_confirmed
|
||||
ai_running / draft_ready / replied_by_ai -> human_handling
|
||||
AI 不可用 / 失败 -> awaiting_human(保留原因)
|
||||
```
|
||||
|
||||
状态描述一次定向请求的当前处理事实。接手保留此前回复,不覆盖作者;本次回复完成后继续
|
||||
讨论可创建关联回复或新请求。空间撤销、成员移除或资料授权失效可将未完成处理阻止在当前
|
||||
状态并显示原因,不能标记为已完成。已发布事实保留,新的读取仍需有效授权。
|
||||
|
||||
开启尚未确认时也可 `enable_pending -> revoke_pending`。关闭请求绑定原开启操作身份,服务端
|
||||
必须串行确定开启是否已生效:已生效则撤销同一关联,未生效则阻止该开启操作随后生效。
|
||||
仅在确认不存在仍有效的关联后显示关闭完成。重连时此检查优先于普通上传。
|
||||
|
||||
成员范围扩大时检查既有共享正文、附件及上下文快照的来源授权。若新增受众不被允许,拒绝
|
||||
该成员变更,保留原成员集合;管理者先补齐授权或移除不兼容共享内容,再提交变更。
|
||||
资料定期模式在客户端运行且联网时按周期交换资料增量。显式提交的资料按需同步在重连后继续重试,
|
||||
暂停资料自动同步不取消此类显式请求;未提交本地草稿不得随重连上传。
|
||||
|
||||
实时消息由服务端接受后通知在线成员;客户端按服务端进度补收消息、回复与状态事件,按稳定
|
||||
身份及状态版本去重合并,旧事件不能回退处理状态。断线恢复可以重复传输事件,不得重新创建
|
||||
处理任务。消息附带内容准备失败时保持待发送并显示原因,不先创建缺少上下文的处理请求。
|
||||
|
||||
## 3. 授权计算顺序
|
||||
|
||||
1. 验证请求身份、会话 audience 和 organization。
|
||||
@@ -169,6 +229,10 @@ checkpoint_available -> dirty
|
||||
|
||||
目录查询可以预计算“可能可用”,但不能替代第 1 至 8 步。
|
||||
|
||||
此顺序用于能力调用。空间消息先检查组织、空间、发送者、提及身份、处理人(如有)和附带内容的共享范围,
|
||||
普通发言及提及无需 Publication;只有显式处理请求选择分身执行时再走上述能力授权。空间访问授权不能代替
|
||||
Publication/Grant,本人草稿确认也不能绕过当前访问权限。
|
||||
|
||||
## 4. 组织角色边界
|
||||
|
||||
| 动作 | 系统管理员 | 组织管理员 | 发布者 | 审批人 | 审计员 | 成员 |
|
||||
@@ -200,6 +264,42 @@ checkpoint_available -> dirty
|
||||
|
||||
中继容量不足只产生排队或资源错误,不切换 provider,不改变是否允许中继。
|
||||
|
||||
### 5.1 成员消息的处理决定
|
||||
|
||||
普通消息与提及不创建处理任务。按以下顺序决定一次已接收的显式处理请求的处理方式:
|
||||
|
||||
1. 校验当前空间、成员和附带内容权限。无权时阻止处理,不改投其他人。
|
||||
2. “需要本人确认”直接进入 awaiting_human。
|
||||
3. 使用服务端接受处理请求时的成员空间偏好版本;未配置时为本人处理。
|
||||
4. 分身方式解析接收者明确绑定的 Publication/version/provider,并记录任务关联;不可用时转本人待处理。
|
||||
5. 执行前和发布前重验权限及处理版本。普通偏好更新不改写在途任务,撤销或本人接手可以阻止后续发布。
|
||||
|
||||
消息身份、AI 执行身份和公开回复身份分别幂等。多个设备不能对同一待处理版本创建重复任务。
|
||||
本人接手以服务端原子变更处理版本为生效点;其后旧版本 AI 结果只可作为不公开的结果保留,
|
||||
不得自动发送。若 AI 回复先发布,则保留该回复,本人可在其后补充。
|
||||
|
||||
确认草稿绑定草稿版本、确认者和最终正文摘要。其他成员和普通审计不能读取未发送草稿,
|
||||
政策审批产生的 Grant 不构成本人对该正文的确认。
|
||||
|
||||
确认操作原子消费待确认的处理版本。相同操作重试返回既有结果;不同设备对同一草稿提交不同
|
||||
正文时仅首个成功确认生效,后续返回版本冲突并保留客户端编辑。本人接手也推进处理版本,
|
||||
其后迟到的旧草稿确认不能另建回复绕过冲突。
|
||||
|
||||
### 5.2 来源、受众与动作
|
||||
|
||||
可用内容为来源授权、当前入口受众、动作、空间权限、组织策略及 Provider 本地权限的交集。
|
||||
个人外部入口与组织空间独立授权;同一分身身份复用不复制其所有来源权限。
|
||||
|
||||
| 回顾用于回答 | 回顾原文可读 | 行为 |
|
||||
| --- | --- | --- |
|
||||
| 否 | 否 | 不向该入口提供回顾 |
|
||||
| 是 | 否 | 分身可参考,访客不能取得原文 |
|
||||
| 否 | 是 | 访客可阅读,分身不得将其作为回答来源 |
|
||||
| 是 | 是 | 两种动作均需按各自授权检查 |
|
||||
|
||||
撤销影响新读取、检索和发布,不追溯删除已经发送的文字或已下载副本。同步内容快照不冻结
|
||||
授权;发送后、执行前授权失效时,应阻止使用相应来源并说明原因,不能因为曾经发送就继续访问。
|
||||
|
||||
## 6. 更新策略优先级
|
||||
|
||||
```text
|
||||
@@ -258,6 +358,10 @@ checkpoint_available -> dirty
|
||||
| `FR-12` | 短期权威恢复规则和逻辑完整性;部署结构由技术设计定义 |
|
||||
| `FR-13` | 注册、Publication、目录与授权不变量,provider 冻结及 `INV-10` |
|
||||
| `FR-14` | `INV-11`、`INV-12`、DocumentEditSession、Office 保存与保留规则 |
|
||||
| `FR-15` | 2.8 工作空间共享状态、组织与空间成员边界 |
|
||||
| `FR-16` | 2.8 资料同步与消息连接分离;2.9 交付确认、实时更新与补收 |
|
||||
| `FR-17` | 2.9 普通消息与处理请求分离;5.1 处理优先级与接手竞争 |
|
||||
| `FR-18` | INV-10、5.2 来源、受众与动作交集 |
|
||||
|
||||
## 10. 逻辑完整性
|
||||
|
||||
|
||||
Reference in New Issue
Block a user