- Implement UpgradeSubscriptionUseCase (Free→Pro→Enterprise)
- Prevent downgrades (must use cancel to return to Free)
- Auto-set quotas and expiration date on upgrade
- Implement CancelSubscriptionUseCase to downgrade to Free
- Only workspace owner can manage subscription
- Add 8 comprehensive unit tests (all passed)
Phase 4 Task 21/68 completed
- Implement ListMembersUseCase to get all workspace members
- Return member info with user details (username, email, display_name)
- Show role, inviter, and join time for each member
- Only workspace members can view member list
- Add 6 comprehensive unit tests (all passed)
Phase 4 Task 18/68 completed
- Implement ListWorkspacesUseCase to get user's all workspaces
- Return workspace info with user's role and member count
- Implement GetWorkspaceDetailUseCase with permission check
- Show detailed subscription and storage info
- Verify user is member before showing details
- Add 8 comprehensive unit tests (all passed)
Phase 4 Task 17/68 completed
- Implement UpdateMemberRoleUseCase with role-based permission
- Owner/Admin can change roles, but Admin cannot change other Admins
- Cannot change owner's role or change your own role
- Cannot change to owner role (owner is unique)
- Validate role not already assigned
- Add 8 comprehensive unit tests (all passed)
Phase 4 Task 16/68 completed
- Implement AcceptInvitationUseCase with validation
- Check invitation status, expiration, and email match
- Auto-create WorkspaceMember on accept
- Handle case when user is already a member
- Implement DeclineInvitationUseCase to reject invitations
- Update invitation status (accepted/declined/expired)
- Add 9 comprehensive unit tests (all passed)
Phase 4 Task 14/68 completed
- Implement InviteMemberUseCase with role-based permission check
- Only owner/admin can invite members (not regular members)
- Cannot invite as owner (owner is unique per workspace)
- Check for duplicate invitations and existing members
- Generate invitation token with 7-day expiration
- Send invitation email with accept link
- Add 7 comprehensive unit tests (all passed)
Phase 4 Task 13/68 completed
- Implement CreateWorkspaceUseCase with subscription plan support
- Auto-configure quotas based on plan (free/pro/enterprise)
- Auto-create owner membership record on workspace creation
- Validate workspace name (required, max 100 chars)
- Validate owner user exists before creation
- Add 7 comprehensive unit tests (all passed)
Phase 4 Task 12/68 completed