ForcePilot/backend/package/yuxi/channels/adapters/masking_adapter.py

38 lines
1.3 KiB
Python
Raw Normal View History

"""脱敏被驱动适配器。
委托 ``yuxi.utils.crypto`` ``CryptoHelper`` 实现脱敏 channels 模块
唯一调用 ``yuxi.utils.crypto`` 脱敏 API 的位置加解密仍由 ``mappers.py``
调用字段关键词表与匹配规则由工具层统一维护单一事实源本适配器
不承载任何脱敏算法或字段定义
无状态适配器跨请求复用构造时不依赖任何请求级资源
"""
from __future__ import annotations
from typing import Any
from yuxi.channels.contract.ports.driven.masking_port import MaskingPort
from yuxi.utils.crypto import get_crypto_helper
__all__ = ["MaskingAdapter"]
class MaskingAdapter(MaskingPort):
"""脱敏被驱动适配器,委托 ``CryptoHelper`` 实现 ``MaskingPort``。"""
def __init__(self) -> None:
self._helper = get_crypto_helper()
def maskFull(self, value: Any) -> Any:
"""全量遮蔽脱敏(对外 HTTP 响应、审计日志)。"""
return self._helper.mask_full(value)
def maskPartial(self, value: Any) -> Any:
"""部分遮蔽脱敏(日志、诊断包)。"""
return self._helper.mask_partial(value)
def isSensitiveKey(self, key: str) -> bool:
"""判断字段名是否属于敏感字段。"""
return self._helper.is_sensitive_key(key)