feat(workspace): add WorkspaceInvitation entity
Deploy / Deploy Staging (push) Failing after 6s
Deploy / Deploy Production (push) Has been skipped
Tests / test (push) Failing after 8s
Tests / lint (push) Failing after 6s

- Add InvitationStatus enum (pending/accepted/declined/expired)
- Add WorkspaceInvitation entity to track invitation lifecycle
- Store inviter, invitee email, role, and invitation token
- Track status, expiration, and acceptance time
- Foundation for workspace invitation system

Phase 4 Task 11/68 completed
This commit is contained in:
Xiaoxia AI
2026-06-17 01:27:15 +08:00
parent 19ab0e2fc4
commit 90c34949b8
+23
View File
@@ -60,6 +60,14 @@ class WorkspaceMemberRole(StrEnum):
VIEWER = "viewer" # 查看者(只读)
class InvitationStatus(StrEnum):
"""邀请状态"""
PENDING = "pending" # 待处理
ACCEPTED = "accepted" # 已接受
DECLINED = "declined" # 已拒绝
EXPIRED = "expired" # 已过期
@dataclass(slots=True)
class WorkspaceMember:
"""工作空间成员"""
@@ -71,6 +79,21 @@ class WorkspaceMember:
joined_at: datetime = field(default_factory=lambda: datetime.now(timezone.utc))
@dataclass(slots=True)
class WorkspaceInvitation:
"""工作空间邀请"""
id: str
workspace_id: str
inviter_user_id: str # 邀请人
invitee_email: str # 被邀请人邮箱
role: str # 邀请角色
invitation_token: str # 邀请令牌
status: str = "pending" # pending, accepted, declined, expired
expires_at: datetime | None = None # 过期时间
accepted_at: datetime | None = None # 接受时间
created_at: datetime = field(default_factory=lambda: datetime.now(timezone.utc))
@dataclass(slots=True)
class Project:
id: str