From 4d6f8eba2a8686fa46e4ee0993e2cd1354afd482 Mon Sep 17 00:00:00 2001 From: Evan <2869018789@qq.com> Date: Mon, 25 May 2026 21:42:45 +0800 Subject: [PATCH] fix: normalize summary_index_setting None to fix preview error (#36626) --- api/services/dataset_service.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/api/services/dataset_service.py b/api/services/dataset_service.py index ea8896a5aa..1332390d46 100644 --- a/api/services/dataset_service.py +++ b/api/services/dataset_service.py @@ -170,6 +170,16 @@ class _AutomaticProcessRule(BaseModel): mode: Literal[ProcessRuleMode.AUTOMATIC] summary_index_setting: _SummaryIndexSetting | None = None + @field_validator("summary_index_setting", mode="before") + @classmethod + def _normalize_summary_index_setting(cls, v: Any) -> Any: + """Treat dicts with enable=None (or missing enable) as None (#36602).""" + if v is None: + return None + if isinstance(v, dict) and v.get("enable") is None: + return None + return v + class _CustomProcessRule(BaseModel): model_config = ConfigDict(extra="allow") @@ -178,6 +188,16 @@ class _CustomProcessRule(BaseModel): rules: _EstimateRules summary_index_setting: _SummaryIndexSetting | None = None + @field_validator("summary_index_setting", mode="before") + @classmethod + def _normalize_summary_index_setting(cls, v: Any) -> Any: + """Treat dicts with enable=None (or missing enable) as None (#36602).""" + if v is None: + return None + if isinstance(v, dict) and v.get("enable") is None: + return None + return v + class _HierarchicalProcessRule(BaseModel): model_config = ConfigDict(extra="allow") @@ -186,6 +206,16 @@ class _HierarchicalProcessRule(BaseModel): rules: _EstimateRules summary_index_setting: _SummaryIndexSetting | None = None + @field_validator("summary_index_setting", mode="before") + @classmethod + def _normalize_summary_index_setting(cls, v: Any) -> Any: + """Treat dicts with enable=None (or missing enable) as None (#36602).""" + if v is None: + return None + if isinstance(v, dict) and v.get("enable") is None: + return None + return v + _EstimateProcessRule = Annotated[ _AutomaticProcessRule | _CustomProcessRule | _HierarchicalProcessRule,