新增 templates/ti-cl4/impurity-forecast:声明式特征工程引擎,特征以 FeatureSpec 描述(EMA/RollingStd/RateOfChange 等 7 算子),换行业只改模板配置 features.template.yaml,引擎零改动(PRD 5.3:特征工程层跨行业差异落在 FeatureSpec,不落代码)。 - features.py:FeatureSpec 声明 + 校验 + 7 算子 + 时序对齐 + 阈值 breach + 零依赖 YAML 解析 - config/features.template.yaml:炉温/氯气/炉压/炉层 9 条特征(对齐点位字典 point_id) - tests/test_features.py:24 项单测(校验/算子/对齐/breach/配置/端到端提前量)全通过 - _sanity_check.py:冒烟脚本(配置加载 + transform + breach 可观测) 验收:一期阈值+无监督上线,提前量信号可观测(PRD 提前≥30min、误报率≤8%口径)。
27 lines
879 B
Python
27 lines
879 B
Python
# -*- coding: utf-8 -*-
|
|
"""测试引导:把连字符目录挂载为可导入包(与 core 模块同款模式)。
|
|
|
|
- ``templates/ti-cl4/impurity-forecast`` → 包名 ``impurity_forecast``。
|
|
本引擎零内核依赖(纯标准库),仅挂载自身包即可。
|
|
"""
|
|
import importlib.util
|
|
import os
|
|
import sys
|
|
|
|
PKG_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
|
|
def _load_package(name: str, path: str) -> None:
|
|
"""按文件路径完整加载一个包(执行其 __init__.py)。"""
|
|
if name in sys.modules:
|
|
return
|
|
init_py = os.path.join(path, "__init__.py")
|
|
spec = importlib.util.spec_from_file_location(
|
|
name, init_py, submodule_search_locations=[path])
|
|
module = importlib.util.module_from_spec(spec)
|
|
sys.modules[name] = module
|
|
spec.loader.exec_module(module)
|
|
|
|
|
|
_load_package("impurity_forecast", PKG_DIR)
|