Hallo zusammen, ![]()
ich möchte eine Idee zur Datenarchitektur und Formelverwaltung in Seamly2D zur Diskussion stellen: die vollständige Entkopplung von internen Objekt-IDs und frei wählbaren Anzeigenamen (Labels).
Die Ausgangslage
Aktuell fungiert der sichtbare Punktname gleichzeitig als interne ID im Datenmodell und in den Formeln. Wenn ein Punkt umbenannt wird, muss das System alle Formeln im Hintergrund parsen und anpassen, was bei komplexen Schnitten fehleranfällig ist und die Flexibilität im Workflow einschränkt.
Das Konzept
Backend / XML: Jedes Objekt (Punkt, Linie etc.) erhält eine unveränderliche, interne ID (z. B. ein inkrementeller Zähler oder UUID wie id=“pt_042”).
Frontend / UI: Der Nutzer sieht und editiert ausschließlich lesbare Namen (label=“A1” oder label=“Brustpunkt”).
Formel-Engine: Formeln speichern im XML intern ausschließlich die Referenzen auf IDs. Der Formeleditor rendert beim Öffnen on-the-fly die lesbaren Namen und übersetzt eingegebene Namen beim Speichern wieder zurück in die IDs.
Vorteile dieses Ansatzes
Sofortige und risikofreie Umbenennung (O(1)):
Wenn ein Punkt umbenannt wird, ändert sich im XML genau ein einziges Attribut (das Label des Punktes). Keine einzige Formel im gesamten Schnitt muss neu geschrieben werden.
Maximale Datenintegrität im Abhängigkeitsgraphen (DAG):
Die mathematische Struktur des Schnitts bleibt absolut stabil, unabhängig davon, wie oft Bezeichnungen für die Dokumentation oder Lesbarkeit angepasst werden.
Saubere Diffs in der Versionskontrolle:
Bei der Nutzung von Git oder Datei-Vergleichen führt eine reine Namensanpassung nicht mehr zu Dutzenden geänderten Formelzeilen, sondern bleibt auf ein einziges XML-Element beschränkt.
Flexibilität für Workflows und Schnittsysteme:
Nutzer können Punkte nach Belieben anpassen (z. B. von Standard-Kürzeln wie A1 zu aussagekräftigen Namen wie Halsloch_hinten), ohne Angst haben zu müssen, komplexe Konstruktionen zu beschädigen.
Zukunftssicherheit:
Die Basis für spätere Features wie modulare Schnittblöcke, Schnitteil-Bibliotheken, und ganz wichtig- dem dependency tree- oder mehrsprachige Schnittvorlagen wird geschaffen, da Namen modular austauschbar sind.
Wie seht ihr diesen Ansatz aus architektonischer Sicht und im Hinblick auf die User Experience? Ich freue mich auf euer Feedback und eure Gedanken dazu!