refactor: align backend with company-site-member schema and system-level RBAC groups

This commit is contained in:
Chris
2026-03-30 01:59:50 +08:00
parent 0f0b197b32
commit 602c5443ad
35 changed files with 1276 additions and 690 deletions

85
app/schemas/catalog.py Normal file
View File

@@ -0,0 +1,85 @@
from pydantic import BaseModel
class SystemCreateRequest(BaseModel):
system_key: str
name: str
status: str = "active"
class SystemItem(BaseModel):
id: str
system_key: str
name: str
status: str
class ModuleCreateRequest(BaseModel):
system_key: str
module_key: str
name: str
status: str = "active"
class ModuleItem(BaseModel):
id: str
system_key: str | None = None
module_key: str
name: str
status: str
class CompanyCreateRequest(BaseModel):
company_key: str
name: str
status: str = "active"
class CompanyItem(BaseModel):
id: str
company_key: str
name: str
status: str
class SiteCreateRequest(BaseModel):
site_key: str
company_key: str
name: str
status: str = "active"
class SiteItem(BaseModel):
id: str
site_key: str
company_key: str
name: str
status: str
class MemberItem(BaseModel):
id: str
authentik_sub: str
email: str | None = None
display_name: str | None = None
is_active: bool
class ListResponse(BaseModel):
items: list
total: int
limit: int
offset: int
class PermissionGroupCreateRequest(BaseModel):
group_key: str
name: str
status: str = "active"
class PermissionGroupItem(BaseModel):
id: str
group_key: str
name: str
status: str

View File

@@ -1,37 +0,0 @@
from pydantic import BaseModel
from app.schemas.organizations import OrganizationSummary
class MemberCreateRequest(BaseModel):
authentik_sub: str
email: str | None = None
display_name: str | None = None
is_active: bool = True
class MemberUpdateRequest(BaseModel):
email: str | None = None
display_name: str | None = None
is_active: bool | None = None
class MemberSummary(BaseModel):
id: str
authentik_sub: str
authentik_user_id: int | None = None
email: str | None = None
display_name: str | None = None
is_active: bool
class MemberListResponse(BaseModel):
items: list[MemberSummary]
total: int
limit: int
offset: int
class MemberOrganizationsResponse(BaseModel):
member: MemberSummary
organizations: list[OrganizationSummary]

View File

@@ -1,29 +0,0 @@
from pydantic import BaseModel
class OrganizationCreateRequest(BaseModel):
org_code: str
name: str
tax_id: str | None = None
status: str = "active"
class OrganizationUpdateRequest(BaseModel):
name: str | None = None
tax_id: str | None = None
status: str | None = None
class OrganizationSummary(BaseModel):
id: str
org_code: str
name: str
tax_id: str | None = None
status: str
class OrganizationListResponse(BaseModel):
items: list[OrganizationSummary]
total: int
limit: int
offset: int

View File

@@ -7,7 +7,8 @@ class PermissionGrantRequest(BaseModel):
display_name: str | None = None
scope_type: str
scope_id: str
module: str
system: str
module: str | None = None
action: str
@@ -15,13 +16,15 @@ class PermissionRevokeRequest(BaseModel):
authentik_sub: str
scope_type: str
scope_id: str
module: str
system: str
module: str | None = None
action: str
class PermissionItem(BaseModel):
scope_type: str
scope_id: str
system: str | None = None
module: str
action: str