- vfl-konvertiere-ent laeuft unter *vfl-headless* (Wizard/GUI aus): reicht ein Journal nicht, Abbruch mit Fundstelle statt Live-Rueckfrage im Batch - alter VF_n-Block wird erst nach erfolgreichem Neubau geloescht; bei Fehlschlag raeumt vfl-konvert-aufraeumen die Teil-Geometrie weg - SSG_DIM_ALL_2D/_3D listet fehlgeschlagene Bloecke am Ende auf und konvertiert jetzt auch Modus-3-Bloecke (linienzug3 wurde uebersprungen) - statischer Headless-Test: vfl-menu-strwert/vflw-radio-wahl-impl erlaubt - TODO: Stufe 2 und Spec-Uebersetzer Modus 2/3 in eigene Dateien ausgelagert Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4.6 KiB
TODO: VF-Linienzug ohne GUI/Konsole - Stufe 2 (Funktionstrennung)
Stand: 2026-10-26 · Prioritaet: niedrig - bringt Architektur, keine neue Funktion.
Herausgeloester Arbeitsauftrag aus dem Gesamtplan plan-vf-interactive.md (Teil 5 "Stufe 2: echte Funktionstrennung"). Dort stehen die ausfuehrliche Begruendung, die Knotenform und die Risikoliste; diese Datei ist die Abarbeitungsliste.
Ausgangslage (Stufe 1, fertig)
Linienzug-Ketten lassen sich bereits ohne Dialog bauen (VF_SPEC_BAU,
vf_spec.lsp) - allerdings ueber einen Umweg:
- Die Spec (Kette in Domaenenwerten) wird von
vsp-journalin ein Eingabe-Journal uebersetzt - also in die Antworten, die ein Anwender gegeben haette. vsp-bau-journalstartet pervfl-journal-replay-startden ganz normalen interaktiven Bauvf-linienzug-modus(vf_linienzug.lsp).- Jede Frage wird aus der Replay-Queue beantwortet.
Das funktioniert und ist per TEST_HUNDM05 im CAD verifiziert - der Bau
selbst "weiss" aber nichts von Daten, er fragt weiter, nur antwortet die Queue.
Ziel (Stufe 2)
Die Funktionen in vf_linienzug.lsp mischen Fragen und Geometrie
bauen. Stufe 2 trennt das:
- reiner Bauteil (Suffix
-bauenbzw.-setzen): nimmt Parameter, baut Geometrie, fragt nichts; - die Frage-Schale behaelt den bisherigen Namen und ruft den Bauteil auf
- dadurch aendert sich keine Aufrufstelle in Modus 1/2/3.
Am Ende ruft vfl-spec-ausfuehren die Bauteile direkt mit den Spec-Werten
auf, ohne Journal-Replay.
Stand der Schritte
Zeilennummern Stand 2026-10-26 (die :NNNN-Angaben im Gesamtplan sind
veraltet).
| Schritt | Inhalt | Stand |
|---|---|---|
| 0 | vfl-ziel-report (vf_linienzug.lsp:7864) aus zwei identischen Bloecken gezogen |
erledigt |
| 1 | Winkelwahl vfl-winkel-gueltige (:3071) / vfl-winkel-nach-index + Kanal *vfl-winkel-idx-vorgabe* |
erledigt |
| 2 | vfl-es-masse-setzen (:7557) |
erledigt |
| 3 | vfl-hor-koerper-bauen (:5989), Schale vfl-baue-horizontal-koerper (:6152) |
erledigt |
| 4 | vfl-body-abschluss-bauen (:6502) |
erledigt |
| 5a/5b | VF-Einheit Eingang/Ausgang: vfl-vf-eingang-bauen (:6728), vfl-vf-ausgang-bauen (:6742) |
erledigt |
| 5c | Schleifenrumpf von vfl-vf-einheit (:6772) - die Sub-Stuecke der VF-Einheit als Bauteil |
offen |
| 6 | Daten-Executor fuer die VF-Einheit (baut sie direkt aus Daten) | offen |
| 7 | Spec + Serializer + Assertion: vsp-journal-diff (vf_spec.lsp:900) prueft Spec-Journal gegen das beim Bau aufgezeichnete Token fuer Token |
Assertion erledigt |
| 8 | Einheit-Abschluss: vfl-vf-einheit-abschluss (:7889) |
offen |
| 9 | Kettenebene, ein Glied-Zweig pro Commit: GF-Bogen -> ES -> Horizontal-VF -> Linie-GF -> Linie-VF -> Linie | offen |
| 10 | vfl-spec-ausfuehren - der direkte Daten-Pfad (existiert noch nicht) |
offen |
| 11 | Dasselbe fuer Modus 2 | zurueckgestellt, bis 2-3 echte Modus-2-Journale als Referenz vorliegen |
Warum es heikel ist
Bei den offenen Schritten ist die Reihenfolge selbst Geometrie (Gesamtplan, Abschnitt "Wo Geometrie still kippen kann"), u.a.:
- die dL-Subtraktionskette ist je Schritt mit
(max *vfk-restlaenge-min-clamp* ...)geklammert, also reihenfolgeabhaengig; - die
vfl-acc-*-Aufrufe muessen an derselben Stelle in derselben Reihenfolge bleiben, sonst vertauschen sichL_VF_m/L_GF_m/GF_WINKEL- in der Zeichnung unsichtbar, im Sivas-Export falsch;
*vfl-as-winkel*/*vfl-es-winkel*werden lazy von den Blocknamen-Bauern gelesen - spaeter gesetzt heisst falscher Block;ziel-gf2vs.L_GF2-bauim Ausgang - geht es verloren, entsteht still die falsche GF2 hinter dem Motor.
Ausdruecklich nicht anfassen: siehe Gesamtplan, Abschnitt "Ausdruecklich
nicht anfassen" (u.a. alle Journal-Konsumenten, vfl-in-*-Wrapper,
Wizard-Schicht, Abbruch-Pfad).
Ablauf je Schritt
- Umbauen (Frage-Schale behaelt Namen, Bauteil wortwoertlich umziehen, keine Umsortierung).
- CAD-Lauf:
TEST_HUNDM05(save dxf),TEST_VF_SPEC,TEST_LINIENZUG. pytest tests/test_vf_geometrie.pygegentests/reference/hundm05_attribute.json- nennt bei Abweichung Kette und Feld. Referenz nur nach geprueftem Lauf auffrischen (lib/dxf_vf_abbild.py --schreibe-referenz).- Nach Geometrie-Schritten (5c, 9) zusaetzlich DXF-Diff und Sivas-Export-Vergleich.
- Ein Schritt pro Commit - sonst ist ein Fehler keinem Schritt mehr zuzuordnen.
Wann angehen
Erst bei konkretem Bedarf: einzelne Bauteile ohne Journal aufrufen, oder der Replay-Umweg wird zu langsam bzw. zu fehleranfaellig. Bis dahin genuegt Stufe 1.