2026-08-05 00:29:42 +08:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
"""配置化驾驶舱内核模块(iAOP-Core / cockpit)—— 对齐 PRD 5.5「⑤ 配置化驾驶舱」。
|
|
|
|
|
|
|
|
|
|
对外暴露:
|
|
|
|
|
- ``LAYOUT_SCHEMA_VERSION`` / ``LAYOUT_SCHEMA_ID``:布局 JSON Schema 标识。
|
|
|
|
|
- ``CockpitLayout`` / ``Widget``:布局与组件的内存模型(dataclass)。
|
|
|
|
|
- ``validate_layout``:对一份布局资产做结构 + 语义校验,返回校验结果。
|
|
|
|
|
- ``load_layout``:从已解析的 dict 构造 ``CockpitLayout``(校验失败抛 ``LayoutValidationError``)。
|
2026-08-05 01:26:05 +08:00
|
|
|
- ``render_layout`` / ``render_widget``:把布局/组件编译为渲染计划(#51,
|
|
|
|
|
PRD 5.5 渲染层适配器),输出与前端框架无关的 ``RenderPlan``。
|
|
|
|
|
- ``RenderPlan`` / ``WidgetRendererSpec`` / ``GridPlacement``:渲染描述符。
|
|
|
|
|
- ``THEME_TOKENS`` / ``WIDGET_COMPONENT``:主题调色与组件映射。
|
2026-08-05 00:29:42 +08:00
|
|
|
|
|
|
|
|
设计目标(PRD 5.5 验收口径):
|
|
|
|
|
切换行业模板后,驾驶舱按布局配置自动重排,**无需改前端代码**。
|
2026-08-05 01:26:05 +08:00
|
|
|
本模块负责"布局资产的定义 + 校验 + 解析 + 渲染计划编译",不依赖任何前端框架;
|
|
|
|
|
渲染层(Vue3 / 配置台)只需消费 ``CockpitLayout`` 与 ``RenderPlan`` 的内存模型。
|
2026-08-05 00:29:42 +08:00
|
|
|
"""
|
|
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
|
|
from .layout import ( # noqa: F401
|
|
|
|
|
DEFAULT_GRID_COLUMNS,
|
|
|
|
|
LAYOUT_SCHEMA_ID,
|
|
|
|
|
LAYOUT_SCHEMA_VERSION,
|
|
|
|
|
PERF_WIDGET_THRESHOLD,
|
|
|
|
|
VALID_THEMES,
|
|
|
|
|
VALID_WIDGET_TYPES,
|
|
|
|
|
CockpitLayout,
|
|
|
|
|
Grid,
|
|
|
|
|
LayoutValidationError,
|
|
|
|
|
LayoutValidationResult,
|
|
|
|
|
Widget,
|
|
|
|
|
load_layout,
|
|
|
|
|
validate_layout,
|
|
|
|
|
)
|
2026-08-05 01:26:05 +08:00
|
|
|
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,
|
|
|
|
|
)
|
2026-08-05 08:26:40 +08:00
|
|
|
from .alarm_config import ( # noqa: F401
|
|
|
|
|
ALARM_CONFIG_SCHEMA_ID,
|
|
|
|
|
ALARM_CONFIG_SCHEMA_VERSION,
|
|
|
|
|
DEFAULT_ACK_TIMEOUT_S,
|
|
|
|
|
DEFAULT_MAX_ITEMS,
|
|
|
|
|
DEFAULT_MUTE_LOWER,
|
|
|
|
|
MAX_ALLOWED_ITEMS,
|
|
|
|
|
SEVERITY_RANK,
|
|
|
|
|
VALID_GROUP_BY,
|
|
|
|
|
VALID_SEVERITIES,
|
|
|
|
|
VALID_SORT_BY,
|
|
|
|
|
VALID_SOURCE_KINDS,
|
|
|
|
|
AlarmConfigError,
|
|
|
|
|
AlarmConfigValidationResult,
|
|
|
|
|
AlarmPanelConfig,
|
|
|
|
|
AlarmRulesSource,
|
|
|
|
|
SeverityColor,
|
|
|
|
|
filter_alarms_by_mute,
|
|
|
|
|
load_alarm_config,
|
|
|
|
|
render_alarm_panel_props,
|
|
|
|
|
validate_alarm_config,
|
|
|
|
|
)
|
2026-08-05 00:29:42 +08:00
|
|
|
|
|
|
|
|
__all__ = [
|
|
|
|
|
"LAYOUT_SCHEMA_ID",
|
|
|
|
|
"LAYOUT_SCHEMA_VERSION",
|
|
|
|
|
"VALID_THEMES",
|
|
|
|
|
"VALID_WIDGET_TYPES",
|
|
|
|
|
"DEFAULT_GRID_COLUMNS",
|
|
|
|
|
"PERF_WIDGET_THRESHOLD",
|
|
|
|
|
"CockpitLayout",
|
|
|
|
|
"Grid",
|
|
|
|
|
"Widget",
|
|
|
|
|
"LayoutValidationError",
|
|
|
|
|
"LayoutValidationResult",
|
|
|
|
|
"load_layout",
|
|
|
|
|
"validate_layout",
|
2026-08-05 01:26:05 +08:00
|
|
|
# 渲染引擎(#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",
|
2026-08-05 08:26:40 +08:00
|
|
|
# 报警看板配置化(#52 / PRD 5.5 告警面板配置化)
|
|
|
|
|
"ALARM_CONFIG_SCHEMA_ID",
|
|
|
|
|
"ALARM_CONFIG_SCHEMA_VERSION",
|
|
|
|
|
"DEFAULT_ACK_TIMEOUT_S",
|
|
|
|
|
"DEFAULT_MAX_ITEMS",
|
|
|
|
|
"DEFAULT_MUTE_LOWER",
|
|
|
|
|
"MAX_ALLOWED_ITEMS",
|
|
|
|
|
"SEVERITY_RANK",
|
|
|
|
|
"VALID_GROUP_BY",
|
|
|
|
|
"VALID_SEVERITIES",
|
|
|
|
|
"VALID_SORT_BY",
|
|
|
|
|
"VALID_SOURCE_KINDS",
|
|
|
|
|
"AlarmConfigError",
|
|
|
|
|
"AlarmConfigValidationResult",
|
|
|
|
|
"AlarmPanelConfig",
|
|
|
|
|
"AlarmRulesSource",
|
|
|
|
|
"SeverityColor",
|
|
|
|
|
"filter_alarms_by_mute",
|
|
|
|
|
"load_alarm_config",
|
|
|
|
|
"render_alarm_panel_props",
|
|
|
|
|
"validate_alarm_config",
|
2026-08-05 00:29:42 +08:00
|
|
|
]
|