feat(#65): 配置预览渲染引擎(布局/告警/NL查询,对齐 cockpit-layout-v1 widget 类型)
This commit is contained in:
@@ -114,7 +114,8 @@ def validate_item(kind: ConfigKind, key: str, value: Any) -> ValidationResult:
|
||||
|
||||
校验规则(配置台 upsert 前置门禁,防止坏数据进快照):
|
||||
- 通用:key 非空、匹配 ``[a-z0-9_.-]+``;
|
||||
- model_param:value 为标量(int/float/bool/str)或标量列表;
|
||||
- model_param:value 为标量(int/float/bool/str)、标量列表,或结构化 dict
|
||||
(如 optimizer 配置 / 告警规则等复合超参);
|
||||
- rag_config:top_k 为 1~50 的正整数、similarity_threshold 为 0~1 浮点、
|
||||
sources 为非空字符串列表;
|
||||
- layout:value 为 widget 列表,每个 widget 有合法 type 与 x/y/w/h。
|
||||
@@ -126,11 +127,11 @@ def validate_item(kind: ConfigKind, key: str, value: Any) -> ValidationResult:
|
||||
errors.append(f"key '{key}' 仅允许小写字母/数字/._-")
|
||||
|
||||
if kind == ConfigKind.MODEL_PARAM:
|
||||
if not isinstance(value, (int, float, bool, str, list)):
|
||||
errors.append("model_param 的 value 必须为标量或标量列表")
|
||||
if not isinstance(value, (int, float, bool, str, list, dict)):
|
||||
errors.append("model_param 的 value 必须为标量/标量列表/结构化对象")
|
||||
elif isinstance(value, list) and any(
|
||||
not isinstance(v, (int, float, bool, str)) for v in value):
|
||||
errors.append("model_param 列表 value 仅允许标量元素")
|
||||
not isinstance(v, (int, float, bool, str, dict)) for v in value):
|
||||
errors.append("model_param 列表 value 仅允许标量或对象元素")
|
||||
# 常见超参范围提示(软约束,仅对已知键)
|
||||
if key == "learning_rate" and isinstance(value, (int, float)):
|
||||
if not (0 < value < 1):
|
||||
|
||||
Reference in New Issue
Block a user