[CHANGE] JSON-Testdaten-Feldnamen aus dxf_anlage_export.py in lib/testdata_schema.py zentralisiert
dxf_anlage_export.py und dxf_scan_components.py fuehrten dieselben Feldnamen (abstand, deltaL_mm, as_seite, ...) aus doc/json-input-lisp.md unabhaengig als lose String-Literale - ein Tippfehler oder eine Schema-Aenderung in nur einer Datei waere nicht aufgefallen. Neues Modul lib/testdata_schema.py buendelt die Feldnamen/festen Werte der dokumentierten Schemas (Kreisel, Einzelblock, VF Standard/Etage, Gefaellestrecke Modus 1) als benannte Konstanten; dxf_anlage_export.py nutzt sie jetzt durchgaengig. dxf_scan_components.py bewusst NICHT mitumgebaut: deutlich grösser/komplexer, mit zusaetzlichen Sonderfaellen (z.B. "startpunkt"/"gerade"-Form), ein vollstaendiger Umbau haette den Rahmen dieser Aenderung gesprengt und mehr Risiko als Nutzen gehabt. Verhaltensgleich: alle 9 Tests in tests/test_dxf_anlage_export.py laufen weiterhin gruen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
testdata_schema.py - Feldnamen und feste Werte der JSON-Testdaten-Schemas aus
|
||||
doc/json-input-lisp.md, als einzige Quelle fuer alle Erzeuger.
|
||||
|
||||
Bisher standen dieselben Feldnamen ("function", "abstand", "deltaL_mm",
|
||||
"as_seite", ...) als lose String-Literale unabhaengig in dxf_scan_components.py
|
||||
(fremde Zeichnungen) UND dxf_anlage_export.py (eigene, mit unseren Makros
|
||||
gebaute Zeichnungen) - ein Tippfehler oder eine Schema-Aenderung in nur einer
|
||||
der beiden Dateien waere nicht aufgefallen. Dieses Modul buendelt sie an
|
||||
einer Stelle; die LISP-Treiber (tests/test_*.lsp) lesen die JSON-Keys direkt
|
||||
als Strings und sind davon nicht betroffen.
|
||||
|
||||
Nur Feldnamen/feste Werte, KEINE Validierung oder Default-Logik - die bleibt
|
||||
bewusst in den jeweiligen Erzeugern, deren Kontext (fremde vs. eigene
|
||||
Zeichnung) unterschiedliche Fallbacks braucht.
|
||||
"""
|
||||
|
||||
# --- Gemeinsame Felder ---
|
||||
F_FUNCTION = "function"
|
||||
F_ID = "id"
|
||||
F_TEST_ID = "test_id"
|
||||
F_BLOCK = "block"
|
||||
F_X = "x"
|
||||
F_Y = "y"
|
||||
F_Z = "z"
|
||||
F_ROTATION = "rotation"
|
||||
F_COMMENT = "comment"
|
||||
|
||||
FUNC_INSERT = "insert"
|
||||
FUNC_CONNECT = "connect"
|
||||
|
||||
# --- Abschnitt 1 (json-input-lisp.md): Kreisel ---
|
||||
F_ABSTAND = "abstand"
|
||||
F_TYP = "typ"
|
||||
F_DREHRICHTUNG = "drehrichtung"
|
||||
|
||||
TYP_STANDARD = "STANDARD"
|
||||
TYP_PIN = "PIN"
|
||||
DREHRICHTUNG_UZS = "UZS"
|
||||
DREHRICHTUNG_GUZ = "GUZ"
|
||||
|
||||
# --- Abschnitt 3: VarioFoerderer Standard und Etage ---
|
||||
F_VF_TYP = "typ"
|
||||
F_RICHTUNG = "richtung"
|
||||
F_DELTA_L = "deltaL"
|
||||
F_DELTA_H = "deltaH"
|
||||
F_WINKEL = "winkel"
|
||||
F_L_GF1 = "L_GF1"
|
||||
F_GF_VERTEILUNG = "gf_verteilung"
|
||||
F_SEITE = "seite"
|
||||
F_MOTORSEITE = "motorseite"
|
||||
F_HZ = "hz"
|
||||
|
||||
VF_TYP_STANDARD = "standard"
|
||||
VF_TYP_ETAGE = "etage"
|
||||
RICHTUNG_AUF = "Auf"
|
||||
RICHTUNG_AB = "Ab"
|
||||
SEITE_LINKS = "links"
|
||||
SEITE_RECHTS = "rechts"
|
||||
|
||||
# --- Abschnitt 4.1: Gefaellestrecke Modus 1 ---
|
||||
F_MODUS = "modus"
|
||||
F_DELTAL_MM = "deltaL_mm"
|
||||
F_WINKEL_GRAD = "winkel_grad"
|
||||
F_HZ_GRAD = "hz_grad"
|
||||
F_START_MM = "start_mm"
|
||||
F_AS_SEITE = "as_seite"
|
||||
F_ES_SEITE = "es_seite"
|
||||
F_AS_WINKEL = "as_winkel"
|
||||
F_ES_WINKEL = "es_winkel"
|
||||
|
||||
GF_MODUS_WERTEINGABE = 1
|
||||
GF_MODUS_RICHTUNG_AUS_PUNKTEN = 2
|
||||
GF_MODUS_LINIENZUG = 3
|
||||
|
||||
SCHLEUS_WINKEL_90 = "90"
|
||||
SCHLEUS_WINKEL_30 = "30"
|
||||
Reference in New Issue
Block a user