| 123456789101112131415161718192021222324252627282930313233343536 |
- # -*- coding: utf-8 -*-
- """对外脱敏规则入口 —— sim_sys_server.py 的唯一依赖 (scrub / residual)。
- ★ 使用者侧恢复 (2026-09-11), 原因:
- v0.2.0 包里**缺这个文件**。release/sim_sys_server.py 第 36 行
- `from scrub_rules import scrub, residual` 因此 ModuleNotFoundError,
- /sim/sys/ 分系统合页直接 502 (证据: logs/sim_sys.log 的 traceback,
- check/serve 里该模块 [DOWN])。
- 这里**不新写、也不复制任何脱敏规则**, 只把包内唯一那份规则表
- src/windscada/deid_public.py 转出来 —— 它就是全项目实际在用的那一份
- (windscada_serve.py 的 scrub_or_die、上云件、云端问答都走它)。
- 这样同时也满足 sim_sys_server.py 的要求:
- "规则表唯一正本…禁止在此另抄一份" —— 规则仍然只有一处。
- 若日后拿到交付方的原版 release/scrub_rules.py, 直接覆盖本文件即可。
- """
- import pathlib
- import sys
- ROOT = pathlib.Path(__file__).resolve().parent.parent # release/ -> 项目根
- if str(ROOT) not in sys.path:
- sys.path.insert(0, str(ROOT))
- from src.windscada.deid_public import audit, scrub, scrub_or_die # noqa: E402
- def residual(text):
- """回扫脱敏后的文本 → [(类别, 命中次数, 样例)]; 空列表 = 干净。
- 对应 deid_public.audit: "过了脱敏"只能由回扫结果说, 不能由"我替换过了"说。
- """
- return audit(text)
- __all__ = ['scrub', 'residual', 'scrub_or_die']
|