纯标准库实现,对齐 PRD 5.5「⑤ 配置化驾驶舱」iAOP-cockpit-layout-v1: - cockpit.ti.yaml:海绵钛四状态工艺流程(氯化→精制→还原→蒸馏), process_view 主视图声明 stages 覆盖,trend/kpi_card bind 对齐 point_dict.default.csv 的 point_id(CLF-01/RF-01/E-01/ST-01)。 - layout_validator.py:LayoutValidator 校验 widget 类型合法、12 列网格 不越界、bind point_id 在点位字典内、四状态覆盖完整(order 单调/id 唯一); 零依赖 YAML 子集解析(复制 impurity-forecast _parse_yaml_subset)。 - tests:18 用例覆盖真实资产端到端、非法类型、网格越界/负坐标/零宽、 bind 漂移、缺 process_view、缺必需状态、order 非单调、stage 重复、 $schema 头、CSV 加载、空布局。 - _sanity_check.py:冒烟验证 9 widgets 全校验通过。
1.9 KiB
1.9 KiB
海绵钛驾驶舱布局资产 + 校验器(Issue #55 / PRD 5.5)
父 Issue「⑤ Ti 行业布局模板(四状态流程视图)· 0.5d」
把海绵钛车间驾驶舱布局落为对齐 iAOP-cockpit-layout-v1 的资产 + 可校验的纯标准库 校验器(无 node/前端构建环境,零运行时依赖)。
资产:cockpit.ti.yaml
四状态工艺流程(PRD 4.2 海绵钛:氯化 → 精制 → 还原 → 蒸馏):
process_view主视图(首屏立即加载),stages声明四状态覆盖;trend实时趋势(氯化炉温度CLF-01.TEMP/ 氯气流量CLF-01.CL2);kpi_cardKPI(TiCl₄纯度RF-01.PURITY/ 杂质RF-01.IMP/ 电耗E-01.KWH/ 蒸汽ST-01.STEAM);alarm_panel告警面板 +nl_queryNL 查询入口。
所有 bind 的 point_id 对齐 templates/ti-cl4/point-dict/point_dict.default.csv。
校验器:layout_validator.py
LayoutValidator(layout_yaml, point_dict_csv).validate() → LayoutReport,校验:
- widget 类型合法:在
iAOP-cockpit-layout-v1允许集合内(process_view/trend/kpi_card/alarm_panel/nl_query); - 12 列网格不越界:
0 ≤ x、x + w ≤ 12、y ≥ 0、w/h > 0; - bind point_id 在点位字典内:防模板漂移(trend/kpi_card 的 bind 必须命中点字典);
- 四状态覆盖完整:process_view 的 stages 必须覆盖氯化/精制/还原/蒸馏,order 单调递增、id 唯一。
零依赖 YAML 子集解析(复制 impurity-forecast 的 _parse_yaml_subset,无 pyyaml)。
测试
python -m unittest discover -s templates/ti-cl4/dashboard/tests -p "test_*.py" -v
覆盖正常 + 边界 + 错误(18 用例):真实资产端到端通过、非法类型、网格越界/负坐标/零宽、 bind 漂移、缺 process_view、缺必需状态、order 非单调、stage 重复、$schema 头、CSV 加载、空布局。