修复权限管理页面错误

1. 修复 ApiPermissions.vue 中的数据绑定错误
   - 从 axios 响应中正确提取 .data 属性
   - 修复 loadPermissionData、loadMonitoringData、save 函数

2. 禁用 FastAPI 响应验证
   - 在 api_permissions.py 中添加 response_model=None
   - 避免 Pydantic 验证错误

3. 注册权限监控 API 路由
   - 在 router.py 中导入并注册 permission_monitoring 模块
   - 修改 permission_monitoring.py 的路由前缀

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
Cheng Zhou
2026-05-14 10:41:16 +08:00
parent ebbb6aed25
commit 6eea6b35fd
4 changed files with 16 additions and 11 deletions
+4 -2
View File
@@ -52,12 +52,13 @@ async def list_api_endpoints(
"",
summary="获取项目的接口级权限矩阵",
description="返回项目中各角色对API端点的权限配置",
response_model=None,
)
async def get_study_api_permissions(
study_id: uuid.UUID,
_=Depends(require_study_roles(["PM"])),
db: Annotated[AsyncSession, Depends(get_db_session)] = None,
) -> dict[str, dict[str, dict[str, bool]]]:
):
"""获取项目的接口级权限矩阵
返回格式:
@@ -90,13 +91,14 @@ async def get_study_api_permissions(
summary="更新项目的接口级权限矩阵",
description="批量更新项目中各角色对API端点的权限配置",
status_code=status.HTTP_200_OK,
response_model=None,
)
async def update_study_api_permissions(
study_id: uuid.UUID,
payload: dict[str, dict[str, bool]],
_=Depends(require_study_roles(["PM"])),
db: Annotated[AsyncSession, Depends(get_db_session)] = None,
) -> dict[str, dict[str, dict[str, bool]]]:
):
"""更新项目的接口级权限矩阵
请求体格式:
+1 -1
View File
@@ -10,7 +10,7 @@ from fastapi import APIRouter, Depends, status
from app.core.deps import get_current_user
from app.core.permission_monitor import get_permission_monitor
router = APIRouter(prefix="/api/v1/permission-monitoring", tags=["permission-monitoring"])
router = APIRouter(prefix="/permission-monitoring", tags=["permission-monitoring"])
@router.get("/metrics", status_code=status.HTTP_200_OK)
+2 -1
View File
@@ -1,6 +1,6 @@
from fastapi import APIRouter
from app.api.v1 import auth, users, admin_users, studies, sites, members, attachments, audit_logs, dashboard, subjects, visits, aes, finance_dashboard, finance_contracts, fees_contracts, fees_attachments, drug_shipments, material_equipments, project_milestones, startup, knowledge_notes, subject_histories, subject_pds, study_subject_pds, faq_categories, faqs, documents, overview, notifications, monitoring_visit_issues, project_permissions, api_permissions
from app.api.v1 import auth, users, admin_users, studies, sites, members, attachments, audit_logs, dashboard, subjects, visits, aes, finance_dashboard, finance_contracts, fees_contracts, fees_attachments, drug_shipments, material_equipments, project_milestones, startup, knowledge_notes, subject_histories, subject_pds, study_subject_pds, faq_categories, faqs, documents, overview, notifications, monitoring_visit_issues, project_permissions, api_permissions, permission_monitoring
api_router = APIRouter()
@@ -37,3 +37,4 @@ api_router.include_router(study_subject_pds.router, prefix="/studies/{study_id}"
api_router.include_router(faq_categories.router, prefix="/faqs/categories", tags=["faq-categories"])
api_router.include_router(faqs.router, prefix="/faqs/items", tags=["faqs"])
api_router.include_router(documents.router, prefix="", tags=["documents"])
api_router.include_router(permission_monitoring.router)