[REFACTOR] Stufe 2: VF-Eingang/-Ausgang getrennt + Regressionsnetz fuer die Geometrie
Der CAD-Lauf belegt die Schritte 0-4 jetzt auch EMPIRISCH: results/test_hundm05.dxf entstand nach dem Umbau, das Ergebnis-JSON von 11:18 davor - fuer alle 5 Ketten sind ALLE 37 Attribute identisch, inklusive der reihenfolgeabhaengigen Komma-Listen L_VF_m, L_GF_m, GF_WINKEL und ANTRIEBFAHRTRICHTUNG. TEST_VF_SPEC: 28 PASS / 0 FAIL. results/test_linienzug.dxf zeigt eine vollstaendige Kette (AS+ES, Motor, Umlenkung, 2 Vario-Kurven, 22 Bausteine, HOEHE_VON = HOEHE_BIS = 4500 bei DELTA_H 0). Schritt 5a/5b - vfl-vf-eingang-bauen und vfl-vf-ausgang-bauen: beide Bloecke (GF1 + Einlauf-Separator + Umlenkstation bzw. Motorstation + GF2) enthalten keine Frage und sind zusammenhaengend, der Umzug ist wortwoertlich (Zeilenvergleich: 0 Zeilen entfernt, nur zwei Koepfe, zwei Aufrufe und zwei "frame)" neu). Die Auswahl gf2-eff (ziel-gf2 im Kettenende-Modus, sonst L_GF2-bau) bleibt BEWUSST an der Aufrufstelle - genau dort entsteht sonst still die falsche GF2 hinter dem Motor. Der Separator-Zaehler und die vfl-acc-*-Aufrufe bleiben an derselben Stelle in derselben Reihenfolge. Regressionsnetz, damit die restlichen Schritte nicht blind gemacht werden muessen: - lib/dxf_vf_abbild.py (neu): liest eine Testzeichnung streamend und bildet je Kette Attribute, Bausteinzusammensetzung und Einfuegepunkt ab. Ketten werden ueber den EINFUEGEPUNKT der Spec zugeordnet, nicht ueber den Blocknamen - die VF-Nummer beginnt in jeder neuen Zeichnung wieder bei 1. ID und Bezeichnung sind aus dem Vergleich heraus (pro Zeichnung neu). --referenz vergleicht (Exit 1 bei Abweichung), --schreibe-referenz frischt die Referenz nach einem GEPRUEFTEN Lauf auf. - tests/reference/hundm05_attribute.json (neu): die Referenz, erzeugt aus dem geprueften Lauf - also dem Stand, der attributgleich mit dem Zustand VOR dem Umbau ist. - tests/test_vf_geometrie.py (neu, 8 Tests): vergleicht automatisch, mit einem eigenen Test nur fuer die Komma-Listen (das einzige, was eine vertauschte vfl-acc-*-Reihenfolge sichtbar macht) und einer Gegenprobe, dass eine verfaelschte Referenz auch erkannt wird. Das faengt, was der Ergebnis-Record NICHT sieht: er sagt "executed, kein Prompt, Journal aufgegangen", aber nichts darueber, ob dieselbe Geometrie herauskam. Ablauf ab jetzt pro Schritt: umbauen -> TEST_HUNDM05 (save dxf) -> pytest tests/test_vf_geometrie.py. Offen bleiben 5c, 6, 8, 9, 10 (Schleifenrumpf der VF-Einheit, Daten-Executor, Einheit-Abschluss, Kettenebene je Glied, vfl-spec-ausfuehren). Die vier haengen zusammen: 6 und 10 brauchen den aufgeteilten Schleifenrumpf. Halb umgebaut waere der Code schlechter dran als vor oder nach dem Umbau, darum als ein Schritt mit CAD-Lauf davor und danach. Verifiziert: 117 pytest-Tests gruen, vf_linienzug.lsp lint-sauber. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -605,7 +605,48 @@ der falschen Stelle verbraucht wird, kann beide passieren lassen und trotzdem
|
||||
andere Geometrie erzeugen. Sitzt im Daten-Pfad (`vf_spec.lsp`), nicht als
|
||||
`dbgmsg` im Bau-Pfad - dort waere er nur bei offener `.dbg`-Datei sichtbar.
|
||||
|
||||
**Offen: 5, 6, 8, 9, 10** (VF-Einheit aufteilen, Daten-Executor,
|
||||
**Nachtrag (nach dem CAD-Lauf 12:22): Schritte 0-4 sind auch EMPIRISCH
|
||||
belegt.** `results/test_hundm05.dxf` entstand nach dem Umbau, das
|
||||
Ergebnis-JSON von 11:18 davor - fuer alle 5 Ketten sind **alle 37 Attribute
|
||||
identisch**, inklusive der reihenfolgeabhaengigen Komma-Listen `L_VF_m`,
|
||||
`L_GF_m`, `GF_WINKEL`, `ANTRIEBFAHRTRICHTUNG`. Genau der Vergleich, den
|
||||
dieser Abschnitt fuer die Geometrie-Schritte verlangt.
|
||||
`results/test_linienzug.dxf` zeigt eine vollstaendige Kette (AS+ES, Motor,
|
||||
Umlenkung, 2 Vario-Kurven, 22 Bausteine, `HOEHE_VON` = `HOEHE_BIS` = 4500 bei
|
||||
`DELTA_H` 0).
|
||||
|
||||
**Zusaetzlich Schritt 5a/5b**: `vfl-vf-eingang-bauen` (GF1 + Einlauf-Separator
|
||||
+ Umlenkstation) und `vfl-vf-ausgang-bauen` (Motorstation + GF2) sind
|
||||
herausgezogen - beide Bloecke enthalten keine Frage und sind
|
||||
zusammenhaengend, der Umzug ist wortwoertlich (Zeilenvergleich: 0 Zeilen
|
||||
entfernt, nur zwei Koepfe, zwei Aufrufe und zwei `frame)` neu). Die Auswahl
|
||||
`gf2-eff` (`ziel-gf2` im Kettenende-Modus, sonst `L_GF2-bau`) bleibt
|
||||
BEWUSST an der Aufrufstelle - genau dort entsteht sonst still die falsche
|
||||
GF2 hinter dem Motor.
|
||||
|
||||
### Regressionsnetz fuer die restlichen Schritte
|
||||
|
||||
Damit 5c/6/8/9/10 nicht mehr blind gemacht werden muessen, ist der
|
||||
Attribut-Vergleich jetzt ein Werkzeug plus Test:
|
||||
|
||||
- `lib/dxf_vf_abbild.py` liest die Testzeichnung streamend und bildet je
|
||||
Kette Attribute, Bausteinzusammensetzung und Einfuegepunkt ab. Ketten
|
||||
werden ueber den **Einfuegepunkt der Spec** zugeordnet, nicht ueber den
|
||||
Blocknamen (die VF-Nummer beginnt in jeder Zeichnung neu bei 1). `ID` und
|
||||
`Bezeichnung` sind bewusst aus dem Vergleich heraus.
|
||||
- `tests/reference/hundm05_attribute.json` ist die Referenz - erzeugt aus dem
|
||||
geprueften Lauf, also dem Stand, der attributgleich mit dem Zustand VOR
|
||||
dem Umbau ist.
|
||||
- `tests/test_vf_geometrie.py` (8 Tests) vergleicht automatisch, mit einem
|
||||
eigenen Test nur fuer die Komma-Listen und einer Gegenprobe, dass eine
|
||||
verfaelschte Referenz auch erkannt wird.
|
||||
|
||||
Ablauf ab jetzt pro Schritt: umbauen -> `TEST_HUNDM05` (save dxf) ->
|
||||
`pytest tests/test_vf_geometrie.py`. Weicht ein Attribut oder ein Baustein
|
||||
ab, nennt der Test Kette und Feld. Referenz nur nach geprueftem Lauf
|
||||
auffrischen (`--schreibe-referenz`).
|
||||
|
||||
**Offen: 5c, 6, 8, 9, 10** (Schleifenrumpf der VF-Einheit, Daten-Executor,
|
||||
Einheit-Abschluss, Kettenebene je Glied-Zweig, `vfl-spec-ausfuehren`).
|
||||
Bewusst NICHT vorab erledigt: das sind die Schritte, bei denen laut Abschnitt
|
||||
"Wo Geometrie still kippen kann" die Reihenfolge selbst Geometrie ist. Der
|
||||
|
||||
Reference in New Issue
Block a user