list_trackids aus Merkmalen in eigene CSV-Spalte "TrackIds" verschoben

Statt eines JSON-Merkmals bekommen VF_n/GF_n/Kreisel jetzt eine eigene
CSV-Spalte "TrackIds" (nach "Nachbarn", vor "Fehler") mit der Reihenfolge
der Separator-/BTMT-/AS-ES-/Weichen-TeileIds entlang der Strecke bzw. um
den Kreisel - analog zur bestehenden "Nachbarn"-Spalte statt versteckt im
Merkmale-JSON. Referenz-CSV fuer den Omniflo-Test an den neuen Header
angepasst.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-10 15:07:31 +02:00
parent 3c0900a02b
commit 28dc3b4301
5 changed files with 158 additions and 146 deletions
+9 -8
View File
@@ -346,11 +346,12 @@ class TestKreiselUmlaufStartetBeiNullGrad:
assert keys == ["S010", "S100", "S190", "S280"]
class TestKreiselListTrackidsMerkmal:
class TestKreiselTrackidsSpalte:
"""write_kreisel_separatorliste_merkmale schreibt die bei 0 Grad
beginnende Umlaufreihenfolge (Separatoren, AS/ES-Enden, Kreisel-Kreisel-
Weichen) als Merkmal "list_trackids" auf den Kreisel selbst (analog zum
gleichnamigen Merkmal bei VF_n/GF_n, siehe write_separatorliste_merkmale)."""
Weichen) in die eigene CSV-Spalte "TrackIds" (item["trackids"]) auf den
Kreisel selbst (analog zum gleichnamigen Feld bei VF_n/GF_n, siehe
write_separatorliste_merkmale)."""
def test_freie_separatoren_in_umlaufreihenfolge(self):
k = _kreisel("0001", 0.0, 0.0, 0.0, abstand=1000.0)
@@ -365,9 +366,9 @@ class TestKreiselListTrackidsMerkmal:
items, kreisel_umlauf, sep_kette_by_key={}, weiche_by_key={})
kreisel_item = items[0]
assert kreisel_item["merkmale"]["list_trackids"] == "0021, 0020"
assert kreisel_item["trackids"] == "0021, 0020"
def test_kreisel_ohne_umlauf_punkte_bekommt_kein_merkmal(self):
def test_kreisel_ohne_umlauf_punkte_bekommt_keine_trackids(self):
k = _kreisel("0001", 0.0, 0.0, 0.0, abstand=1000.0)
k["merkmale"] = {}
items = [k]
@@ -375,11 +376,11 @@ class TestKreiselListTrackidsMerkmal:
items, sep_kette={}, tolerance_mm=0.0, durchmesser_mm=DURCHMESSER_MM)
write_kreisel_separatorliste_merkmale(
items, kreisel_umlauf, sep_kette_by_key={}, weiche_by_key={})
assert "list_trackids" not in items[0]["merkmale"]
assert "trackids" not in items[0]
def test_btmt_beladung_und_entladung_zaehlen_als_freie_punkte(self):
"""BTMT Beladung/Entladung sind Stationen AUF der Bahn/Track wie ein
Separator - sie muessen im Kreisel-Umlauf UND in list_trackids
Separator - sie muessen im Kreisel-Umlauf UND in der TrackIds-Spalte
des Kreisels auftauchen (Kundenwunsch), nicht nur echte Separatoren."""
k = _kreisel("0001", 0.0, 0.0, 0.0, abstand=1000.0)
k["merkmale"] = {}
@@ -396,4 +397,4 @@ class TestKreiselListTrackidsMerkmal:
write_kreisel_separatorliste_merkmale(
items, kreisel_umlauf, sep_kette_by_key={}, weiche_by_key={})
assert k["merkmale"]["list_trackids"] == "0031, 0020, 0030"
assert k["trackids"] == "0031, 0020, 0030"