修复:解决后端循环导入问题

问题:Docker 启动时后端服务崩溃,提示循环导入错误
原因:permission_cache.py 在模块级别导入 project_permissions.py,而后者也导入前者
解决:使用延迟导入,在方法内部导入所需的函数

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
Cheng Zhou
2026-05-14 09:34:54 +08:00
parent 7b397640b9
commit fdf640692d
+6 -7
View File
@@ -12,11 +12,6 @@ from typing import Any
from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.ext.asyncio import AsyncSession
from app.core.project_permissions import (
get_project_role_permissions,
get_member_role,
)
class PermissionCache: class PermissionCache:
"""权限缓存管理器 """权限缓存管理器
@@ -63,6 +58,8 @@ class PermissionCache:
Returns: Returns:
权限矩阵:{role: {module: {action: bool}}} 权限矩阵:{role: {module: {action: bool}}}
""" """
from app.core.project_permissions import get_project_role_permissions as _get_project_role_permissions
if ttl is None: if ttl is None:
ttl = self.default_ttl ttl = self.default_ttl
@@ -75,7 +72,7 @@ class PermissionCache:
return cached_data return cached_data
# 缓存未命中,从数据库查询 # 缓存未命中,从数据库查询
permissions = await get_project_role_permissions(db, study_id) permissions = await _get_project_role_permissions(db, study_id)
# 存储到缓存 # 存储到缓存
self._project_permissions_cache[cache_key] = (permissions, time.time()) self._project_permissions_cache[cache_key] = (permissions, time.time())
@@ -100,6 +97,8 @@ class PermissionCache:
Returns: Returns:
成员在项目中的角色,如果不是成员则返回 None 成员在项目中的角色,如果不是成员则返回 None
""" """
from app.core.project_permissions import get_member_role as _get_member_role
if ttl is None: if ttl is None:
ttl = self.default_ttl ttl = self.default_ttl
@@ -112,7 +111,7 @@ class PermissionCache:
return cached_role return cached_role
# 缓存未命中,从数据库查询 # 缓存未命中,从数据库查询
role = await get_member_role(db, study_id, user_id) role = await _get_member_role(db, study_id, user_id)
# 存储到缓存 # 存储到缓存
self._member_role_cache[cache_key] = (role, time.time()) self._member_role_cache[cache_key] = (role, time.time())