增加变量

This commit is contained in:
root 2026-06-12 11:32:22 +08:00
parent 2db17ffe77
commit a37b1508d7
4 changed files with 60 additions and 4 deletions

View File

@ -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):

View File

@ -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]:

View File

@ -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
}
]
}
],

View File

@ -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