refactor(ResolveRoleContext): 日志改为输出用户名、角色名与租户-公司名,去掉 UUID 噪声

This commit is contained in:
TermiNexus committed 2026-10-24 23:09:58 +08:00
1 parent 8b7800032d
commit b35e036b51
1 file changed
+26 -6
+26 -6
View File
@@ -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: