新增 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 与本实现一致,树脂模板资产校验通过。
48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
# -*- 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",
|
|
]
|