feat(#51): 图表组件配置化渲染引擎(CockpitLayout→RenderPlan,PRD 5.5 配置化驾驶舱渲染层适配器)
在 #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 测试无回归。
This commit is contained in:
@@ -6,11 +6,15 @@
|
||||
- ``CockpitLayout`` / ``Widget``:布局与组件的内存模型(dataclass)。
|
||||
- ``validate_layout``:对一份布局资产做结构 + 语义校验,返回校验结果。
|
||||
- ``load_layout``:从已解析的 dict 构造 ``CockpitLayout``(校验失败抛 ``LayoutValidationError``)。
|
||||
- ``render_layout`` / ``render_widget``:把布局/组件编译为渲染计划(#51,
|
||||
PRD 5.5 渲染层适配器),输出与前端框架无关的 ``RenderPlan``。
|
||||
- ``RenderPlan`` / ``WidgetRendererSpec`` / ``GridPlacement``:渲染描述符。
|
||||
- ``THEME_TOKENS`` / ``WIDGET_COMPONENT``:主题调色与组件映射。
|
||||
|
||||
设计目标(PRD 5.5 验收口径):
|
||||
切换行业模板后,驾驶舱按布局配置自动重排,**无需改前端代码**。
|
||||
本模块只负责"布局资产的定义 + 校验 + 解析",不依赖任何前端框架;
|
||||
渲染层(Vue3 / 配置台)只需消费 ``CockpitLayout`` 的内存模型。
|
||||
本模块负责"布局资产的定义 + 校验 + 解析 + 渲染计划编译",不依赖任何前端框架;
|
||||
渲染层(Vue3 / 配置台)只需消费 ``CockpitLayout`` 与 ``RenderPlan`` 的内存模型。
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
@@ -29,6 +33,19 @@ from .layout import ( # noqa: F401
|
||||
load_layout,
|
||||
validate_layout,
|
||||
)
|
||||
from .renderer import ( # noqa: F401
|
||||
THEME_TOKENS,
|
||||
WIDGET_COMPONENT,
|
||||
GridPlacement,
|
||||
RenderError,
|
||||
RenderPlan,
|
||||
WidgetRendererSpec,
|
||||
compute_grid_placement,
|
||||
plan_to_dict,
|
||||
plan_to_json,
|
||||
render_layout,
|
||||
render_widget,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"LAYOUT_SCHEMA_ID",
|
||||
@@ -44,4 +61,16 @@ __all__ = [
|
||||
"LayoutValidationResult",
|
||||
"load_layout",
|
||||
"validate_layout",
|
||||
# 渲染引擎(#51 / PRD 5.5 渲染层适配器)
|
||||
"THEME_TOKENS",
|
||||
"WIDGET_COMPONENT",
|
||||
"RenderError",
|
||||
"RenderPlan",
|
||||
"WidgetRendererSpec",
|
||||
"GridPlacement",
|
||||
"render_layout",
|
||||
"render_widget",
|
||||
"compute_grid_placement",
|
||||
"plan_to_dict",
|
||||
"plan_to_json",
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user