Stufe 2 (Python-Seite von "sepliste: Bauteil-IDs eintragen"): AS/ES-Kettenenden
sind jetzt ganz normale Items, direkt aus dem dauerhaften ZZ_ASES_MARKER
klassifiziert (TeileId/Position/Boundingbox vom Marker-Block selbst) - keine
Kollisionsberechnung mehr, die sie erfindet.
- lib/export_neighbors.py: compute_strecke_kreisel_schleus entfernt (suchte
bisher per Kollisionstest den anschliessenden Kreisel und erzeugte dabei bei
JEDEM Export eine neue TeileId fuer denselben physischen Punkt). AUSSCHLEUS_/
EINSCHLEUS_TEILEART sind jetzt Teil von KREISEL_UMLAUF_TEILEARTEN - ein AS/ES
bringt seine eigene Bounding-Box vom Marker mit und wird dadurch, wie jeder
freie Separator, ueber die normale BBox-Ueberschneidung einem Kreisel
zugeordnet; die gesonderte "naechster Kreisel per sep_kette"-Suche in
compute_kreisel_umlauf (dessen sep_kette-Parameter damit entfaellt) ist
ueberfluessig geworden. compute_sep_kette gibt je Eintrag zusaetzlich das
Feld "id" weiter (Bauteil-TeileId, siehe vorheriger Commit).
- lib/export_csv.py: process_blocks klassifiziert ZZ_ASES_MARKER direkt (TYP-
Attribut waehlt Ausschleus-/Einschleuselement); build_strecke_schleus_items
entfaellt komplett. map_separator_kette_items -> map_sepliste_kette_items:
ordnet jetzt AS/SEP/ES exakt per ID-Gleichheit zu (sepliste-Feld "id" gegen
die TeileId der klassifizierten Items) statt per Koordinaten-Naehe - SEP
faellt bei fehlendem "id"-Feld weiterhin auf den alten Naehe-Abgleich zurueck
(Altbestand), AS/ES ohne "id" bleiben unaufgeloest.
- Neu: pruefe_ases_in_beiden_containern prueft am Ende von process_blocks, ob
jede AS-/ES-Zeile sowohl in den TrackIds ihrer eigenen Strecke als auch in
denen mindestens eines Kreisels auftaucht, und traegt bei Abweichung eine
Warnung ein (Spalte "Warnungen") - Konsistenzpruefung fuer genau die beiden
"Container", zu denen ein AS/ES gehoert.
- Aufgeraeumt (tote Routinen): _strecke_ends, _closest_pt_on_segment,
_distinct_kreisel_ids (nur von den entfernten Funktionen genutzt), sowie der
temporaere Diagnose-Filter DEBUG_HIGHLIGHT_TEILEIDS/dbg_highlight (an die
jetzt behobene Koordinaten-Matching-Ambiguitaet gebunden, in seinem eigenen
Kommentar bereits als Wegwerf-Code markiert). LISP-seitiger Dead-Code-Scan
(export.lsp, ssg_ks_insert.lsp - die diese Woche bearbeiteten Module):
keine Funde.
Verifiziert an den echten HundM05-Daten (results/export_raw.json, 45 Bloecke):
TeileId-Bereich luecken- und duplikatfrei 1-45 (vorher 1-55 mit Luecke 24-33 +
Zusatz-IDs 46-55), alle 10 AS/ES-IDs korrekt in ihrer Strecke UND im Kreisel
06 TrackIds, keine Warnungen der neuen Pruefung. Zwei Testdateien auf die neue
Architektur umgestellt (test_export_kreisel_umlauf.py: AS/ES als Item statt
Kollisions-Erzeugung, neue Klasse TestAsEsImKreiselUmlauf fuer die BBox-
Teilnahme; test_export_separatorliste.py: id-basierte Zuordnung, Klasse
TestMarkerIdWiederverwendung durch TestMapSeplisteKetteItemsFallback ersetzt
- die alte testete inzwischen entfernte Mint-Logik). Volle Suite: 224 bestanden
(4 vorbestehende, unabhaengige Fixture-Failures unveraendert).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>