refactor(ResolveRoleContext): 日志改为输出用户名、角色名与租户-公司名,去掉 UUID 噪声
This commit is contained in:
1 parent
8b7800032d
commit
b35e036b51
1 file changed
+26
-6
+26
-6
@@ -1,11 +1,28 @@
|
||||
import logging
|
||||
from functools import lru_cache
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from gvsdsdk.models import UserRole, Role
|
||||
from gvsdsdk.models import UserRole, Role, Tenant, Company
|
||||
from gvsdsdk.model_utils import UUIDObj
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@lru_cache(maxsize=1024)
|
||||
def _TenantName(TenantUuid: str) -> str:
|
||||
"""租户 UUID → 租户名(日志展示用,带缓存避免每请求查库)"""
|
||||
return Tenant.objects.filter(
|
||||
TenantUUID=UUIDObj(TenantUuid).bytes
|
||||
).values_list('TenantName', flat=True).first() or ''
|
||||
|
||||
|
||||
@lru_cache(maxsize=1024)
|
||||
def _CompanyName(CompanyUuid: str) -> str:
|
||||
"""公司 UUID → 公司名(日志展示用,带缓存避免每请求查库)"""
|
||||
return Company.objects.filter(
|
||||
CompanyUUID=UUIDObj(CompanyUuid).bytes
|
||||
).values_list('CompanyName', flat=True).first() or ''
|
||||
|
||||
|
||||
def ResolveRoleContext(request, user=None):
|
||||
"""解析当前角色上下文,填充 request.current_role / current_company_uuid / current_tenant_uuid
|
||||
|
||||
@@ -59,11 +76,14 @@ def ResolveRoleContext(request, user=None):
|
||||
# UserRole.CompanyUUID 是 UUIDField,直接赋值
|
||||
if user_role.CompanyUUID:
|
||||
request.current_company_uuid = user_role.CompanyUUID
|
||||
logger.info('[ResolveRoleContext] cookie=%s, role=%s, tenant=%s, company=%s',
|
||||
role_uuid_str[:36],
|
||||
getattr(role, 'RoleName', None) if role else None,
|
||||
request.current_tenant_uuid,
|
||||
request.current_company_uuid)
|
||||
# 日志只输出可读信息:用户名 / 角色名 / 租户-公司名(避免一串 UUID)
|
||||
if logger.isEnabledFor(logging.INFO):
|
||||
TenantLabel = _TenantName(UUIDObj(request.current_tenant_uuid).str) if request.current_tenant_uuid else ''
|
||||
CompanyLabel = _CompanyName(UUIDObj(request.current_company_uuid).str) if request.current_company_uuid else ''
|
||||
logger.info('[ResolveRoleContext] 用户=%s, 角色=%s, company=%s',
|
||||
getattr(user, 'UserName', None),
|
||||
getattr(role, 'RoleName', None) if role else None,
|
||||
f'{TenantLabel}-{CompanyLabel}')
|
||||
except (ValueError, KeyError, ObjectDoesNotExist) as e:
|
||||
logger.warning('[ResolveRoleContext] cookie=%s 解析失败: %s', role_uuid_str[:36], e)
|
||||
except Exception:
|
||||
|
||||
Reference in new issue
Block a user