Skip to content

Commit 74fa984

Browse files
hf-kkleinKonstantinCopilot
authored
feat(DB): make id_path column truely unique per (formatversion, prüfi) (#212)
* feat(DB): make `id_path` column truely unique per (formatversion, prüfi) * fix type_check * pylint * Update unittests/test_sqlmodels_anwendungshandbuch.py Co-authored-by: Copilot <[email protected]> * Update unittests/test_sqlmodels_anwendungshandbuch.py Co-authored-by: Copilot <[email protected]> * wip * pylint * fix(db): don't add Anwendungsfaelle with malformed Prüfidentifikator * split up super slow test * fmt * fix mypy but reduce verbosity of log warning --------- Co-authored-by: Konstantin <[email protected]> Co-authored-by: Copilot <[email protected]>
1 parent 5e6fb0c commit 74fa984

File tree

6 files changed

+243
-154
lines changed

6 files changed

+243
-154
lines changed

src/fundamend/models/anwendungshandbuch.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ class Paket(FundamendBaseModel):
189189
class Anwendungshandbuch(FundamendBaseModel):
190190
"""
191191
Ein Anwendungshandbuch, indicated by the `<AHB` tag, bündelt verschiedene Nachrichtentypen/Anwendungsfälle im
192-
selben Format oder mit der selben regulatorischen Grundlage und stellt gemeinsame Pakete & Bedingungen bereit.
192+
selben Format oder mit derselben regulatorischen Grundlage und stellt gemeinsame Pakete & Bedingungen bereit.
193193
"""
194194

195195
# Example:

src/fundamend/sqlmodels/ahbview.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,18 @@ def create_db_and_populate_with_ahb_view(
131131
gueltig_bis = item[2]
132132
else:
133133
raise ValueError(f"Invalid item type in ahb_files: {type(item)}")
134+
ahb_contains_bad_awfs = any(
135+
awf for awf in ahb.anwendungsfaelle if awf.is_outdated or not awf.pruefidentifikator
136+
)
137+
if ahb_contains_bad_awfs:
138+
ahb = ahb.model_copy(
139+
update={
140+
"anwendungsfaelle": tuple(
141+
awf for awf in ahb.anwendungsfaelle if awf.pruefidentifikator and not awf.is_outdated
142+
)
143+
}
144+
)
145+
_logger.warning("Removed some AWFs from AHB with version %s before adding to DB", ahb.versionsnummer)
134146
sql_ahb = SqlAnwendungshandbuch.from_model(ahb)
135147
sql_ahb.gueltig_von = gueltig_von
136148
sql_ahb.gueltig_bis = gueltig_bis

src/fundamend/sqlmodels/materialize_ahb_view.sql

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,22 @@ CREATE INDEX idx_line_ahb_status_lower ON ahb_hierarchy_materialized (lower(line
537537
CREATE INDEX idx_line_name ON ahb_hierarchy_materialized (line_name);
538538
CREATE INDEX idx_line_name_lower ON ahb_hierarchy_materialized (lower(line_name));
539539

540+
-- Append position to id_path only where duplicates exist (to ensure uniqueness while keeping paths clean)
541+
-- This updates id_paths that are not unique per (pruefidentifikator, edifact_format_version) by appending the sort_path
542+
UPDATE ahb_hierarchy_materialized
543+
SET id_path = id_path || '@' || sort_path
544+
WHERE id IN (SELECT h1.id
545+
FROM ahb_hierarchy_materialized h1
546+
WHERE EXISTS (SELECT 1
547+
FROM ahb_hierarchy_materialized h2
548+
WHERE h2.id_path = h1.id_path
549+
AND h2.pruefidentifikator = h1.pruefidentifikator
550+
AND (h2.edifact_format_version = h1.edifact_format_version OR
551+
(h2.edifact_format_version IS NULL AND h1.edifact_format_version IS NULL))
552+
AND h2.id != h1.id));
553+
540554
-- if the unique part of the following indexes raises an integrity error, this is handled by the calling python code
541-
CREATE UNIQUE INDEX idx_hierarchy_path_per_ahb ON ahb_hierarchy_materialized (path, pruefidentifikator, edifact_format_version);
542555
CREATE UNIQUE INDEX idx_hierarchy_id_path_per_ahb ON ahb_hierarchy_materialized (id_path, pruefidentifikator, edifact_format_version);
556+
CREATE UNIQUE INDEX idx_hierarchy_path_per_ahb ON ahb_hierarchy_materialized (path, pruefidentifikator, edifact_format_version);
557+
543558

unittests/__snapshots__/test_ahbesser_view.ambr

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1290,7 +1290,7 @@
12901290
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
12911291
'format': 'UTILTS',
12921292
'format_version': 'FV2310',
1293-
'id_path': 'SG2>SG5>SG8>',
1293+
'id_path': 'SG2>SG5>SG8>@00003-00003-00006-',
12941294
'is_on_uebertragungsdatei_level': None,
12951295
'line_ahb_status': 'Muss [3]',
12961296
'line_name': 'Energiemenge der Markt- bzw. Netzlokation',
@@ -1310,7 +1310,7 @@
13101310
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
13111311
'format': 'UTILTS',
13121312
'format_version': 'FV2310',
1313-
'id_path': 'SG2>SG5>SG8>SEQ>',
1313+
'id_path': 'SG2>SG5>SG8>SEQ>@00003-00003-00006-00000-',
13141314
'is_on_uebertragungsdatei_level': False,
13151315
'line_ahb_status': 'Muss',
13161316
'line_name': 'Energiemenge der Markt- bzw. Netzlokation',
@@ -1350,7 +1350,7 @@
13501350
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
13511351
'format': 'UTILTS',
13521352
'format_version': 'FV2310',
1353-
'id_path': 'SG2>SG5>SG8>RFF>',
1353+
'id_path': 'SG2>SG5>SG8>RFF>@00003-00003-00006-00001-',
13541354
'is_on_uebertragungsdatei_level': False,
13551355
'line_ahb_status': 'Muss',
13561356
'line_name': 'Referenz auf einen Rechenschritt',
@@ -1370,7 +1370,7 @@
13701370
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
13711371
'format': 'UTILTS',
13721372
'format_version': 'FV2310',
1373-
'id_path': 'SG2>SG5>SG8>RFF>C_C506>D_1153>Z23>',
1373+
'id_path': 'SG2>SG5>SG8>RFF>C_C506>D_1153>Z23>@00003-00003-00006-00001-00000-00000-00000-',
13741374
'is_on_uebertragungsdatei_level': False,
13751375
'line_ahb_status': 'X',
13761376
'line_name': 'Rechenschritt',
@@ -1393,7 +1393,7 @@
13931393
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
13941394
'format': 'UTILTS',
13951395
'format_version': 'FV2310',
1396-
'id_path': 'SG2>SG5>SG8>RFF>C_C506>D_1154>',
1396+
'id_path': 'SG2>SG5>SG8>RFF>C_C506>D_1154>@00003-00003-00006-00001-00000-00001-',
13971397
'is_on_uebertragungsdatei_level': False,
13981398
'line_ahb_status': 'X [913] [8]',
13991399
'line_name': 'Rechenschrittidentifikator',
@@ -1413,7 +1413,7 @@
14131413
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
14141414
'format': 'UTILTS',
14151415
'format_version': 'FV2310',
1416-
'id_path': 'SG2>SG5>SG8>',
1416+
'id_path': 'SG2>SG5>SG8>@00003-00003-00007-',
14171417
'is_on_uebertragungsdatei_level': None,
14181418
'line_ahb_status': 'Muss [3]',
14191419
'line_name': 'Bestandteil des Rechenschritts',
@@ -1433,7 +1433,7 @@
14331433
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
14341434
'format': 'UTILTS',
14351435
'format_version': 'FV2310',
1436-
'id_path': 'SG2>SG5>SG8>SEQ>',
1436+
'id_path': 'SG2>SG5>SG8>SEQ>@00003-00003-00007-00000-',
14371437
'is_on_uebertragungsdatei_level': False,
14381438
'line_ahb_status': 'Muss',
14391439
'line_name': 'Bestandteil des Rechenschritts',
@@ -1493,7 +1493,7 @@
14931493
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
14941494
'format': 'UTILTS',
14951495
'format_version': 'FV2310',
1496-
'id_path': 'SG2>SG5>SG8>RFF>',
1496+
'id_path': 'SG2>SG5>SG8>RFF>@00003-00003-00007-00001-',
14971497
'is_on_uebertragungsdatei_level': False,
14981498
'line_ahb_status': 'Muss [6]',
14991499
'line_name': 'Referenz auf die ID einer Messlokation',
@@ -1536,7 +1536,7 @@
15361536
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
15371537
'format': 'UTILTS',
15381538
'format_version': 'FV2310',
1539-
'id_path': 'SG2>SG5>SG8>RFF>C_C506>D_1154>',
1539+
'id_path': 'SG2>SG5>SG8>RFF>C_C506>D_1154>@00003-00003-00007-00001-00000-00001-',
15401540
'is_on_uebertragungsdatei_level': False,
15411541
'line_ahb_status': 'X [951] [502]',
15421542
'line_name': 'ID einer Messlokation',
@@ -1556,7 +1556,7 @@
15561556
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
15571557
'format': 'UTILTS',
15581558
'format_version': 'FV2310',
1559-
'id_path': 'SG2>SG5>SG8>RFF>',
1559+
'id_path': 'SG2>SG5>SG8>RFF>@00003-00003-00007-00002-',
15601560
'is_on_uebertragungsdatei_level': False,
15611561
'line_ahb_status': 'Muss [5]',
15621562
'line_name': 'Referenz auf einen Rechenschritt',
@@ -1576,7 +1576,7 @@
15761576
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
15771577
'format': 'UTILTS',
15781578
'format_version': 'FV2310',
1579-
'id_path': 'SG2>SG5>SG8>RFF>C_C506>D_1153>Z23>',
1579+
'id_path': 'SG2>SG5>SG8>RFF>C_C506>D_1153>Z23>@00003-00003-00007-00002-00000-00000-00000-',
15801580
'is_on_uebertragungsdatei_level': False,
15811581
'line_ahb_status': 'X',
15821582
'line_name': 'Rechenschritt',
@@ -1600,7 +1600,7 @@
16001600
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
16011601
'format': 'UTILTS',
16021602
'format_version': 'FV2310',
1603-
'id_path': 'SG2>SG5>SG8>RFF>C_C506>D_1154>',
1603+
'id_path': 'SG2>SG5>SG8>RFF>C_C506>D_1154>@00003-00003-00007-00002-00000-00001-',
16041604
'is_on_uebertragungsdatei_level': False,
16051605
'line_ahb_status': 'X [913] [8] ∧ [9]',
16061606
'line_name': 'Rechenschrittidentifikator',
@@ -1620,7 +1620,7 @@
16201620
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
16211621
'format': 'UTILTS',
16221622
'format_version': 'FV2310',
1623-
'id_path': 'SG2>SG5>SG8>SG9>',
1623+
'id_path': 'SG2>SG5>SG8>SG9>@00003-00003-00007-00003-',
16241624
'is_on_uebertragungsdatei_level': None,
16251625
'line_ahb_status': 'Muss',
16261626
'line_name': 'Mathematischer Operator',
@@ -1640,7 +1640,7 @@
16401640
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
16411641
'format': 'UTILTS',
16421642
'format_version': 'FV2310',
1643-
'id_path': 'SG2>SG5>SG8>SG9>CCI>',
1643+
'id_path': 'SG2>SG5>SG8>SG9>CCI>@00003-00003-00007-00003-00000-',
16441644
'is_on_uebertragungsdatei_level': False,
16451645
'line_ahb_status': 'Muss',
16461646
'line_name': 'Mathematischer Operator',
@@ -1680,7 +1680,7 @@
16801680
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
16811681
'format': 'UTILTS',
16821682
'format_version': 'FV2310',
1683-
'id_path': 'SG2>SG5>SG8>SG9>CAV>',
1683+
'id_path': 'SG2>SG5>SG8>SG9>CAV>@00003-00003-00007-00003-00001-',
16841684
'is_on_uebertragungsdatei_level': False,
16851685
'line_ahb_status': 'Muss',
16861686
'line_name': 'Operator / Operation',
@@ -1803,7 +1803,7 @@
18031803
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
18041804
'format': 'UTILTS',
18051805
'format_version': 'FV2310',
1806-
'id_path': 'SG2>SG5>SG8>SG9>',
1806+
'id_path': 'SG2>SG5>SG8>SG9>@00003-00003-00007-00004-',
18071807
'is_on_uebertragungsdatei_level': None,
18081808
'line_ahb_status': 'Muss [7]',
18091809
'line_name': 'Energieflussrichtung',
@@ -1823,7 +1823,7 @@
18231823
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
18241824
'format': 'UTILTS',
18251825
'format_version': 'FV2310',
1826-
'id_path': 'SG2>SG5>SG8>SG9>CCI>',
1826+
'id_path': 'SG2>SG5>SG8>SG9>CCI>@00003-00003-00007-00004-00000-',
18271827
'is_on_uebertragungsdatei_level': False,
18281828
'line_ahb_status': 'Muss',
18291829
'line_name': 'Energieflussrichtung',
@@ -1863,7 +1863,7 @@
18631863
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
18641864
'format': 'UTILTS',
18651865
'format_version': 'FV2310',
1866-
'id_path': 'SG2>SG5>SG8>SG9>CAV>',
1866+
'id_path': 'SG2>SG5>SG8>SG9>CAV>@00003-00003-00007-00004-00001-',
18671867
'is_on_uebertragungsdatei_level': False,
18681868
'line_ahb_status': 'Muss',
18691869
'line_name': 'Energieflussrichtung',
@@ -1926,7 +1926,7 @@
19261926
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
19271927
'format': 'UTILTS',
19281928
'format_version': 'FV2310',
1929-
'id_path': 'SG2>SG5>SG8>SG9>',
1929+
'id_path': 'SG2>SG5>SG8>SG9>@00003-00003-00007-00005-',
19301930
'is_on_uebertragungsdatei_level': None,
19311931
'line_ahb_status': 'Soll [10] ∧ [7]',
19321932
'line_name': 'Verlustfaktor Trafo',
@@ -1946,7 +1946,7 @@
19461946
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
19471947
'format': 'UTILTS',
19481948
'format_version': 'FV2310',
1949-
'id_path': 'SG2>SG5>SG8>SG9>CCI>',
1949+
'id_path': 'SG2>SG5>SG8>SG9>CCI>@00003-00003-00007-00005-00000-',
19501950
'is_on_uebertragungsdatei_level': False,
19511951
'line_ahb_status': 'Muss',
19521952
'line_name': 'Verlustfaktor Trafo',
@@ -1986,7 +1986,7 @@
19861986
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
19871987
'format': 'UTILTS',
19881988
'format_version': 'FV2310',
1989-
'id_path': 'SG2>SG5>SG8>SG9>CAV>',
1989+
'id_path': 'SG2>SG5>SG8>SG9>CAV>@00003-00003-00007-00005-00001-',
19901990
'is_on_uebertragungsdatei_level': False,
19911991
'line_ahb_status': 'Muss',
19921992
'line_name': 'Verlustfaktor Trafo',
@@ -2006,7 +2006,7 @@
20062006
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
20072007
'format': 'UTILTS',
20082008
'format_version': 'FV2310',
2009-
'id_path': 'SG2>SG5>SG8>SG9>CAV>C_C889>D_7111>Z28>',
2009+
'id_path': 'SG2>SG5>SG8>SG9>CAV>C_C889>D_7111>Z28>@00003-00003-00007-00005-00001-00000-00000-00000-',
20102010
'is_on_uebertragungsdatei_level': False,
20112011
'line_ahb_status': 'X',
20122012
'line_name': 'Verlustfaktor',
@@ -2030,7 +2030,7 @@
20302030
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
20312031
'format': 'UTILTS',
20322032
'format_version': 'FV2310',
2033-
'id_path': 'SG2>SG5>SG8>SG9>CAV>C_C889>D_7110>',
2033+
'id_path': 'SG2>SG5>SG8>SG9>CAV>C_C889>D_7110>@00003-00003-00007-00005-00001-00000-00001-',
20342034
'is_on_uebertragungsdatei_level': False,
20352035
'line_ahb_status': 'X [912] ∧ [914] ∧ [915]',
20362036
'line_name': 'Verlustfaktor Trafo',
@@ -2053,7 +2053,7 @@
20532053
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
20542054
'format': 'UTILTS',
20552055
'format_version': 'FV2310',
2056-
'id_path': 'SG2>SG5>SG8>SG9>',
2056+
'id_path': 'SG2>SG5>SG8>SG9>@00003-00003-00007-00006-',
20572057
'is_on_uebertragungsdatei_level': None,
20582058
'line_ahb_status': 'Soll [10] ∧ [7]',
20592059
'line_name': 'Verlustfaktor Leitung',
@@ -2073,7 +2073,7 @@
20732073
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
20742074
'format': 'UTILTS',
20752075
'format_version': 'FV2310',
2076-
'id_path': 'SG2>SG5>SG8>SG9>CCI>',
2076+
'id_path': 'SG2>SG5>SG8>SG9>CCI>@00003-00003-00007-00006-00000-',
20772077
'is_on_uebertragungsdatei_level': False,
20782078
'line_ahb_status': 'Muss',
20792079
'line_name': 'Verlustfaktor Leitung',
@@ -2113,7 +2113,7 @@
21132113
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
21142114
'format': 'UTILTS',
21152115
'format_version': 'FV2310',
2116-
'id_path': 'SG2>SG5>SG8>SG9>CAV>',
2116+
'id_path': 'SG2>SG5>SG8>SG9>CAV>@00003-00003-00007-00006-00001-',
21172117
'is_on_uebertragungsdatei_level': False,
21182118
'line_ahb_status': 'Muss',
21192119
'line_name': 'Verlustfaktor Leitung',
@@ -2133,7 +2133,7 @@
21332133
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
21342134
'format': 'UTILTS',
21352135
'format_version': 'FV2310',
2136-
'id_path': 'SG2>SG5>SG8>SG9>CAV>C_C889>D_7111>Z28>',
2136+
'id_path': 'SG2>SG5>SG8>SG9>CAV>C_C889>D_7111>Z28>@00003-00003-00007-00006-00001-00000-00000-00000-',
21372137
'is_on_uebertragungsdatei_level': False,
21382138
'line_ahb_status': 'X',
21392139
'line_name': 'Verlustfaktor',
@@ -2157,7 +2157,7 @@
21572157
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
21582158
'format': 'UTILTS',
21592159
'format_version': 'FV2310',
2160-
'id_path': 'SG2>SG5>SG8>SG9>CAV>C_C889>D_7110>',
2160+
'id_path': 'SG2>SG5>SG8>SG9>CAV>C_C889>D_7110>@00003-00003-00007-00006-00001-00000-00001-',
21612161
'is_on_uebertragungsdatei_level': False,
21622162
'line_ahb_status': 'X [912] ∧ [914] ∧ [915]',
21632163
'line_name': 'Verlustfaktor Leitung',
@@ -2180,7 +2180,7 @@
21802180
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
21812181
'format': 'UTILTS',
21822182
'format_version': 'FV2310',
2183-
'id_path': 'SG2>SG5>SG8>SG9>',
2183+
'id_path': 'SG2>SG5>SG8>SG9>@00003-00003-00007-00007-',
21842184
'is_on_uebertragungsdatei_level': None,
21852185
'line_ahb_status': 'Soll [10] ∧ [7]',
21862186
'line_name': 'Aufteilungsfaktor Energiemenge',
@@ -2200,7 +2200,7 @@
22002200
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
22012201
'format': 'UTILTS',
22022202
'format_version': 'FV2310',
2203-
'id_path': 'SG2>SG5>SG8>SG9>CCI>',
2203+
'id_path': 'SG2>SG5>SG8>SG9>CCI>@00003-00003-00007-00007-00000-',
22042204
'is_on_uebertragungsdatei_level': False,
22052205
'line_ahb_status': 'Muss',
22062206
'line_name': 'Aufteilungsfaktor Energiemenge',
@@ -2240,7 +2240,7 @@
22402240
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
22412241
'format': 'UTILTS',
22422242
'format_version': 'FV2310',
2243-
'id_path': 'SG2>SG5>SG8>SG9>CAV>',
2243+
'id_path': 'SG2>SG5>SG8>SG9>CAV>@00003-00003-00007-00007-00001-',
22442244
'is_on_uebertragungsdatei_level': False,
22452245
'line_ahb_status': 'Muss',
22462246
'line_name': 'Aufteilungsfaktor Energiemenge',
@@ -2284,7 +2284,7 @@
22842284
'direction': '[{"sender": "NB", "empfaenger": "MSB"}, {"sender": "NB", "empfaenger": "LF"}]',
22852285
'format': 'UTILTS',
22862286
'format_version': 'FV2310',
2287-
'id_path': 'SG2>SG5>SG8>SG9>CAV>C_C889>D_7110>',
2287+
'id_path': 'SG2>SG5>SG8>SG9>CAV>C_C889>D_7110>@00003-00003-00007-00007-00001-00000-00001-',
22882288
'is_on_uebertragungsdatei_level': False,
22892289
'line_ahb_status': 'X [914] ∧ [969] ∧ [912]',
22902290
'line_name': 'Aufteilungsfaktor Energiemenge',

0 commit comments

Comments
 (0)