- 新增多个业务域的__init__.py模块文件,规范包导出结构 - 调整多个DTO文件的导入路径,统一模块组织方式 - 移除测试文件中多余的空行与导入语句 - 优化部分业务模块的包层级划分
38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
"""脱敏被驱动适配器。
|
|
|
|
委托 ``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.shared.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)
|