新增完整的 channels 限界上下文模块,包含契约层、领域核心层、应用服务、管道编排、插件体系、基础设施组合根等全层级代码,新增飞书与微信 iLink 渠道插件基础结构,补充各类 DTO、端口协议与领域服务实现。
35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
"""脱敏被驱动适配器。
|
|
|
|
委托 ``yuxi.utils.crypto`` 的 ``CryptoHelper`` 实现脱敏,是 channels 模块
|
|
唯一调用 ``yuxi.utils.crypto`` 脱敏 API 的位置(加解密仍由 ``mappers.py``
|
|
调用)。字段关键词表与匹配规则由工具层统一维护(单一事实源),本适配器
|
|
不承载任何脱敏算法或字段定义。
|
|
|
|
无状态适配器,跨请求复用,构造时不依赖任何请求级资源。
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from yuxi.utils.crypto import get_crypto_helper
|
|
|
|
|
|
class MaskingAdapter:
|
|
"""脱敏被驱动适配器,委托 ``CryptoHelper`` 实现 ``MaskingPort``。"""
|
|
|
|
def __init__(self) -> None:
|
|
self._helper = get_crypto_helper()
|
|
|
|
def mask_full(self, value: Any) -> Any:
|
|
"""全量遮蔽脱敏(对外 HTTP 响应、审计日志)。"""
|
|
return self._helper.mask_full(value)
|
|
|
|
def mask_partial(self, value: Any) -> Any:
|
|
"""部分遮蔽脱敏(日志、诊断包)。"""
|
|
return self._helper.mask_partial(value)
|
|
|
|
def is_sensitive_key(self, key: str) -> bool:
|
|
"""判断字段名是否属于敏感字段。"""
|
|
return self._helper._is_sensitive_key(key)
|