本次提交包含多项代码优化与规范修正: 1. 文档与注释优化:修正注释术语、补充注解与FR编号 2. 代码格式调整:统一空格、换行与缩进规范 3. 类型与接口完善:补充__all__导出、修正返回类型注解 4. 错误处理增强:新增领域错误类与校验逻辑 5. 依赖与导入调整:修复路径引用、统一时区导入 6. 协议与契约更新:完善接口文档与一致性注解
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.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)
|