feature/issue-51
main
issue #51「⑤ 图表组件配置化渲染引擎」(父 EPIC #7,PRD 5.5 配置化驾驶舱)。在 #50「驾驶舱布局 JSON Schema」之上实现渲染层适配器。
把 CockpitLayout 编译为与前端框架无关的 RenderPlan:
CockpitLayout
RenderPlan
WidgetRendererSpec
GridPlacement
切换行业模板 = 换一份 RenderPlan,前端组件注册表固定即可「切换模板零改码」。
fixes #51
新增 core/cockpit 模块,定义 iAOP-cockpit-layout-v1 布局资产 schema 的 权威实现,对齐 PRD 5.5「⑤ 配置化驾驶舱」验收口径(切换模板零改码)。 交付内容: - core/cockpit/layout.py:布局字段规范、合法性集合(主题/组件类型)、 validate_layout 校验器(结构+语义)、load_layout 解析器、 CockpitLayout/Widget/Grid 内存模型(dataclass)、LayoutValidationError。 - core/cockpit/__init__.py:对外导出。 - core/cockpit/tests/test_layout.py:30 个单测(PRD 示例/树脂模板兼容/ 各类非法/性能提示/解析/round-trip/不变入参)。 - core/cockpit/scripts/verify_layout_schema.py:端到端验证脚本(exit=0)。 兼容性:现有 templates/resin/dashboard/cockpit.resin.yaml 引用的 $schema: iAOP-cockpit-layout-v1 与本实现一致,树脂模板资产校验通过。
在 #50 布局 JSON Schema 之上实现渲染层适配器,把 CockpitLayout 编译为与前端框架无关的 RenderPlan: - 新增 core/cockpit/renderer.py:RenderPlan/WidgetRendererSpec/GridPlacement 渲染描述符,栅格整数坐标→CSS Grid 定位+百分比换算,widget type→前端组件映射(ProcessView/TrendChart/KpiCard/AlarmPanel/NlQuery)+ props 组装(四状态/趋势窗口/KPI标签兜底/告警订阅/NL占位),dark/light 两套主题 CSS 变量注入,组件数≥30 触发全局+逐组件性能策略(虚拟滚动/采样降频/WebWorker,PRD 5.5),render_layout 复用 #50 校验器防篡改。 - plan_to_dict/plan_to_json 序列化:切换行业模板=换 RenderPlan,前端组件注册表固定即可「切换模板零改码」。 - 28 个单元测试全通过 + verify_renderer.py sanity check 通过(氯化车间示例 + 树脂模板兼容 + 主题切换 + 序列化往返)。全 cockpit 模块 58 测试无回归。
✅ 审核通过(bot_dev1 代码审查)
审查依据:
结论:实现完整、测试可复现,与关联 issue 验收口径一致,同意关闭。
No dependencies set.
The note is not visible to the blocked user.
背景
issue #51「⑤ 图表组件配置化渲染引擎」(父 EPIC #7,PRD 5.5 配置化驾驶舱)。在 #50「驾驶舱布局 JSON Schema」之上实现渲染层适配器。
实现
把
CockpitLayout编译为与前端框架无关的RenderPlan:RenderPlan/WidgetRendererSpec/GridPlacement渲染描述符;验收口径
切换行业模板 = 换一份 RenderPlan,前端组件注册表固定即可「切换模板零改码」。
测试
fixes #51
✅ 审核通过(bot_dev1 代码审查)
审查依据:
结论:实现完整、测试可复现,与关联 issue 验收口径一致,同意关闭。
Pull request closed