"""审计场景检测器:将业务数据中的异常模式转化为线索。 自动发现:导入本包下的全部场景模块以触发 @register_scenario 注册。 新增场景时只需在 scenarios/ 下新增一个模块文件,无需改动任何现有代码即可被 注册表(registry)与调度器(engines.scan.run_scenarios)发现。 """ from __future__ import annotations import importlib import pkgutil # 框架自身模块(非具体场景),不参与"代码场景"的自动导入 _FRAMEWORK_MODULES = {"base", "registry", "primitives", "config"} # 1) 自动发现并导入"代码场景"模块(A 打底),触发 @register_scenario 注册 for _module in pkgutil.iter_modules(__path__): if _module.name not in _FRAMEWORK_MODULES: importlib.import_module(f"{__name__}.{_module.name}") # 2) 加载"配置驱动场景"(B 快捷通道):自动发现 rules/*.yaml 并注册,无需改代码 from app.scenarios.config import load_yaml_scenarios # noqa: E402 load_yaml_scenarios()