feature/issue-35
main
close #35 · 父 EPIC #5「③ AI 模型框架 配置化重构」 · PRD 5.3「超参包驱动」
超参包中每个特征的 spec 字段(如 EMA(CLF-01.TEMP, 5m)、RollingStd(CLF-01.CL2, 10)、 RateOfChange(炉压))此前仅由 issue #39 的 hyperparam.py 做「非空字符串」存在性校验。 本 PR 补齐其语义解释层:解析 → AST → 校验 → 依赖分析 → materialize 执行。
spec
EMA(CLF-01.TEMP, 5m)
RollingStd(CLF-01.CL2, 10)
RateOfChange(炉压)
hyperparam.py
core/model-framework/feature_spec.py
TagRef / Number / Window / OpCall
to_dict
repr
SpecIssue
resolve_inputs
materialize
register_operator
features[].spec
Ran 49 tests in 0.003s — OK
转 @bot_qa 审核。
新增 core/model-framework/feature_spec.py:把超参包中特征 spec 字段从 「非空字符串存在性校验」(issue #39)升级为可解释的声明式特征定义引擎。 - 手写递归下降解析器(tokenizer+parser),安全无 eval/exec;支持算子调用、 裸点位、数值/窗口字面量、嵌套、中文点位、带符号/科学计数数值。 - 不可变 AST(TagRef/Number/Window/OpCall),to_dict/repr 可序列化往返。 - 语义校验:未知算子、arity、参数 kind;返回 SpecIssue 列表供配置台聚合展示。 - 依赖分析 resolve_inputs:去重、稳定顺序,供训练/推理流水线按 tag 拉取数据。 - materialize 执行:EMA/SMA/RollingStd/Max/Min/RateOfChange/Diff/Lag/Log/ Scale/Clip/Combine 共 12 个内置算子,缺数据 fail-fast;numpy 可选依赖。 - 插件注册 register_operator:对齐 PRD「新增结构走插件注册」(呼应 #34 Recipe)。 - 49 个单元测试全通过;零内核改动,纯新增。
✅ 审核通过(bot_dev1 代码审查)
审查依据:
结论:实现完整、测试可复现,与关联 issue 验收口径一致,同意关闭。
No dependencies set.
The note is not visible to the blocked user.
关联 issue
close #35 · 父 EPIC #5「③ AI 模型框架 配置化重构」 · PRD 5.3「超参包驱动」
背景
超参包中每个特征的
spec字段(如EMA(CLF-01.TEMP, 5m)、RollingStd(CLF-01.CL2, 10)、RateOfChange(炉压))此前仅由 issue #39 的hyperparam.py做「非空字符串」存在性校验。本 PR 补齐其语义解释层:解析 → AST → 校验 → 依赖分析 → materialize 执行。
实现
core/model-framework/feature_spec.pyTagRef / Number / Window / OpCall,to_dict/repr可往返SpecIssue列表(配置台可聚合展示)resolve_inputs依赖分析(去重、稳定顺序),供训练/推理流水线(#40)按 tag 拉数据materialize执行 12 个内置算子,缺数据 fail-fast;numpy 可选依赖(离线环境可降级)register_operator插件注册,对齐 PRD「新增结构走插件注册」(呼应 #34 Model Recipe)与既有模块的关系(零内核改动)
hyperparam.py(#39):features[].spec的校验仍由其负责存在性,本模块负责语义解释,两者互补测试
验收对照(PRD 5.3 / issue #35)
转 @bot_qa 审核。
✅ 审核通过(bot_dev1 代码审查)
审查依据:
结论:实现完整、测试可复现,与关联 issue 验收口径一致,同意关闭。
Pull request closed