chore: update tenant admin spec
This commit is contained in:
@@ -186,15 +186,6 @@ async def require_tenant_admin(
|
|||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
数据隔离通过 `managed_site_ids` 实现:
|
|
||||||
|
|
||||||
```python
|
|
||||||
def site_filter_clause(admin: CurrentTenantAdmin) -> tuple[str, tuple]:
|
|
||||||
"""生成 site_id IN (...) SQL 片段。"""
|
|
||||||
placeholders = ",".join(["%s"] * len(admin.managed_site_ids))
|
|
||||||
return f"site_id IN ({placeholders})", tuple(admin.managed_site_ids)
|
|
||||||
```
|
|
||||||
|
|
||||||
### 前端组件结构
|
### 前端组件结构
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -235,7 +235,7 @@
|
|||||||
|
|
||||||
#### 验收标准
|
#### 验收标准
|
||||||
|
|
||||||
1. THE Backend_API SHALL 在 `apps/backend/app/routers/` 下创建 4 个路由文件:`tenant_auth.py`(登录/JWT 签发/鉴权)、`tenant_users.py`(用户审核+用户管理)、`tenant_excel.py`(Excel 上传/校验/冲突处理)、`tenant_clues.py`(维客线索管理)
|
1. THE Backend_API SHALL 在 `apps/backend/app/routers/` 下创建 4 个路由文件:`tenant_auth.py`(登录/JWT 签发/鉴权)、`tenant_users.py`(用户审核+用户管理)、`tenant_excel.py`(Excel 上传/校验/冲突处理)、`tenant_clues.py`(维客线索管理),以及 1 个管理端路由文件 `admin_tenant_admins.py`(租户管理员 CRUD)
|
||||||
2. THE Backend_API SHALL 将所有租户管理端点注册在 `/api/tenant/` 路径前缀下,与小程序端点(`/api/xcx/`)和管理后台端点(`/api/admin/`)隔离
|
2. THE Backend_API SHALL 将所有租户管理端点注册在 `/api/tenant/` 路径前缀下,管理端租户管理员 CRUD 端点注册在 `/api/admin/tenant-admins/` 路径前缀下,与小程序端点(`/api/xcx/`)隔离
|
||||||
3. THE Backend_API SHALL 为所有 `/api/tenant/*` 端点(登录接口除外)添加 `require_tenant_admin()` 认证依赖,验证 JWT 的 `aud` 字段为 `tenant-admin`
|
3. THE Backend_API SHALL 为所有 `/api/tenant/*` 端点(登录接口除外)添加 `require_tenant_admin()` 认证依赖,验证 JWT 的 `aud` 字段为 `tenant-admin`;为 `/api/admin/tenant-admins/*` 端点添加 `_require_admin()` 认证依赖,验证 site_admin 或 tenant_admin 角色
|
||||||
4. THE Backend_API SHALL 遵循现有的 API 响应格式约定:成功返回 `{ code: 0, data: ... }`,失败返回 `{ code: number, message: string }`,分页返回 `{ items: T[], total: number, page: number, pageSize: number }`
|
4. THE Backend_API SHALL 遵循现有的 API 响应格式约定:成功返回 `{ code: 0, data: ... }`,失败返回 `{ code: number, message: string }`,分页返回 `{ items: T[], total: number, page: number, pageSize: number }`
|
||||||
|
|||||||
Reference in New Issue
Block a user