增加变量
This commit is contained in:
parent
2db17ffe77
commit
a37b1508d7
@ -121,6 +121,7 @@ class LineAlarmSettingIn(BaseModel):
|
||||
line_no: int
|
||||
over_limit_alarm: List[AlarmRule] = Field(default_factory=list)
|
||||
fault_alarm: List[AlarmRule] = Field(default_factory=list)
|
||||
transformer_change: List[AlarmRule] = Field(default_factory=list)
|
||||
|
||||
|
||||
class AiAlarmSettingIn(BaseModel):
|
||||
|
||||
@ -331,6 +331,10 @@ class PlatformService:
|
||||
{"category": "频率", "limit": 180, "delay": 180, "output_node": "开出1", "enabled": False},
|
||||
],
|
||||
"fault_alarm": [{"category": "PT断线", "delay": 180, "output_node": "开出1", "enabled": True}],
|
||||
"transformer_change": [
|
||||
{"category": "PT变化", "limit": 0.0, "delay": 0, "output_node": "", "enabled": False},
|
||||
{"category": "CT变化", "limit": 0.0, "delay": 0, "output_node": "", "enabled": False},
|
||||
],
|
||||
}
|
||||
|
||||
def _normalize_line_alarm_settings(self, raw: Any) -> List[Dict[str, Any]]:
|
||||
@ -345,16 +349,28 @@ class PlatformService:
|
||||
if not isinstance(current, dict):
|
||||
current = {}
|
||||
line_alarm_list = self._normalize_line_alarm_settings(current.get("line_alarm_setting"))
|
||||
payload_data = payload.model_dump()
|
||||
payload_data = payload.model_dump(exclude_unset=True)
|
||||
payload_data["line_no"] = payload.line_no
|
||||
|
||||
updated = False
|
||||
for index, item in enumerate(line_alarm_list):
|
||||
if item.get("line_no") == payload.line_no:
|
||||
line_alarm_list[index] = payload_data
|
||||
merged = dict(item)
|
||||
merged.update(payload_data)
|
||||
default = self._default_line_alarm_setting(payload.line_no)
|
||||
for key in ("over_limit_alarm", "fault_alarm", "transformer_change"):
|
||||
if not isinstance(merged.get(key), list):
|
||||
merged[key] = default[key]
|
||||
line_alarm_list[index] = merged
|
||||
updated = True
|
||||
break
|
||||
if not updated:
|
||||
line_alarm_list.append(payload_data)
|
||||
merged = self._default_line_alarm_setting(payload.line_no)
|
||||
merged.update(payload_data)
|
||||
for key in ("over_limit_alarm", "fault_alarm", "transformer_change"):
|
||||
if not isinstance(merged.get(key), list):
|
||||
merged[key] = self._default_line_alarm_setting(payload.line_no)[key]
|
||||
line_alarm_list.append(merged)
|
||||
|
||||
current["line_alarm_setting"] = line_alarm_list
|
||||
path = self.config_repo.write_setting_config(current)
|
||||
@ -366,7 +382,12 @@ class PlatformService:
|
||||
line_alarm_list = self._normalize_line_alarm_settings(current)
|
||||
for item in line_alarm_list:
|
||||
if item.get("line_no") == line_no:
|
||||
return item
|
||||
merged = self._default_line_alarm_setting(line_no)
|
||||
merged.update(item)
|
||||
for key in ("over_limit_alarm", "fault_alarm", "transformer_change"):
|
||||
if not isinstance(merged.get(key), list):
|
||||
merged[key] = self._default_line_alarm_setting(line_no)[key]
|
||||
return merged
|
||||
return self._default_line_alarm_setting(line_no)
|
||||
|
||||
def save_ai_alarm_setting(self, payload: List[AiAlarmSettingIn]) -> Dict[str, Any]:
|
||||
|
||||
@ -54,6 +54,22 @@
|
||||
"output_node": "",
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
"transformer_change": [
|
||||
{
|
||||
"category": "PT变化",
|
||||
"limit": 0.0,
|
||||
"delay": 0,
|
||||
"output_node": "",
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"category": "CT变化",
|
||||
"limit": 0.0,
|
||||
"delay": 0,
|
||||
"output_node": "",
|
||||
"enabled": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -110,6 +126,22 @@
|
||||
"output_node": "",
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
"transformer_change": [
|
||||
{
|
||||
"category": "PT变化",
|
||||
"limit": 0.0,
|
||||
"delay": 0,
|
||||
"output_node": "",
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"category": "CT变化",
|
||||
"limit": 0.0,
|
||||
"delay": 0,
|
||||
"output_node": "",
|
||||
"enabled": false
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
@ -223,6 +223,8 @@ def test_save_line_alarm_setting_stores_list(tmp_path) -> None:
|
||||
saved = platform_service.config_repo.read_setting_config()
|
||||
assert isinstance(saved["line_alarm_setting"], list)
|
||||
assert saved["line_alarm_setting"][0]["line_no"] == 3
|
||||
assert "transformer_change" in saved["line_alarm_setting"][0]
|
||||
assert len(saved["line_alarm_setting"][0]["transformer_change"]) == 2
|
||||
finally:
|
||||
platform_service.config_repo = old_repo
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user