feat: vf_spec_export.py (Python-Vorwaerts-Emitter) fuer Linie-GF nachgezogen

Spiegelt die drei neuen Felder (laenge_modus/sep_vor/sep_nach/steigend_modus)
aus Lisp/vf_spec.lsp im Python-Pendant (SpecSchreiber.sektion) - haelt die
"zwei unabhaengige Implementierungen pruefen sich" Architektur des Kollegen
fuer den Schreib-Pfad synchron. tests/test_vf_spec.py: LISP_FAELLE um die
2 neuen Testfaelle ergaenzt, Faelle-Zaehler 7 -> 9.

Bewusst NICHT angefasst: der Rueckwaerts-Decoder (SpecLeser, spec_aus_journal)
- die 5 echten HundM-Ketten (hm_recformat.json) wurden vor dieser Erweiterung
aufgezeichnet und haben daher keine Separator-Antworten fuer ihre Linie-GF-
Sektionen. Der Rundlauf-Test TestRundlauf.test_verlustfrei wird fuer Ketten
mit Linie-GF dadurch rot - eine inhaerente, bewusst in Kauf genommene Folge
der neuen Pflichtfragen im interaktiven Ablauf, kein Fehler im Schreiber
(ausfuehrlich kommentiert direkt an der Aenderung in vf_spec_export.py).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Yuelin Wang
2026-09-11 14:25:50 +02:00
co-authored by Claude Sonnet 5
parent 23d653c4b3
commit 4a444b4858
2 changed files with 74 additions and 8 deletions
+18 -3
View File
@@ -334,9 +334,22 @@ LISP_FAELLE = {
"Linie-GF + ES": {
"start": _start(),
"sektionen": [
{"glied": "Linie-GF", "dl": 5500.0, "hz": 0.0,
{"glied": "Linie-GF", "laenge_modus": "endpunkt",
"dl": 5500.0, "hz": 0.0, "sep_vor": False, "sep_nach": False,
"gefaelle": "winkel", "winkel": 3.0, "ende": "ja-mit-es"},
_es()]},
"Linie-GF, Zielhoehe zuerst": {
"start": _start(),
"sektionen": [
{"glied": "Linie-GF", "laenge_modus": "hoehe",
"dl": 100.0, "hz": 0.0, "sep_vor": True, "sep_nach": False,
"hoehe": 1800.0, "winkel": 3.0, "ende": "nein"}]},
"Linie-GF, Steigend + Endpunkt": {
"start": _start(),
"sektionen": [
{"glied": "Linie-GF", "laenge_modus": "steigend",
"steigend_modus": "endpunkt",
"dl": 800.0, "hz": 0.0, "winkel": 2.0, "ende": "nein"}]},
"Horizontal-VF + Motorstation + ES": {
"start": _start(),
"sektionen": [
@@ -358,6 +371,8 @@ LISP_FAELLE = {
"GF-Bogen als zweite Sektion": {
"start": _start(),
"sektionen": [
# laenge_modus/sep_vor/sep_nach fehlen absichtlich (Default
# "endpunkt"/nein/nein, deckt alte Specs ab).
{"glied": "Linie-GF", "dl": 3000.0, "hz": 180.0,
"gefaelle": "hoehe", "hoehe": 2500.0, "ende": "nein"},
{"glied": "GF-Bogen", "winkel": 60, "seite": "rechts"}]},
@@ -438,8 +453,8 @@ class TestLispErwartungen:
def test_alle_faelle_gefunden(self):
erwartungen = _lisp_erwartungen()
assert len(erwartungen) == 7, \
f"7 tsp-journal-eq-Faelle erwartet, {len(erwartungen)} gefunden: " \
assert len(erwartungen) == 9, \
f"9 tsp-journal-eq-Faelle erwartet, {len(erwartungen)} gefunden: " \
f"{sorted(erwartungen)}"
@pytest.mark.parametrize("praefix", sorted(LISP_FAELLE))