fix(netx): parse space-separated net id from alarmkey

Support UME alarmkey values like "<net_id> <x> <y>" when deriving ne_id so current alarms can join inventory correctly. Add regression coverage for hash, csv, and space-delimited alarmkey formats.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-05-13 16:29:19 +08:00
parent 67f7e48597
commit 626bb2b02e
2 changed files with 9 additions and 0 deletions

View file

@ -73,10 +73,14 @@ def _derive_ne_id_from_alarm(alarm: dict[str, Any]) -> str:
# Common UME formats observed:
# 1) "<net_id>#<suffix>"
# 2) "<net_id>, <x>, <y>"
# 3) "<net_id> <x> <y>"
if "#" in alarm_key:
return _s(alarm_key.split("#", 1)[0])
if "," in alarm_key:
return _s(alarm_key.split(",", 1)[0])
parts = [p for p in alarm_key.split() if p]
if len(parts) >= 2:
return _s(parts[0])
return ""

View file

@ -486,6 +486,7 @@ class UmeSyncServiceTests(unittest.TestCase):
def test_derive_ne_id_from_alarmkey_formats(self):
alarm_hash = {"alarmkey": "00ceb960-1b62-478e-8303-0935ffea1d28#99010"}
alarm_csv = {"alarmkey": "00ceb960-1b62-478e-8303-0935ffea1d28, 4237, 79"}
alarm_space = {"alarmkey": "00ceb960-1b62-478e-8303-0935ffea1d28 4205 3588"}
self.assertEqual(
_derive_ne_id_from_alarm(alarm_hash),
@ -495,6 +496,10 @@ class UmeSyncServiceTests(unittest.TestCase):
_derive_ne_id_from_alarm(alarm_csv),
"00ceb960-1b62-478e-8303-0935ffea1d28",
)
self.assertEqual(
_derive_ne_id_from_alarm(alarm_space),
"00ceb960-1b62-478e-8303-0935ffea1d28",
)
def test_serialize_ume_alarm_raw_row_select_fields(self):
alarm = UmeAlarmCurrent(