diff --git a/lib/export_csv.py b/lib/export_csv.py index 27aab36..56cca7a 100644 --- a/lib/export_csv.py +++ b/lib/export_csv.py @@ -314,7 +314,7 @@ def process_blocks(blocks, lookup): vf_count += 1 items.append({ "nr": elem_nr, - "teileart": "VarioFoerderer", + "teileart": "ILS 2.0 Strecke", "teileid": block.get("attribs", {}).get("ID", "0000"), "bezeichnung": f"VarioFoerderer :{vf_count}", "merkmale": build_variofoerderer_merkmale(block), @@ -327,7 +327,7 @@ def process_blocks(blocks, lookup): gf_count += 1 items.append({ "nr": elem_nr, - "teileart": "Gefaellestrecke", + "teileart": "ILS 2.0 Gefaellestrecke", "teileid": block.get("attribs", {}).get("ID", "0000"), "bezeichnung": f"Gefaellestrecke :{gf_count}", "merkmale": build_variofoerderer_merkmale(block), diff --git a/lib/export_sivas.py b/lib/export_sivas.py index fac0a01..5c57321 100644 --- a/lib/export_sivas.py +++ b/lib/export_sivas.py @@ -132,13 +132,20 @@ def build_kreisel_details(block): SKIP_BLOCKS = set(BLOCKPATTERNS.get("pattern_ks_subblocks", ["K1", "K2", "K3", "K4", "KS_EIN", "KS_AUS"])) # Sivas-Nummern und Bezeichnungen je ILS-Elementtyp +# Hinweis: "ils_kurve", "bt_beladung" und "bg_entladung" sind aktuell nur +# Typnamen-Platzhalter - die zugehoerigen Menuebefehle sind noch Dummies +# (siehe Lisp/README.md), es gibt noch keine Block-Erkennung dafuer. ILS_SIVASNR = { - "kreisel": ("6200", "ILS 2.0 Kreisel"), - "eckrad": ("6210", "ILS 2.0 Eckrad"), - "zusatzmodul":("6215", "ILS 2.0 Zusatzmodul"), - "ils_weiche": ("6216", "ILS 2.0 Weichen"), - "strecke": ("6220", "ILS 2.0 Strecke - Module"), - "automation": ("6269", "ILS 2.0 Automation und Pneumatik - Gesamtanlage"), + "kreisel": ("6200", "ILS 2.0 Kreisel"), + "eckrad": ("6210", "ILS 2.0 Eckrad"), + "zusatzmodul": ("6215", "ILS 2.0 Zusatzmodul"), + "ils_weiche": ("6216", "ILS 2.0 Weiche"), + "ils_kurve": ("", "ILS 2.0 Kurve"), + "strecke": ("6220", "ILS 2.0 Strecke"), + "gefaellestrecke": ("6220", "ILS 2.0 Gefaellestrecke"), + "bt_beladung": ("", "BT - Beladung"), + "bg_entladung": ("", "BG - Entladung"), + "automation": ("6269", "ILS 2.0 Automation und Pneumatik - Gesamtanlage"), } @@ -157,7 +164,8 @@ def process_blocks(blocks, lookup): gerade_groups = {} kreisel_list = [] # Liste von blocks eckrad_ids = [] # IDs aller Eckrad-Bloecke - strecke_ids = [] # IDs aller Strecke-Module (VF_*, GF_*, Vario/Staustrecke) + strecke_ids = [] # IDs aller Strecke-/Variofoerderer (VF_*, Vario/Staustrecke) + gefaelle_ids = [] # IDs aller Gefaellestrecken (GF_*) counters = { "anzahl_boegen": 0, @@ -300,11 +308,11 @@ def process_blocks(blocks, lookup): continue # --- Gefaellestrecke Compound-Block (GF_N) --- + # Eigener Typ "ILS 2.0 Gefaellestrecke" - NICHT als Variofoerderer zaehlen. if matches_any(bname, BLOCKPATTERNS.get("pattern_gefaellestrecke", [])): attribs = block.get("attribs", {}) - counters["anzahl_variofoerderer"] += 1 counters["anzahl_gefaellestrecken"] += 1 - strecke_ids.append(get_id(block)) + gefaelle_ids.append(get_id(block)) try: counters["laengen_gefaellestrecken"] += float(attribs.get("L_GF_m", "0") or "0") except (ValueError, TypeError): @@ -419,10 +427,26 @@ def process_blocks(blocks, lookup): }) nr += 1 + if counters["anzahl_gefaellestrecken"] > 0: + sivasnr, teileart = ILS_SIVASNR["gefaellestrecke"] + items.append({ + "nr": nr, + "teileart": teileart, + "sivasnr": sivasnr, + "sivasnr_quoted": True, + "dispgruppe": 20, + "anzahl": counters["anzahl_gefaellestrecken"], + "laenge_mm": "", + "hoehe_m": "", + "details": {"IDs": gefaelle_ids}, + }) + nr += 1 + # ILS Automation Summierungszeile (nur wenn ILS-Elemente vorhanden) has_ils = (counters["anzahl_kreisel"] > 0 or counters["anzahl_eckraeder"] > 0 - or counters["anzahl_variofoerderer"] > 0) + or counters["anzahl_variofoerderer"] > 0 + or counters["anzahl_gefaellestrecken"] > 0) if has_ils: automation_details = { "Anzahl Kreisel": counters["anzahl_kreisel"], diff --git a/tests/reference/foerderer_tests_sivas.csv b/tests/reference/foerderer_tests_sivas.csv index 4ca5c29..9557ba3 100644 --- a/tests/reference/foerderer_tests_sivas.csv +++ b/tests/reference/foerderer_tests_sivas.csv @@ -1,3 +1,3 @@ Nr;TeileArt;SivasNummer;Dispogruppe;Anzahl;Laenge[mm];Hoehe[m];details -1;"ILS 2.0 Strecke - Module";"6220";20;8;;;{"IDs": ["0001", "0002", "0003", "0004", "0005", "0006", "0007", "0008"]} +1;"ILS 2.0 Strecke";"6220";20;8;;;{"IDs": ["0001", "0002", "0003", "0004", "0005", "0006", "0007", "0008"]} 2;"ILS 2.0 Automation und Pneumatik - Gesamtanlage";"6269";20;1;;;{"Anzahl Kreisel": 0, "Anzahl Kreisel mit Pinband": 0, "Anzahl aller Separatoren in Kreisel mit PIN": 0, "Anzahl aller Separatoren in Kreisel ohne PIN": 0, "Anzahl Verbindungskreisel": 0, "Laengen aller Kreisel": 0.0, "Anzahl der Weichen": 0, "Anzahl der Eckraeder": 0, "Anzahl der einzelnen Gefaellestrecken": 0, "Anzahl der einzelnen Variofoerderer": 8, "Anzahl der Streckengruppen": 1, "Laengen aller Gefaellestrecken": 0.0, "Anzahl der Motoren Variofoerderer": 0, "Laengen aller Variofoerderer": 26.375, "Anzahl ETFs": 0, "Laengen aller ETFs": 0.0, "Anzahl aller Separatoren": 16, "Anzahl aller Scanner": 0, "Anzahl aller BTBeladung": 0, "Anzahl aller Abwurfstationen": 0} diff --git a/tests/reference/gefaellestrecke_tests_sivas.csv b/tests/reference/gefaellestrecke_tests_sivas.csv index c939514..8a160c3 100644 --- a/tests/reference/gefaellestrecke_tests_sivas.csv +++ b/tests/reference/gefaellestrecke_tests_sivas.csv @@ -1,3 +1,3 @@ Nr;TeileArt;SivasNummer;Dispogruppe;Anzahl;Laenge[mm];Hoehe[m];details -1;"ILS 2.0 Strecke - Module";"6220";20;6;;;{"IDs": ["0001", "0002", "0003", "0004", "0005", "0006"]} -2;"ILS 2.0 Automation und Pneumatik - Gesamtanlage";"6269";20;1;;;{"Anzahl Kreisel": 0, "Anzahl Kreisel mit Pinband": 0, "Anzahl aller Separatoren in Kreisel mit PIN": 0, "Anzahl aller Separatoren in Kreisel ohne PIN": 0, "Anzahl Verbindungskreisel": 0, "Laengen aller Kreisel": 0.0, "Anzahl der Weichen": 0, "Anzahl der Eckraeder": 0, "Anzahl der einzelnen Gefaellestrecken": 6, "Anzahl der einzelnen Variofoerderer": 6, "Anzahl der Streckengruppen": 1, "Laengen aller Gefaellestrecken": 53.08200000000001, "Anzahl der Motoren Variofoerderer": 0, "Laengen aller Variofoerderer": 0.0, "Anzahl ETFs": 0, "Laengen aller ETFs": 0.0, "Anzahl aller Separatoren": 6, "Anzahl aller Scanner": 0, "Anzahl aller BTBeladung": 0, "Anzahl aller Abwurfstationen": 0} +1;"ILS 2.0 Gefaellestrecke";"6220";20;6;;;{"IDs": ["0001", "0002", "0003", "0004", "0005", "0006"]} +2;"ILS 2.0 Automation und Pneumatik - Gesamtanlage";"6269";20;1;;;{"Anzahl Kreisel": 0, "Anzahl Kreisel mit Pinband": 0, "Anzahl aller Separatoren in Kreisel mit PIN": 0, "Anzahl aller Separatoren in Kreisel ohne PIN": 0, "Anzahl Verbindungskreisel": 0, "Laengen aller Kreisel": 0.0, "Anzahl der Weichen": 0, "Anzahl der Eckraeder": 0, "Anzahl der einzelnen Gefaellestrecken": 6, "Anzahl der einzelnen Variofoerderer": 0, "Anzahl der Streckengruppen": 1, "Laengen aller Gefaellestrecken": 53.08200000000001, "Anzahl der Motoren Variofoerderer": 0, "Laengen aller Variofoerderer": 0.0, "Anzahl ETFs": 0, "Laengen aller ETFs": 0.0, "Anzahl aller Separatoren": 6, "Anzahl aller Scanner": 0, "Anzahl aller BTBeladung": 0, "Anzahl aller Abwurfstationen": 0} diff --git a/tests/test_foerderer.py b/tests/test_foerderer.py index dc40e99..6ce128c 100644 --- a/tests/test_foerderer.py +++ b/tests/test_foerderer.py @@ -300,9 +300,9 @@ class TestFoerdererExportSivas: assert len(self.rows) > 0, "foerderer_tests_sivas.csv enthaelt keine Daten" def test_strecke_zeile_vorhanden(self): - """Eine Zeile mit TeileArt 'ILS 2.0 Strecke - Module' muss vorhanden sein.""" + """Eine Zeile mit TeileArt 'ILS 2.0 Strecke' muss vorhanden sein.""" teilearten = [row[1].strip('"') for row in self.rows if len(row) >= 2] - assert "ILS 2.0 Strecke - Module" in teilearten, ( + assert "ILS 2.0 Strecke" in teilearten, ( f"Keine Strecke-Zeile gefunden. Vorhandene: {teilearten}" )