Commit Graph

57 Commits

Author SHA1 Message Date
Xiaoxia AI 92a515fa05 docs(deploy): document production runtime image gate 2026-06-22 14:57:40 +08:00
Xiaoxia AI 8a9542274f fix(deploy): require runtime image artifact for production 2026-06-22 14:53:48 +08:00
Xiaoxia AI df7c4ee0d7 chore(release): add runtime image artifact deploy 2026-06-22 14:48:33 +08:00
Xiaoxia AI 0042c4d54f fix(web): route admin mocks to coming soon 2026-06-22 10:55:32 +08:00
Xiaoxia AI 51a1729c59 fix(web): disable unsupported subscription api calls 2026-06-22 10:35:24 +08:00
Xiaoxia AI 6fb8d11cec fix(deploy): skip runtime image builds on production host 2026-06-22 10:04:26 +08:00
Xiaoxia AI 1cf43fa6a0 fix(deploy): isolate production web api proxy 2026-06-22 10:02:03 +08:00
Xiaoxia AI 1939878dec fix(deploy): require prebuilt web artifact for production 2026-06-22 09:34:27 +08:00
Xiaoxia AI c7f243d7d8 fix(deploy): cache web dependencies during image build 2026-06-22 07:47:49 +08:00
Xiaoxia AI d7ff0dceb1 fix(deploy): allow direct production deploy host prefix 2026-06-22 07:15:02 +08:00
Xiaoxia AI aa2b190866 fix(deploy): allow direct staging deploy host prefix 2026-06-21 23:13:51 +08:00
Xiaoxia AI 238cffcbcf fix(deploy): align staging deploy host prefix 2026-06-21 23:11:36 +08:00
Xiaoxia AI 70a9f4f4b5 fix(deploy): use mirrored web base images 2026-06-21 17:23:24 +08:00
Xiaoxia AI 2874ab0ac0 fix(deploy): rebuild web image during releases 2026-06-21 16:49:00 +08:00
Xiaoxia AI 3680888d36 fix(auth): allow registration without display name 2026-06-21 16:24:21 +08:00
Xiaoxia AI a186f367f3 fix(deploy): separate production application deployment 2026-06-21 15:50:40 +08:00
Xiaoxia AI 713a244e80 chore(release): provision separated production infrastructure 2026-06-21 15:35:09 +08:00
Xiaoxia AI 14e3cde119 chore(release): initialize separated production env 2026-06-21 14:24:23 +08:00
Xiaoxia AI f9c012098f chore(release): allow smtp skip in strict smoke 2026-06-21 14:09:29 +08:00
Xiaoxia AI b7e69c4e0b chore(release): script database backup runbook 2026-06-21 13:26:45 +08:00
Xiaoxia AI e98dfc9ffb chore(release): add alembic preflight check 2026-06-21 13:01:49 +08:00
Xiaoxia AI ccb6786e0b chore(release): add external service smoke checks 2026-06-21 12:50:33 +08:00
Xiaoxia AI 6d68c28860 chore(release): validate production env readiness 2026-06-21 12:34:51 +08:00
Xiaoxia AI ccb7e1e57a refactor(storage): retire minio runtime naming 2026-06-21 11:20:55 +08:00
Xiaoxia AI 3594cc1216 refactor(auth): configure external service adapters 2026-06-21 11:04:07 +08:00
Xiaoxia AI b78a290bdd feat(auth): add verification and password reset routes 2026-06-21 10:40:56 +08:00
Xiaoxia AI 9872c20d30 refactor(adapters): remove legacy postgres adapter 2026-06-21 10:11:18 +08:00
Xiaoxia AI 6ba97351aa refactor(auth): remove auth simple shim 2026-06-21 09:57:17 +08:00
Xiaoxia AI 27ea04264f feat(workspace): restore member management routes 2026-06-21 09:36:08 +08:00
Xiaoxia AI 383151efcb feat(workspace): restore core routes on sqlalchemy adapters 2026-06-21 09:22:09 +08:00
Xiaoxia AI a912e17868 refactor(auth): replace legacy middleware sentinel 2026-06-21 09:06:22 +08:00
Xiaoxia AI cddd9948e3 feat(auth): add bearer current user dependency 2026-06-21 08:35:25 +08:00
Xiaoxia AI 93271f7dda refactor(auth): route simple auth through use cases 2026-06-21 08:22:49 +08:00
Xiaoxia AI ebae5f51b0 fix(schema): forbid auto create schema in deployed envs 2026-06-21 07:36:46 +08:00
Xiaoxia AI bfbaddbd9a style: normalize python formatting gates 2026-06-21 06:52:19 +08:00
Xiaoxia AI 4b4602a0fd refactor(schema): mark sqlalchemy models as schema mainline 2026-06-21 06:30:55 +08:00
Xiaoxia AI 788de9a245 refactor(adapters): deprecate postgres repository path 2026-06-21 02:15:56 +08:00
Xiaoxia AI d25bd753a2 refactor(api): guard route adapter boundaries 2026-06-21 02:02:55 +08:00
Xiaoxia AI 0e93d2e71f refactor(domain): move auth infrastructure to adapters 2026-06-21 00:46:56 +08:00
Xiaoxia AI 57310f33d4 fix(auth): harden simple auth and router imports 2026-06-21 00:27:58 +08:00
Xiaoxia AI 4e33158d8d feat(quota): add quota checking and management system
- Implement QuotaChecker for project and storage limits
- Check project count before creation (respect max_projects)
- Check storage availability before upload
- Get quota status with usage percentages
- Update storage usage (increase/decrease)
- Define warning levels (normal/warning/critical/exceeded)
- Add ProjectRepository interface for project counting
- Add 14 comprehensive unit tests (all passed)

Phase 4 Task 22/68 completed
2026-06-17 07:24:14 +08:00
Xiaoxia AI dba2fe94ac feat(subscription): add upgrade and cancel subscription use cases
- 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
2026-06-17 07:20:34 +08:00
Xiaoxia AI 80c29ba940 feat(permissions): add permission system and checker
- Implement PermissionChecker for workspace access control
- Define Permission constants for all operations
- Define ROLE_PERMISSIONS mapping (Owner/Admin/Member/Viewer)
- Support workspace/member/project/asset permission checks
- Helper functions: check_is_owner, check_can_manage_members, etc.
- Add 15 comprehensive unit tests (all passed)

Phase 4 Task 20/68 completed
2026-06-17 07:16:02 +08:00
Xiaoxia AI 0a2137c2aa feat(workspace): add list members use case
- 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
2026-06-17 07:06:33 +08:00
Xiaoxia AI ee3935abdc feat(workspace): add list workspaces and get detail use cases
- 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
2026-06-17 07:04:55 +08:00
Xiaoxia AI a222c7f278 feat(workspace): add update member role use case
- 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
2026-06-17 05:12:34 +08:00
Xiaoxia AI 8ff42a1bf9 feat(workspace): add remove member and leave workspace use cases
- Implement RemoveMemberUseCase with role-based permission
- Owner/Admin can remove members, but Admin cannot remove other Admins
- Cannot remove workspace owner or remove yourself
- Implement LeaveWorkspaceUseCase for self-removal
- Owner cannot leave (must transfer ownership or delete workspace first)
- Add 9 comprehensive unit tests (all passed)

Phase 4 Task 15/68 completed
2026-06-17 05:10:06 +08:00
Xiaoxia AI 82240d7953 feat(workspace): add accept and decline invitation use cases
- 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
2026-06-17 05:08:31 +08:00
Xiaoxia AI 5d77d334ee feat(workspace): add invite member use case
- 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
2026-06-17 05:06:57 +08:00
Xiaoxia AI 7a03f9636a feat(workspace): add create workspace use case
- 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
2026-06-17 01:28:09 +08:00