tro_flow: sepliste-Gegenprobe zaehlt nach Lage einsortierte Separatoren nicht als Abweichung
Der dxfmakros-Export nimmt freie Separatoren nach Lage in die Kette ihrer Strecke auf (Merkmal "Einsortiert in"). In der sepliste, dem Bauprotokoll, fehlen sie zu Recht - die Gegenprobe meldete bei Mubea VF_3 sonst 4 statt 2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
9ec1022fb1
commit
dd955999a9
2 files changed
+87
-2
No files matched your search
+14
-2
@@ -1084,18 +1084,30 @@ def derive_tros(
|
||||
# Sepliste-Gegenprobe (siehe load_sepliste_counts/Docstring oben): reine
|
||||
# Beobachtung, veraendert weder sep_host noch die spaeter abgeleiteten
|
||||
# TROs - die CSV bleibt die massgebliche Quelle.
|
||||
# Die sepliste ist das Bauprotokoll der Strecke. Freie Separatoren, die der
|
||||
# dxfmakros-Export nach Lage in deren Kette aufgenommen hat, tragen das
|
||||
# Merkmal "Einsortiert in" = Strecke - sie fehlen dort zu Recht und zaehlen
|
||||
# hier nicht als Abweichung.
|
||||
if sepliste_counts:
|
||||
merkmale_by_id = {e.teile_id: e.merkmale for e in elements}
|
||||
for node_id, node in sorted(graph.nodes.items()):
|
||||
if node.kind not in ("Strecke", "Gefaellestrecke"):
|
||||
continue
|
||||
expected = sepliste_counts.get(node_id)
|
||||
if expected is None:
|
||||
continue
|
||||
actual = len(seps_on([node_id]))
|
||||
auf_strecke = seps_on([node_id])
|
||||
einsortiert = [
|
||||
s for s in auf_strecke
|
||||
if _merkmal(merkmale_by_id.get(s, {}), "Einsortiert in") == node_id
|
||||
]
|
||||
actual = len(auf_strecke) - len(einsortiert)
|
||||
if actual != expected:
|
||||
ohne = (f" (ohne {len(einsortiert)} per Lage einsortierte)"
|
||||
if einsortiert else "")
|
||||
findings.append(
|
||||
f"{node.element.name} ({node_id}): {actual} Separator(en) aus "
|
||||
f"der CSV zugeordnet, aber {expected} 'SEP'-Eintraege in "
|
||||
f"der CSV zugeordnet{ohne}, aber {expected} 'SEP'-Eintraege in "
|
||||
f"sepliste (Roh-JSON) - Gegenprobe weicht ab, bitte pruefen"
|
||||
)
|
||||
|
||||
|
||||
Reference in new issue
Block a user