38 lines
1.9 KiB
Markdown
38 lines
1.9 KiB
Markdown
# 海绵钛驾驶舱布局资产 + 校验器(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_card` KPI(TiCl₄纯度 `RF-01.PURITY` / 杂质 `RF-01.IMP` / 电耗 `E-01.KWH` / 蒸汽 `ST-01.STEAM`);
|
|||
|
|
- `alarm_panel` 告警面板 + `nl_query` NL 查询入口。
|
|||
|
|
|
|||
|
|
所有 `bind` 的 `point_id` 对齐 `templates/ti-cl4/point-dict/point_dict.default.csv`。
|
|||
|
|
|
|||
|
|
## 校验器:`layout_validator.py`
|
|||
|
|
|
|||
|
|
`LayoutValidator(layout_yaml, point_dict_csv).validate()` → `LayoutReport`,校验:
|
|||
|
|
|
|||
|
|
1. **widget 类型合法**:在 `iAOP-cockpit-layout-v1` 允许集合内(process_view/trend/kpi_card/alarm_panel/nl_query);
|
|||
|
|
2. **12 列网格不越界**:`0 ≤ x`、`x + w ≤ 12`、`y ≥ 0`、`w/h > 0`;
|
|||
|
|
3. **bind point_id 在点位字典内**:防模板漂移(trend/kpi_card 的 bind 必须命中点字典);
|
|||
|
|
4. **四状态覆盖完整**:process_view 的 stages 必须覆盖氯化/精制/还原/蒸馏,order 单调递增、id 唯一。
|
|||
|
|
|
|||
|
|
零依赖 YAML 子集解析(复制 impurity-forecast 的 `_parse_yaml_subset`,无 pyyaml)。
|
|||
|
|
|
|||
|
|
## 测试
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python -m unittest discover -s templates/ti-cl4/dashboard/tests -p "test_*.py" -v
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
覆盖正常 + 边界 + 错误(18 用例):真实资产端到端通过、非法类型、网格越界/负坐标/零宽、
|
|||
|
|
bind 漂移、缺 process_view、缺必需状态、order 非单调、stage 重复、$schema 头、CSV 加载、空布局。
|