feat(#50): 驾驶舱布局 JSON Schema 定义(PRD 5.5 配置化驾驶舱)

新增 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 与本实现一致,树脂模板资产校验通过。
This commit is contained in:
2026-08-05 00:29:42 +08:00
parent afee113901
commit ace09a6d16
5 changed files with 823 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
# -*- 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``)。
设计目标(PRD 5.5 验收口径):
切换行业模板后,驾驶舱按布局配置自动重排,**无需改前端代码**。
本模块只负责"布局资产的定义 + 校验 + 解析",不依赖任何前端框架;
渲染层(Vue3 / 配置台)只需消费 ``CockpitLayout`` 的内存模型。
"""
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,
)
__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",
]