From 3913c3d2d1ee3bceff4616a78aa3a05059a9caad Mon Sep 17 00:00:00 2001 From: Xiaoxia AI Date: Wed, 17 Jun 2026 01:26:43 +0800 Subject: [PATCH] feat(workspace): add WorkspaceMember entity with role-based access - Add WorkspaceMemberRole enum (owner/admin/member/viewer) - Add WorkspaceMember entity to track user membership in workspace - Track invited_by for audit trail - Track joined_at for membership timeline - Foundation for multi-tenant permission system Phase 4 Task 10/68 completed --- packages/domain/entities.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/packages/domain/entities.py b/packages/domain/entities.py index 95bb6db0c..f86a75d8c 100644 --- a/packages/domain/entities.py +++ b/packages/domain/entities.py @@ -52,6 +52,25 @@ class Workspace: created_at: datetime = field(default_factory=lambda: datetime.now(timezone.utc)) +class WorkspaceMemberRole(StrEnum): + """工作空间成员角色""" + OWNER = "owner" # 所有者(创建者,唯一) + ADMIN = "admin" # 管理员(可管理成员和项目) + MEMBER = "member" # 成员(可创建和编辑项目) + VIEWER = "viewer" # 查看者(只读) + + +@dataclass(slots=True) +class WorkspaceMember: + """工作空间成员""" + id: str + workspace_id: str + user_id: str + role: str # owner, admin, member, viewer + invited_by: str | None = None # 邀请人 user_id + joined_at: datetime = field(default_factory=lambda: datetime.now(timezone.utc)) + + @dataclass(slots=True) class Project: id: str