本文档全面概述了 AFFiNE 的实时协作功能,包括工作区共享、权限管理和协作编辑。有关身份验证和用户管理的信息,请参阅相关的后端架构部分。
AFFiNE 提供强大的协作功能,使用户能够共同处理共享的工作区。该系统支持实时协作编辑、基于权限的访问控制以及邀请和管理工作区成员的各种方法。
主要的协作功能包括:
来源
AFFiNE 的协作功能构建在分布式架构之上,该架构支持跨多个客户端的实时同步。
协作系统由几个关键组件组成:
Y-Provider:Yjs 的包装器,Yjs 是一个 CRDT(无冲突复制数据类型)实现,通过自动处理冲突和合并更改来实现实时协作。
NBStore:一个本地存储模块,用于在本地持久化协作文档数据。
WorkspaceResolver & TeamWorkspaceResolver:GraphQL 解析器,处理工作区操作,包括成员管理和权限。
AccessController:处理所有操作的权限检查。
WorkspaceService:管理与工作区相关的业务逻辑,包括邀请和通知。
来源
AFFiNE 为工作区实施了一个基于角色的权限系统,该系统控制成员可以执行的操作。
所有者:拥有对工作区的完全控制权,包括删除工作区和转移所有权。
管理员:可以管理工作区的绝大部分方面,包括用户和设置。
协作者:可以创建、编辑和删除文档,但管理能力有限。
外部人员:访问权限有限,通常为只读权限。
权限检查由 AccessController 服务执行,该服务验证用户是否对工作区或文档执行特定操作的权限。
来源
AFFiNE 提供多种方式邀请用户协作工作区。
用户可以通过电子邮件直接邀请。
团队工作区可以生成带有过期时间的邀请链接。
创建链接:工作区所有者/管理员可以创建在设定时间后(例如一天、一周)过期的邀请链接。
接受链接:当用户打开邀请链接时,他们可以加入工作区,但需遵守配额限制。
审批流程:对于团队工作区,新成员可能需要审批,尤其是在工作区已达到成员配额时。
团队工作区支持一次性邀请多个用户。
来源
团队工作区提供为组织设计的增强协作功能。
团队工作区具有可配置的成员上限。
团队工作区实施了新成员的审批流程。
审核中:当成员通过邀请链接加入时,他们可能处于“审核中”状态。
管理员审批:工作区管理员可以批准或拒绝待处理的成员。
配额管理:当成员数量超出限制时,管理员可以升级工作区配额或管理现有成员。
团队成员管理的附加功能包括:
来源
AFFiNE 支持用户之间的实时协作,允许多人同时编辑同一文档。
实时编辑:一位用户所做的更改会立即对其他协作者可见。
用户在线状态:系统显示谁当前正在编辑文档以及他们光标的位置。
内容同步:所有文档元素都会同步,包括:
冲突解决:使用 Yjs 的 CRDT 方法,冲突会自动解决,无需手动干预。
来源
除了工作区级别的权限之外,AFFiNE 还支持文档特定的权限控制。
文档权限可以覆盖工作区权限,允许更精细化的访问控制。
文档可以被共享:
与工作区成员共享:授予工作区成员特定权限。
公开共享:使文档可供非成员访问。
来源
前端提供了用于管理工作区成员的组件和服务。
前端使用 GraphQL 与后端权限系统进行交互。
来源
AFFiNE 的协作功能支持国际化,以适应全球团队。
这确保了用户无论其偏好语言如何,都能使用协作功能。
来源
以下测试演示了实时协作的实际操作方法
此测试说明了
来源
此测试展示了工作流程,包括
来源