Files
web-cad/specs/current/requirements.md
T

634 lines
57 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Requirements Specification web-cad
**Project:** web-cad Web-basiertes 2D-CAD für Event-Bestuhlungspläne
**Phase:** 1 (Intake)
**Date:** 2026-06-19 (updated v3)
**Status:** Draft v3 ready for user review
---
## 1. Vision & Ziel
Das Ziel von **web-cad** ist eine web-basierte 2D-CAD-Anwendung, die:
- alle grundlegenden CAD-Funktionen bereitstellt (Zeichnen, Bearbeiten, Bemaßen, Ebenen, Bibliothek, Gruppierung, Export/Import)
- spezialisierte Tools für Event-Bestuhlungspläne bietet (Reihen- und Block-Bestuhlung)
- später um weitere branchenspezifische Tools erweiterbar ist in jede Richtung
- Multi-User-Kollaboration in Echtzeit unterstützt
- performant im Browser läuft auch bei großen Projekten
- später auf Docker und Coolify deploybar ist
- **ausschließlich Open-Source-Komponenten** verwendet und selbst als Open Source lizenziert wird
- **KI Copilot als Kern-Feature** integriert hat von Anfang an, nicht als Afterthought
- **API-first & modular** designed ist an andere Software anhängbar
**Referenz-UI:** AutoCAD Web (siehe Section 12 AutoCAD Web Feature-Referenz)
**Referenz-Architektur (Kollaboration):** Figma / Onshape (Cloud-native, Single Source of Truth)
**Referenz-Architektur (KI Copilot):** AutoCAD 2026/2027 AI Features + LLM Function Calling / Tool Use Pattern
---
## 2. Nutzer & Rollen
| Rolle | Beschreibung |
|---|---|
| **Planer** | Erstellt und bearbeitet Bestuhlungspläne, nutzt CAD-Grundfunktionen, Bestuhlungs-Tools und KI Copilot |
| **Betrachter** | Kann Pläne ansehen, kommentieren, aber nicht bearbeiten (Read-Only-Zugriff) |
| **Admin** | Verwaltung von Projekten, Nutzern, Berechtigungen, Bibliothek und KI-Konfiguration |
| **Gast** | Temporärer Zugriff auf spezifische Pläne ohne Account (z. B. für Kundenfreigabe) |
| **KI Copilot** | Software-Agent, der per Text/Sprache gesteuert wird und CAD-Operationen ausführt |
---
## 3. Funktionale Anforderungen
### 3.1 CAD-Grundfunktionen
| ID | Anforderung | Akzeptanzkriterium |
|---|---|---|
| F-CAD-01 | **Zeichnen von Grundelementen:** Linie, Kreis, Bogen, Rechteck, Polygon, Ellipse, Polylinie (PLINE) | Alle genannten Elemente können erstellt, ausgewählt, verschoben und gelöscht werden |
| F-CAD-02 | **Bearbeiten:** Verschieben (MOVE), Kopieren (COPY/CO), Rotieren (ROTATE/RO), Skalieren (SCALE/SC), Spiegeln (MIRROR/MI), Trimmen (TRIM), Verlängern (EXTEND), Abrunden (FILLET), Versatz (OFFSET) | Jede Operation verändert die Geometrie korrekt und kann rückgängig gemacht werden (Undo/Redo) |
| F-CAD-03 | **Bemaßung:** Lineare (DIM), winkelige, radiale Bemaßung mit automatischer Maßberechnung basierend auf dem Hintergrund-Grundriss-Maßstab | Bemaßung zeigt korrekte Werte in realen Maßeinheiten (m/cm) an |
| F-CAD-04 | **Raster & Fang:** Rasteranzeige, Snap-to-Grid, Snap-to-Endpoint, Snap-to-Midpoint, Snap-to-Intersection, Ortho-Modus, Polar Tracking | Fangpunkte werden visuell hervorgehoben und beim Zeichnen exakt eingefangen |
| F-CAD-05 | **Eingabefeld (Command Line):** Befehlseingabe via Tastatur wie in AutoCAD (z. B. "L" für Line, "PL" für Polyline, "C" für Circle) | Befehle können über die Tastatur eingegeben und ausgeführt werden; Autovervollständigung vorhanden |
| F-CAD-06 | **Eigenschaften-Panel:** Anzeige und Bearbeitung von Element-Eigenschaften (Position, Größe, Winkel, Farbe, Linientyp, Linienstärke, Transparenz) | Eigenschaften können angezeigt und geändert werden; Änderungen sind sofort sichtbar |
| F-CAD-07 | **Auswahl-Methoden:** Einzelauswahl, Fenster-Auswahl, Kreuz-Auswahl, Selektion-Filter, Quick-Select (Eigenschafts-basierte Auswahl) | Alle Auswahlmethoden funktionieren und können kombiniert werden |
| F-CAD-08 | **Gruppierung:** Elemente zu Gruppen zusammenfassen, Gruppen verschachteln, Gruppen speichern | Gruppen können erstellt, aufgelöst und in der Bibliothek gespeichert werden |
| F-CAD-09 | **Undo/Redo:** Strukturierte Undo/Redo-Historie mit beliebig vielen Schritten | Undo und Redo funktionieren für alle Operationen; Historie kann eingesehen werden |
| F-CAD-10 | **Kopieren zwischen Dateien:** Elemente können via Zwischenablage zwischen Projekten kopiert werden | Kopierte Elemente behalten ihre Eigenschaften und relative Position |
| F-CAD-11 | **Annotation & Text:** Einzel- und Mehrzeilentext (TEXT/MTEXT), Revision Clouds (REVCLOUD), Leaders (MLEADER) | Text kann erstellt, formatiert und platziert werden; Leaders und Revisionswolken funktionieren |
| F-CAD-12 | **Muster-/Schraffurfunktion:** Flächen können mit Mustern/Schraffuren gefüllt werden (HATCH) | Muster können ausgewählt, skaliert und angewendet werden |
### 3.2 Ebenen-System (Layers)
| ID | Anforderung | Akzeptanzkriterium |
|---|---|---|
| F-LAY-01 | **Ebenen als Baumstruktur:** Ebenen hierarchisch organisiert mit Parent-Child-Beziehungen | Ebenen werden in einem Baum-Widget angezeigt; Parent-Child-Beziehung sichtbar |
| F-LAY-02 | **Ebenen-Eigenschaften:** Name, Sichtbarkeit (On/Off), Sperrung (Lock/Unlock), Farbe, Linientyp, Transparenz | Jede Eigenschaft kann pro Ebene gesetzt werden und wirkt sich auf alle zugehörigen Elemente aus |
| F-LAY-03 | **Ebenen-Operationen:** Erstellen, Löschen, Umbenennen, Verschieben im Baum, Duplizieren | Alle Operationen funktionieren und aktualisieren den Baum in Echtzeit |
| F-LAY-04 | **Element-Zuordnung:** Elemente können zwischen Ebenen verschoben werden | Drag-and-Drop oder Kontextmenü zum Verschieben von Elementen zwischen Ebenen |
| F-LAY-05 | **Aktive Ebene:** Neue Elemente werden auf der aktiven Ebene erstellt | Aktive Ebene ist klar markiert; neue Elemente erscheinen auf der aktiven Ebene |
| F-LAY-06 | **Ebenen-Filter:** Filter nach Eigenschaften (Farbe, Linientyp, Name) | Gefilterte Ebenen werden korrekt angezeigt; Filter können gespeichert werden |
### 3.3 Bibliothek (Block-Bibliothek)
| ID | Anforderung | Akzeptanzkriterium |
|---|---|---|
| F-LIB-01 | **Bibliothek als Baumstruktur:** Bibliothekselemente hierarchisch organisiert mit Ordnern und Unterordnern | Baum-Widget zeigt Ordner und Blöcke; Drag-and-Drop für Organisation |
| F-LIB-02 | **SVG-Import:** SVG-Dateien können in die Bibliothek importiert werden | SVG wird korrekt importiert, im Viewer angezeigt und als wiederverwendbarer Block gespeichert |
| F-LIB-03 | **Gruppen in Bibliothek speichern:** Im Zeichenbereich erstellte Gruppen können in die Bibliothek gespeichert werden | Gruppe wird als Block gespeichert und kann per Drag-and-Drop in den Zeichenbereich eingefügt werden |
| F-LIB-04 | **Block-Einfügen:** Blöcke aus der Bibliothek per Drag-and-Drop in den Zeichenbereich einfügen | Block wird an der Drop-Position eingefügt; Skalierung und Rotation können beim Einfügen gesetzt werden |
| F-LIB-05 | **Block-Bearbeitung:** Blöcke können nach dem Einfügen bearbeitet, skaliert, rotiert und gespiegelt werden | Alle Bearbeitungsoperationen funktionieren auf eingefügten Blöcken |
| F-LIB-06 | **Bibliotheks-Verwaltung:** Blöcke umbenennen, duplizieren, löschen, in Ordner verschieben | Alle Verwaltungsoperationen funktionieren; Änderungen werden persistent gespeichert |
| F-LIB-07 | **Block-Definition vs. Block-Referenz:** Blöcke werden als Definition gespeichert; Instanzen referenzieren die Definition (wie AutoCAD Blocks) | Änderung an der Block-Definition aktualisiert alle Instanzen; Instanzen können unabhängig transformiert werden |
### 3.4 Hintergrund & Grundriss
| ID | Anforderung | Akzeptanzkriterium |
|---|---|---|
| F-BG-01 | **Grundriss laden:** Bild- oder Vektor-Datei (PNG, JPG, SVG, PDF-Seite) als Hintergrund laden | Datei wird als Hintergrund-Ebene geladen und im Zeichenbereich angezeigt |
| F-BG-02 | **Maßstabs-Definition:** Maßstab des Grundrisses kann definiert werden (z. B. 1:100, Referenzstrecke) | Nach Maßstabsdefinition werden Bemaßungen in realen Maßeinheiten (m/cm) angezeigt |
| F-BG-03 | **Hintergrund-Positionierung:** Hintergrund kann verschoben, rotiert und skaliert werden | Transformationen sind möglich und Bemaßungen aktualisieren sich entsprechend |
| F-BG-04 | **Hintergrund-Sichtbarkeit:** Hintergrund kann ein- und ausgeblendet werden | Sichtbarkeit kann pro Ebene oder global geschaltet werden |
### 3.5 Bestuhlungs-Tools (Event-Spezifisch)
| ID | Anforderung | Akzeptanzkriterium |
|---|---|---|
| F-EVT-01 | **Reihen-Bestuhlung:** Automatische Platzierung von Stühlen in einer Reihe mit konfigurierbarem Abstand, Anzahl und Ausrichtung | Reihe wird mit korrekter Anzahl, Abstand und Ausrichtung generiert; Parameter sind im Nachhinein änderbar |
| F-EVT-02 | **Block-Bestuhlung:** Automatische Platzierung von Stuhl-Blöcke in einem rechteckigen Bereich mit konfigurierbaren Reihen, Spalten, Abständen | Block wird mit korrekter Reihe/Spalte-Anzahl und Abständen generiert; Parameter im Nachhinein änderbar |
| F-EVT-03 | **Bestuhlungs-Parameter:** Stuhl-Typ (aus Bibliothek), Reihe/Spalte-Anzahl, Abstand, Versatz, Ausrichtung, Block-Konfiguration | Alle Parameter können konfiguriert werden; Änderungen aktualisieren die Bestuhlung in Echtzeit |
| F-EVT-04 | **Bestuhlung bearbeiten:** Generierte Bestuhlung kann nachträglich modifiziert werden (Stühle hinzufügen/entfernen, verschieben) | Einzelne Stühle können hinzugefügt, entfernt oder verschoben werden; Gesamtbestuhlung aktualisiert sich |
| F-EVT-05 | **Bestuhlungs-Zählung:** Automatische Zählung der platzierten Stühle pro Reihe, Block und Gesamt | Zähler wird in Echtzeit aktualisiert und kann im Eigenschaften-Panel abgelesen werden |
### 3.6 Import & Export
| ID | Anforderung | Akzeptanzkriterium |
|---|---|---|
| F-IMP-01 | **DXF-Import:** DXF-Dateien können importiert und als Zeichnung bearbeitet werden | DXF wird korrekt importiert; Layer, Blöcke und Geometrie bleiben erhalten |
| F-IMP-02 | **SVG-Import:** SVG-Dateien können als Zeichnung importiert werden | SVG wird korrekt importiert und als Vektor-Elemente bearbeitbar |
| F-IMP-03 | **DWG-Import (Optional):** DWG-Dateien können importiert werden (Open-Source-Library, z. B. libredwg) | DWG wird korrekt importiert oder klare Fehlermeldung bei nicht unterstützter Version |
| F-IMP-04 | **PDF-Import:** PDF-Dateien als Hintergrund oder als Vektor-Import | PDF wird geladen; Seiten können ausgewählt werden; Vektoren werden als bearbeitbare Elemente importiert |
| F-EXP-01 | **DXF-Export:** Zeichnung kann als DXF exportiert werden | Exportierte DXF-Datei kann in AutoCAD/QCAD korrekt geöffnet werden |
| F-EXP-02 | **SVG-Export:** Zeichnung kann als SVG exportiert werden | Exportierte SVG-Datei ist W3C-konform und in Browsern/Vektor-Programmen darstellbar |
| F-EXP-03 | **PDF-Export:** Zeichnung kann als PDF exportiert werden (mit Layout, Maßstab, Titelblock) | PDF wird mit korrektem Maßstab und allen Elementen generiert |
| F-EXP-03a | **PNG-Export:** Zeichnung kann als PNG exportiert werden | PNG wird in konfigurierbarer Auflösung generiert |
| F-EXP-04 | **JSON-Export (Projekt):** Vollständiges Projekt kann als JSON exportiert und wieder importiert werden | JSON enthält alle Daten (Ebenen, Elemente, Bibliothek, Grundriss); Re-Import ergibt identisches Projekt |
### 3.7 Multi-User & Kollaboration
| ID | Anforderung | Akzeptanzkriterium |
|---|---|---|
| F-MU-01 | **Echtzeit-Kollaboration:** Mehrere Nutzer können gleichzeitig an derselben Zeichnung arbeiten | Änderungen eines Nutzers sind für alle anderen in Echtzeit (< 1 Sekunde) sichtbar |
| F-MU-02 | **Konfliktfreie Bearbeitung:** Gleichzeitige Bearbeitung desselben Elements führt nicht zu Konflikten oder Datenverlust | CRDT-basierte Synchronisation stellt Konsistenz sicher; keine Merge-Konflikte |
| F-MU-03 | **Nutzer-Anwesenheit:** Sichtbare Anzeige welcher Nutzer online ist und an welcher Zeichnung arbeitet | Avatar/Farbmarkierung pro Nutzer; Liste der aktiven Nutzer im Panel |
| F-MU-04 | **Cursor-Anzeige:** Position und Aktionen anderer Nutzer in Echtzeit sichtbar | Cursor anderer Nutzer wird mit Name/Farbe in Echtzeit angezeigt |
| F-MU-05 | **Berechtigungs-System:** Rollenbasierte Zugriffskontrolle (Planer, Betrachter, Admin, Gast) | Berechtigungen werden enforced; Betrachter kann nicht bearbeiten; Gast hat nur Zugriff auf freigegebene Pläne |
| F-MU-06 | **Offline-Unterstützung:** Offline-Änderungen werden synchronisiert, wenn Verbindung wiederhergestellt ist | Offline-Änderungen werden automatisch synchronisiert; keine Datenverluste |
| F-MU-07 | **Versionshistorie:** Änderungen werden protokolliert; Versionen können eingesehen und wiederhergestellt werden | Historie zeigt Zeitstempel und Nutzer; Versionen können wiederhergestellt werden |
### 3.8 UI / UX
| ID | Anforderung | Akzeptanzkriterium |
|---|---|---|
| F-UI-01 | **AutoCAD Web-ähnliche Oberfläche:** Ribbon-/Menü-Band, Werkzeug-Paletten, Eigenschaften-Panel, Command-Line, Status-Bar, Blocks-Tab, Layers-Tab | Layout orientiert sich an AutoCAD Web; Hauptwerkzeuge sind sichtbar und erreichbar |
| F-UI-02 | **Zeichenbereich:** Großer Canvas-Bereich mit Zoom, Pan, und View-Controls (Zoom-to-Fit, Zoom-to-Window) | Zoom und Pan funktionieren flüssig (60fps); View-Controls sind erreichbar |
| F-UI-03 | **Kontextmenüs:** Rechtsklick-Kontextmenüs mit relevanten Aktionen | Kontextmenü zeigt aktionsabhängige Einträge |
| F-UI-04 | **Tastatur-Shortcuts:** Standard-CAD-Shortcuts (z. B. L, C, M, CO, RO, SC, MI, PL, H) | Shortcuts funktionieren und sind dokumentiert |
| F-UI-05 | **Responsive Design:** UI funktioniert auf Desktop-Bildschirmen (min. 1280px) | Bei 1280px Breite sind alle Panels nutzbar; kleinere Bildschirme werden in späterer Phase unterstützt |
| F-UI-06 | **Theme-Unterstützung:** Dark- und Light-Mode | Theme kann umgeschaltet werden; alle UI-Elemente passen sich an |
| F-UI-07 | **Sidebar-Panels:** Tabs für Blocks, Layers, Eigenschaften (wie AutoCAD Web Side Panel) | Side-Panel-Tabs sind erreichbar und zeigen entsprechenden Inhalt |
| F-UI-08 | **Streamlined UI:** UI fokussiert auf 2D-Drafting nicht überladen wie Desktop-CAD | Wesentliche Werkzeuge sichtbar; erweiterte Funktionen in Untermenüs oder ausblendbar |
| F-UI-09 | **KI Copilot Panel:** Eingebettetes Chat/Command-Panel für KI-Interaktion | KI-Panel ist sichtbar; Nutzer kann Texteingaben machen; Antworten und Aktionen werden angezeigt |
| F-UI-10 | **Voice Input:** Spracheingabe für KI Copilot (optional, Web Speech API) | Spracheingabe kann aktiviert werden; erkannter Text wird an KI Copilot gesendet |
### 3.9 Erweiterbarkeit & Plugin-System
| ID | Anforderung | Akzeptanzkriterium |
|---|---|---|
| F-EXT-01 | **Plugin/Tool-System:** Architektur ermöglicht das Hinzufügen neuer Tools ohne Core-Änderung | Ein neues Tool kann als Plugin/Modul implementiert und registriert werden ohne Core-Code zu ändern |
| F-EXT-02 | **Tool-API:** Definierte Schnittstelle für externe Tools (Zeichnen, Bearbeiten, Bibliothek, Export, UI) | API ist dokumentiert; ein Beispiel-Tool kann die API nutzen |
| F-EXT-03 | **Bibliothek-Erweiterung:** Neue Bibliothekstypen können hinzugefügt werden (nicht nur SVG) | Neue Typen können registriert und in der Bibliothek verwendet werden |
| F-EXT-04 | **Universelle Erweiterbarkeit:** Die Software soll später in jede Richtung erweiterbar sein neue Branchen-Tools, neue Import/Export-Formate, neue UI-Komponenten | Architektur erlaubt Erweiterung in allen Bereichen ohne Core-Rewrite |
| F-EXT-05 | **Plugin-Isolation:** Plugins laufen isoliert und können den Core nicht crashen | Ein fehlerhaftes Plugin zeigt Fehlermeldung, aber die Anwendung stürzt nicht ab |
| F-EXT-06 | **Plugin-Registrierung:** Plugins können über ein Manifest registriert und zur Laufzeit geladen werden | Plugin-Manifest definiert Name, Version, Abhängigkeiten; Plugin wird zur Laufzeit geladen |
| F-EXT-07 | **Plugin-Lifecycle:** Plugins können aktiviert/deaktiviert werden ohne Neustart | Plugin kann in den Einstellungen aktiviert/deaktiviert werden; Änderung ist sofort wirksam |
| F-EXT-08 | **Plugin-UI-Integration:** Plugins können eigene UI-Elemente (Ribbon-Tabs, Panels, Dialoge) hinzufügen | Plugin-UI-Elemente erscheinen im Ribbon/Panel und sind funktional |
### 3.10 Authentifizierung & Benutzerverwaltung
| ID | Anforderung | Akzeptanzkriterium |
|---|---|---|
| F-AUTH-01 | **E-Mail/Passwort-Login:** Nutzer registrieren sich mit E-Mail und Passwort | Registrierung und Login funktionieren; Passwörter werden gehasht (bcrypt/argon2) gespeichert |
| F-AUTH-02 | **Passwort-Reset:** Passwort kann über E-Mail-Link zurückgesetzt werden | Reset-Link wird gesendet; Passwort kann nach Klick zurückgesetzt werden |
| F-AUTH-03 | **Session-Management:** Sichere Sessions mit HTTP-only Cookies | Sessions sind sicher; CSRF-Schutz aktiv; Session-Timeout konfigurierbar |
| F-AUTH-04 | **Benutzerverwaltung:** Admin kann Nutzer erstellen, bearbeiten, löschen, Rollen zuweisen | Alle Operationen funktionieren; Rollenänderungen sind sofort wirksam |
| F-AUTH-05 | **Gast-Zugang:** Admin kann temporäre Gast-Zugänge für spezifische Pläne erstellen | Gast-Link funktioniert; Gast hat nur Zugriff auf freigegebene Pläne; Link kann widerrufen werden |
### 3.11 KI Copilot
| ID | Anforderung | Akzeptanzkriterium |
|---|---|---|
| F-AI-01 | **CAD-Steuerung per Text/Sprache:** Der KI Copilot kann alle CAD-Grundfunktionen per Text- oder Spracheingabe steuern (z. B. "Zeichne eine Linie von A nach B", "Rotiere das ausgewählte Element um 45 Grad") | KI-Interpreter übersetzt natürliche Sprache in CAD-Befehle; Befehle werden korrekt ausgeführt; Ergebnis ist sichtbar auf dem Canvas |
| F-AI-02 | **Zeichnungen erstellen & bearbeiten:** Der KI Copilot kann Zeichnungen aktiv erstellen und bearbeiten Linien, Kreise, Polygone, Rechtecke, Bögen, Polylinien, Text, Bemaßungen, Schraffuren | KI-generierte Elemente erscheinen korrekt auf dem Canvas; Eigenschaften (Position, Größe, Farbe) entsprechen der Anweisung |
| F-AI-03 | **Bestuhlungs-Tools bedienen:** Der KI Copilot kann Bestuhlungs-Tools steuern Reihen und Blöcke erstellen, Parameter setzen (Anzahl, Abstand, Ausrichtung), Bestuhlung modifizieren | KI-generierte Bestuhlung entspricht den Parametern; Stuhlanzahl und -anordnung sind korrekt |
| F-AI-04 | **Layer & Bibliothek verwalten:** Der KI Copilot kann Layer erstellen/löschen/umschalten und Blöcke aus der Bibliothek einfügen/organisieren | KI-Befehle für Layer- und Bibliotheksoperationen werden korrekt ausgeführt; Änderungen sind sichtbar |
| F-AI-05 | **Import/Export auslösen:** Der KI Copilot kann Import- und Export-Operationen auslösen (z. B. "Exportiere als DXF", "Importiere die SVG-Datei") | KI-gesteuerter Import/Export funktioniert; Dateien werden korrekt generiert/geladen |
| F-AI-06 | **KI-Architektur von Anfang an:** Die KI-Copilot-Architektur muss von Anfang an in den Core integriert sein keine nachträgliche Anbindung, sondern native Hooks/Schnittstellen | KI-Hooks sind Teil der Core-Architektur; CAD-Operationen sind als "Functions/Tools" registriert und vom KI-System aufrufbar |
| F-AI-07 | **Kontext-Verständnis:** Der KI Copilot versteht den aktuellen Kontext aktuelle Zeichnung, ausgewählte Elemente, aktive Ebene, Zoom-Bereich, Maßstab | KI antwortet kontextbezogen; "Rotiere das um 90 Grad" bezieht sich auf das ausgewählte Element; "Füge hier einen Stuhl hinzu" verwendet Cursor-Position |
| F-AI-08 | **Vorschläge & Empfehlungen:** Der KI Copilot kann Vorschläge machen (z. B. Bestuhlungs-Vorschläge basierend auf Raumgröße, Optimierungsvorschläge für Bestuhlungsanordnung) | KI generiert sinnvolle Vorschläge; Nutzer kann Vorschläge akzeptieren/ablehnen; akzeptierte Vorschläge werden auf Canvas umgesetzt |
| F-AI-09 | **Mehrschritt-Operationen:** Der KI Copilot kann komplexe, mehrschrittige Operationen ausführen (z. B. "Erstelle einen rechteckigen Raum 20x30m und bestuhle ihn mit 10 Reihen à 15 Stühlen") | KI führt alle Teilschritte korrekt aus; Zwischenergebnisse sind sichtbar; Gesamtoperation ist korrekt |
| F-AI-10 | **Fehlerbehandlung & Feedback:** Der KI Copilot gibt klare Fehlermeldungen bei missverständlichen oder nicht ausführbaren Anweisungen und fragt nach | KI gibt verständliche Fehlermeldungen; fragt bei Mehrdeutigkeit nach; schlägt Alternativen vor |
| F-AI-11 | **Undo für KI-Operationen:** Alle KI-gesteuerten Operationen können rückgängig gemacht werden | KI-Operationen appearieren in der Undo-Historie; können einzeln oder als Gruppe rückgängig gemacht werden |
| F-AI-12 | **KI-Modell konfigurierbar:** Das verwendete KI-Modell kann vom Admin konfiguriert werden (lokal oder remote, Modell-Auswahl) | Admin kann KI-Backend in Einstellungen konfigurieren; Wechsel zwischen lokal/remote ist möglich |
| F-AI-13 | **Open-Source KI-Backend:** KI-Backend verwendet Open-Source-Modelle/APIs (Ollama, vLLM, llama.cpp mit Llama/Qwen/DeepSeek-Modellen) | KI funktioniert mit Open-Source-Modellen; keine proprietäre Abhängigkeit |
| F-AI-14 | **Function Calling / Tool Use:** KI-Backend verwendet Function Calling / Tool Use Pattern CAD-Operationen sind als Functions registriert, die das LLM aufrufen kann | LLM generiert Function Calls; Functions werden ausgeführt; Ergebnisse an LLM zurückgegeben; CAD-Zustand aktualisiert |
| F-AI-15 | **Sicherheits-Guardrails:** KI Copilot kann keine destruktiven Operationen ohne Bestätigung ausführen (z. B. "Lösche alles") | Destruktive Befehle erfordern Bestätigung; Safety-Checks sind implementiert |
### 3.12 Integration & Modularität (API-First)
| ID | Anforderung | Akzeptanzkriterium |
|---|---|---|
| F-INT-01 | **REST-API:** Alle Kern-Funktionen sind über eine REST-API erreichbar (Projekte, Zeichnungen, Layer, Blöcke, Bibliothek, Export/Import) | API-Endpunkte sind dokumentiert (OpenAPI/Swagger); externe Clients können CRUD-Operationen ausführen |
| F-INT-02 | **API-First-Architektur:** Die Software ist API-first designed das Backend ist ein API-Server, die Web-UI ist ein API-Client | Backend-Logik ist vollständig über API nutzbar; UI verwendet dieselbe API wie externe Clients |
| F-INT-03 | **Webhook-Support:** Webhooks für Events (z. B. Zeichnung geändert, Projekt erstellt, Export fertig) | Webhooks können konfiguriert werden; Events werden an registrierte URLs gesendet |
| F-INT-04 | **Modulare Architektur:** Core, Plugins, KI-Backend und UI sind lose gekoppelte Module mit definierten Schnittstellen | Module können unabhängig entwickelt und ausgetauscht werden; Schnittstellen sind dokumentiert |
| F-INT-05 | **Anbindung an andere Software:** Die Software kann an andere Systeme angebunden werden (z. B. Event-Management-Systeme, CRM, Buchhaltung) | Integration via REST-API oder Webhooks ist möglich; Beispiel-Integration dokumentiert |
| F-INT-06 | **Datenbank-Agnostisch:** Persistenz-Schicht ist abstrahiert; Datenbank kann ausgetauscht werden (SQLite default, PostgreSQL/MySQL möglich) | Datenbank-Backend ist konfigurierbar; Wechsel erfordert nur Konfiguration, keinen Code-Change |
| F-INT-07 | **Headless-Modus:** Software kann ohne UI betrieben werden (nur API) nützlich für Automatisierung und Integration | Headless-Modus startet ohne UI; API ist voll funktionsfähig; Automatisierung möglich |
| F-INT-08 | **KI-API:** KI-Copilot-Funktionen sind über die API erreichbar (für externe Automatisierung) | KI-Befehle können via API gesendet werden; Ergebnisse werden als JSON zurückgegeben |
---
## 4. Nicht-funktionale Anforderungen
### 4.1 Performance
| ID | Anforderung | Akzeptanzkriterium |
|---|---|---|
| NF-PERF-01 | **Große Projekte:** Anwendung muss Projekte mit 50.000+ Elementen flüssig darstellen (60fps) | Benchmark: 50.000 Linienelemente werden bei 60fps gerendert (Canvas 2D mit Indexierung oder WebGL) |
| NF-PERF-02 | **Ladezeit:** Initiale Ladezeit < 3 Sekunden bei Standard-Internetverbindung | Lighthouse-Performance-Score >= 80; First Contentful Paint < 1,5s |
| NF-PERF-03 | **Speicher-Effizienz:** Browser-Speicherverbrauch bleibt < 500MB bei 50.000 Elementen | Speicherverbrauch wird überwacht und bleibt unter 500MB |
| NF-PERF-04 | **Kollaborations-Latenz:** Echtzeit-Synchronisation < 1 Sekunde bei normaler Netzwerkverbindung | Latenz wird gemessen und bleibt unter 1 Sekunde |
| NF-PERF-05 | **KI-Antwortzeit:** KI Copilot antwortet < 3 Sekunden auf einfache Befehle | Antwortzeit wird gemessen; einfache Befehle (< 3s); komplexe Operationen zeigen Fortschritt |
### 4.2 Rendering-Technologie (Architektur-Empfehlung Open Source)
Basierend auf Recherche (Stand 2025/2026). Alle Empfehlungen verwenden **ausschließlich Open-Source-Komponenten**.
| Technologie | Einsatzbereich | Begründung | Open-Source-Verfügbarkeit |
|---|---|---|---|
| **Canvas 2D (mit Indexierung & Layer-System)** | Primärer Renderer für 2D-CAD | Kann 50.000+ Elemente bei 60fps rendern; gute Balance aus Performance und Entwicklungs-Aufwand | Browser-Native API (keine Library nötig); rbush (R-Tree, MIT) für räumliche Indexierung |
| **WebGL (optional, Hybrid)** | Performance-Boost für sehr große Szenen (> 100k Elemente) | GPU-Beschleunigung; höhere Komplexität; erst bei Bedarf implementieren | regl (MIT) oder Three.js (MIT) als WebGL-Abstraktion |
| **SVG** | NICHT als primärer Renderer geeignet | DOM-Overhead bei > 3.000-5.000 Elementen; Performance-Einbruch | |
| **WebAssembly** | Berechnungsintensive Operationen (DXF-Parsing, Geometrie-Operationen) | Nahe-native Performance für Parsing und Mathematik | Rust + wasm-bindgen (MIT/Apache); dxf-parser in Rust portierbar |
**Empfehlung:** Canvas 2D mit räumlichem Index (rbush/R-Tree) und Layer-basiertem Rendering als primäre Technologie. WebGL (via regl oder Three.js) als optionale Hybrid-Schicht für extrem große Szenen reservieren.
### 4.3 Kollaborations-Architektur (Open Source)
| Aspekt | Empfehlung | Begründung | Open-Source-Verfügbarkeit |
|---|---|---|---|
| **Synchronisation** | CRDT (Yjs) über WebSocket | Konfliktfreie Synchronisation; bewährt in Figma und modernen kollaborativen Apps | Yjs (MIT), y-websocket (MIT) |
| **Transport** | WebSocket für Dokument-Daten; WebRTC optional für Cursor-Daten | WebSocket: zuverlässig, server-seitig kontrollierbar; WebRTC: niedrigere Latenz | ws (MIT), y-webrtc (MIT) |
| **Persistenz** | Server-seitige Persistenz der CRDT-Dokumente | Single Source of Truth; Versionshistorie; Offline-Sync bei Reconnect | y-leveldb (MIT), IndexedDB client-side |
| **Skalierung** | WebSocket-Server mit Pub/Sub pro Raum (Zeichnung) | Mehrere Zeichnungen parallel; isolierte Räume; horizontale Skalierung möglich | Redis Pub/Sub (BSD) für Multi-Server-Skalierung |
### 4.4 KI-Copilot-Architektur (Open Source)
| Aspekt | Empfehlung | Begründung | Open-Source-Verfügbarkeit |
|---|---|---|---|
| **KI-Backend** | Ollama (MIT) oder vLLM (Apache-2.0) als lokaler Model-Server | Läuft auf eigenem Server; keine Cloud-Abhängigkeit; volle Kontrolle | Ollama (MIT), vLLM (Apache-2.0) |
| **KI-Modelle** | Llama 3/4 (Llama License), Qwen 2.5 (Apache-2.0), DeepSeek (MIT) | Open-Source LLMs mit Function-Calling-Unterstützung | Verschiedene OSS-Modelle verfügbar |
| **Function Calling** | LLM Function Calling / Tool Use Pattern | CAD-Operationen werden als Functions registriert; LLM ruft Functions auf; Ergebnisse zurück an LLM | Standard-Pattern, framework-unabhängig |
| **KI-Transport** | REST-API oder WebSocket zwischen Frontend und KI-Backend | Frontend sendet KI-Anfrage; Backend leitet an LLM weiter; LLM generiert Function Calls; Backend führt aus | Express/Fastify (MIT) oder FastAPI (MIT) |
| **CAD-Function-Registry** | Zentrales Verzeichnis aller CAD-Operationen als aufrufbare Functions | LLM kann nur registrierte Functions aufrufen;安全; erweiterbar durch Plugins | Custom Implementation (MIT) |
| **Context Injection** | Aktueller CAD-Zustand (Zeichnung, Selektion, Layer, Zoom) wird als Context an LLM gesendet | LLM hat Kontext; kann kontextbezogene Antworten geben | Custom Implementation |
| **Guardrails** | Safety-Layer für destruktive Operationen | Verhindert ungewolltes Löschen; erfordert Bestätigung | Custom Implementation |
**Architektur-Pattern:**
```
User Input (Text/Sprache)
→ KI-Backend (Ollama/vLLM)
→ LLM generiert Function Call (z. B. draw_line(x1, y1, x2, y2))
→ CAD-Function-Registry führt Function aus
→ Canvas aktualisiert sich
→ Ergebnis an LLM zurück ("Linie gezeichnet von A nach B")
→ LLM generiert Bestätigung an User
```
### 4.5 Open-Source-Lizenz & Komponenten
| ID | Anforderung | Akzeptanzkriterium |
|---|---|---|
| NF-OSS-01 | **Open-Source-Lizenz:** web-cad wird als Open Source veröffentlicht (Lizenz: AGPL-3.0 oder MIT, siehe Q-01) | Lizenz-Datei (LICENSE) im Repo; alle Quellen öffentlich |
| NF-OSS-02 | **Nur Open-Source-Komponenten:** Alle verwendeten Libraries, Tools, Frameworks und KI-Modelle müssen Open-Source-Lizenzen haben (MIT, Apache-2.0, BSD, ISC, LGPL, AGPL) | Keine proprietären Abhängigkeiten; Lizenz-Audit in CI/CD |
| NF-OSS-03 | **Lizenz-Kompatibilität:** Alle Abhängigkeiten sind untereinander lizenzkompatibel | Lizenz-Kompatibilitätsanalyse durchgeführt; keine Konflikte |
| NF-OSS-04 | **DXF-Bibliothek:** Open-Source DXF-Parser/Writer verwenden (z. B. dxf-parser, dxf-writer in JS oder Rust) | DXF-Import/Export funktioniert mit Open-Source-Library |
| NF-OSS-05 | **DWG-Bibliothek (Optional):** Falls DWG-Import unterstützt wird, Open-Source-Library verwenden (z. B. libredwg, GNU GPL) | DWG-Import funktioniert mit Open-Source-Library; keine kommerziellen Bibliotheken |
| NF-OSS-06 | **KI-Modelle:** Verwendete KI-Modelle sind Open Source (Llama, Qwen, DeepSeek etc.) | Keine proprietären KI-APIs als Abhängigkeit; lokale Modelle möglich |
### 4.6 Sicherheit
| ID | Anforderung | Akzeptanzkriterium |
|---|---|---|
| NF-SEC-01 | **Authentifizierung:** E-Mail/Passwort-basierte Authentifizierung (entschieden, siehe Q-02) | Login funktioniert; Passwörter gehasht (bcrypt/argon2); Sessions sicher (HTTP-only Cookies, CSRF-Schutz) |
| NF-SEC-02 | **Autorisierung:** Rollenbasierte Zugriffskontrolle für Projekte und Aktionen | Berechtigungen werden server-seitig enforced |
| NF-SEC-03 | **Daten-Transport:** HTTPS/WSS für gesamte Kommunikation | TLS für alle Verbindungen; keine unverschlüsselte Kommunikation |
| NF-SEC-04 | **Input-Validierung:** Import-Dateien werden validiert (DXF, SVG, PDF) | Maliziöse Dateien werden abgewiesen; Schema-Validierung erfolgt vor Verarbeitung |
| NF-SEC-05 | **KI-Safety:** KI-Copilot-Operationen haben Guardrails (keine destruktiven Operationen ohne Bestätigung) | Safety-Checks verhindern ungewollte Datenlöschung; Bestätigung erforderlich für kritische Operationen |
### 4.7 Deployment
| ID | Anforderung | Akzeptanzkriterium |
|---|---|---|
| NF-DEP-01 | **Docker-Deployment:** Anwendung kann in Docker-Containern betrieben werden | Dockerfile und docker-compose.yml vorhanden und funktionsfähig |
| NF-DEP-02 | **Coolify-Deployment:** Deployment via Coolify ist möglich | Coolify-kompatible Konfiguration vorhanden; Deployment-Dokumentation erstellt |
| NF-DEP-03 | **Umgebungs-Konfiguration:** Konfiguration über Umgebungsvariablen | Keine fest codierten Credentials; alle Secrets über Env-Variablen |
| NF-DEP-04 | **Datenbank:** SQLite als Standard-Datenbank (entschieden, siehe Q-03); Datenbank-Schicht ist abstrahiert für spätere Migration | SQLite funktioniert; Schema definiert; Migration zu PostgreSQL möglich |
| NF-DEP-05 | **KI-Backend-Deployment:** KI-Backend (Ollama/vLLM) läuft als separater Container | KI-Backend ist in docker-compose.yml definiert; Kommunikation mit CAD-Backend funktioniert |
### 4.8 Plattform & Browser-Kompatibilität
| ID | Anforderung | Akzeptanzkriterium |
|---|---|---|
| NF-PLAT-01 | **Browser-Unterstützung:** Chrome, Firefox, Edge, Safari (aktuelle Versionen) | Anwendung läuft in allen genannten Browsern; keine Browser-spezifischen Fehler |
| NF-PLAT-02 | **WebAssembly-Unterstützung:** Browser muss WebAssembly unterstützen | Fallback-Strategie für Browser ohne WebAssembly oder klare Fehlermeldung |
| NF-PLAT-03 | **Web Speech API:** Browser muss Web Speech API unterstützen (für optionale Voice-Input) | Voice-Input funktioniert in unterstützten Browsern; Fallback auf Text-Eingabe |
---
## 5. Annahmen (Assumptions)
1. **Primär Desktop:** Die Anwendung wird primär auf Desktop-Geräten (≥1280px Breite) verwendet; mobile Unterstützung ist nicht Teil der initialen Version.
2. **Deutsche UI:** Die Benutzeroberfläche wird primär auf Deutsch entwickelt; Mehrsprachigkeit kann später hinzugefügt werden.
3. **Keine 3D:** Die Anwendung ist rein 2D; keine 3D-Modellierung oder 3D-Ansicht.
4. **DXF als primäres Austauschformat:** DXF ist das wichtigste Import/Export-Format für CAD-Interoperabilität; DWG ist optional und von Open-Source-Library-Verfügbarkeit abhängig.
5. **CRDT als Synchronisations-Standard:** CRDT (Yjs) wird als Standard für Echtzeit-Kollaboration angenommen; OT wird nicht verwendet.
6. **Canvas 2D als primärer Renderer:** Canvas 2D mit räumlichem Index (rbush) wird als primäre Rendering-Technologie angenommen; WebGL ist optional.
7. **Einzelner Server-Deployment:** Initiales Deployment ist ein einzelner Server (Docker/Coolify); horizontale Skalierung ist später möglich.
8. **SVG-Import als Bibliothekserweiterung:** SVG-Dateien werden primär für die Bibliothek importiert; SVG als Projekt-Import ist sekundär.
9. **Open Source:** Alle Komponenten sind Open Source; web-cad selbst wird als Open Source lizenziert (AGPL-3.0 oder MIT).
10. **Bestuhlungs-Stühle als Bibliothek-Blöcke:** Stühle für Bestuhlungs-Tools werden als Blöcke in der Bibliothek definiert, nicht fest codiert.
11. **E-Mail/Passwort-Auth:** E-Mail/Passwort ist die Authentifizierungsmethode; keine OAuth2/SSO in der initialen Version.
12. **Universelle Erweiterbarkeit:** Die Plugin-Architektur ist so konzipiert, dass die Software später in jede Richtung erweiterbar ist (neue Branchen, Formate, UI-Komponenten).
13. **SQLite als Standard-Datenbank:** SQLite wird als Standard-Datenbank verwendet; Datenbank-Schicht ist abstrahiert für spätere Migration zu PostgreSQL/MySQL.
14. **API-First-Design:** Die Software ist API-first designed; das Backend ist ein API-Server, die UI ist ein API-Client. Dadurch ist die Software an andere Systeme anhängbar.
15. **KI Copilot als Kern-Feature:** Der KI Copilot ist von Anfang an in die Core-Architektur integriert kein Afterthought. CAD-Operationen sind als Functions registriert, die vom LLM aufgerufen werden können.
16. **Open-Source KI-Backend:** KI-Backend verwendet Open-Source-Modelle (Llama, Qwen, DeepSeek) via Ollama oder vLLM; keine proprietären KI-APIs als Abhängigkeit.
17. **Function Calling als KI-Pattern:** Das LLM verwendet Function Calling / Tool Use, um CAD-Operationen auszulösen. Das LLM generiert keine direkten Canvas-Befehle, sondern ruft registrierte Functions auf.
18. **Modularität:** Core, Plugins, KI-Backend und UI sind lose gekoppelte Module mit definierten Schnittstellen.
---
## 6. Non-Goals (Nicht im Scope der initialen Version)
1. **Keine 3D-Modellierung** rein 2D; keine 3D-Ansicht, keine Höhen, keine 3D-Renderings.
2. **Keine mobile App oder mobile-optimierte UI** Desktop first; mobile wird erst bei Bedarf addressed.
3. **Keine lokalen Druck-/Plot-Konfigurationen** PDF-Export ersetzt direktes Drucken in der ersten Version.
4. **Keine AutoCAD-LISP-/Macro-Skripting-Engine** keine benutzerdefinierten Skripte in LISP/AutoLISP.
5. **Keine parametrische Modellierung** keine Constraint-basierte Geometrie oder parametrischen Relationen.
6. **Keine BIM-Integration** keine IFC-Importe, keine BIM-Datenmodellierung.
7. **Keine Desktop-Installation** rein web-basiert; keine Electron-/NW.js-Desktop-App.
8. **Keine Multi-Tenant-Isolierung auf Organisationsebene** initiale Version ist Single-Tenant; Multi-Tenant später.
9. **Keine erweiterten Druck-Layouts** keine Plot-Styles, Linienstärken-Tabellen oder Print-Studio-Konfigurationen.
10. **Keine Video-/Audio-Kommunikation** keine integrierte Video- oder Audio-Calls zwischen Nutzern.
11. **Keine automatische Flächenberechnung / Mengenermittlung** in der ersten Version nicht enthalten.
12. **Kein OAuth2/OIDC/SSO** E-Mail/Passwort reicht; SSO kann später als Plugin nachgerüstet werden.
13. **Keine AutoCAD-Block-Editor-Äquivalenz** Block-Definitionen können bearbeitet werden, aber kein vollständiger Block-Editor wie in Desktop-AutoCAD.
14. **Keine CAD-Standards-Verwaltung** keine DWS-Dateien oder Standards-Checking wie in Desktop-AutoCAD.
15. **Keine 3D-Viewing** anders als AutoCAD Web (das DWG-3D-Viewing bietet), ist web-cad rein 2D.
16. **Keine autonomes KI-Zeichnen** der KI Copilot führt Befehle auf Anweisung aus, aber zeichnet nicht selbstständig komplexe Zeichnungen ohne User-Anweisung. Autonomes Zeichnen ist ein späteres Feature.
17. **Keine KI-Training/Fine-Tuning** die initialen KI-Modelle werden nicht fine-getuned; Standard-Modelle mit Function Calling werden verwendet.
---
## 7. Entschiedene Fragen (Resolved)
| # | Frage | Antwort | Entscheidung |
|---|---|---|---|
| Q-01 | Soll die Anwendung Open Source oder Closed Source sein? Welche Lizenz? | Open Source | ✅ **Entschieden:** Software wird als Open Source lizenziert (AGPL-3.0 empfohlen für Copyleft-Schutz, MIT als Alternative). Nur komplett offene Komponenten werden verwendet. |
| Q-02 | Welche Authentifizierungsmethode wird bevorzugt? | E-Mail/Passwort | ✅ **Entschieden:** E-Mail/Passwort als Authentifizierung. Keine OAuth2/OIDC/SSO in der initialen Version. SSO kann später als Plugin nachgerüstet werden. |
| Q-03 | Welche Datenbank soll verwendet werden? | SQLite | ✅ **Entschieden:** SQLite als Standard-Datenbank. Datenbank-Schicht ist abstrahiert für spätere Migration. Software ist API-first/modular designed für Integration mit anderer Software. |
---
## 8. Offene Fragen
| # | Frage | Priorität | Auswirkung bei Nicht-Beantwortung |
|---|---|---|---|
| Q-04 | Gibt es eine erwartete Nutzerzahl / Anzahl gleichzeitiger Kollaborateure pro Zeichnung? | Mittel | Skalierungs-Architektur, WebSocket-Server-Design |
| Q-05 | Soll DWG-Import unterstützt werden? Wenn ja, welche DWG-Versionen? | Mittel | Library-Auswahl (libredwg, GNU GPL) |
| Q-06 | Welche Stuhl-Typen / Bibliothekseinträge werden initial benötigt? | Mittel | Initial-Bibliothek, Bestuhlungs-Tool-Design |
| Q-07 | Sollen Bestuhlungs-Tools weitere Event-Elemente unterstützen (Tische, Bühnen, Absperrungen)? | Mittel | Tool-Scope, Bibliothek |
| Q-08 | Ist eine Kommentar-/Annotations-Funktion für Kollaborateure gewünscht? | Niedrig | UI-Design, Kollaborations-Features |
| Q-09 | Sollen Projekte in Ordnern/Projektgruppen organisiert werden können? | Niedrig | Projekt-Management-UI |
| Q-10 | Gibt es Anforderungen an Barrierefreiheit (WCAG 2.1 AA)? | Niedrig | UI-Design, Testing-Aufwand |
| Q-11 | Soll es ein API für externe Integrationen geben (REST/GraphQL)? | Niedrig | Architektur-Erweiterung |
| Q-12 | Welche Maßeinheiten sollen unterstützt werden (metrisch, imperial, beides)? | Niedrig | Bemaßungs-Logic, UI |
| Q-13 | AGPL-3.0 oder MIT als Lizenz? | Niedrig | Lizenz-Datei, Copyleft vs. Permissive |
| Q-14 | Soll der KI Copilot Spracheingabe (Voice) von Anfang an unterstützen oder erst später? | Niedrig | UI-Design, Web Speech API Integration |
| Q-15 | Soll das KI-Backend lokal (Ollama auf Server) oder remote (externer API-Provider) laufen? | Mittel | Deployment-Architektur, Performance, Kosten |
| Q-16 | Welche KI-Modellgröße ist akzeptabel (z. B. 7B, 13B, 70B Parameter)? | Mittel | Performance, Hardware-Anforderungen, Antwortzeit |
---
## 9. Technologie-Recherche & Empfehlungen
### 9.1 Rendering-Technologie
**Recherche-Ergebnisse (Stand 2025/2026):**
- **SVG:** Gut für einfache Grafiken; DOM-Overhead bei > 3.000-5.000 Elementen → Performance-Einbruch. **Nicht geeignet für CAD mit großen Zeichnungen.**
- **Canvas 2D:** Kann 50.000+ Elemente bei 60fps rendern, wenn räumliche Indexierung (Quadtree/R-Tree) und Layer-basiertes Culling eingesetzt werden. **Empfohlen als primärer Renderer.**
- **WebGL:** Höchste Performance für sehr große Szenen (> 100k Elemente); GPU-Beschleunigung; jedoch höherer Entwicklungs-Aufwand. **Als optionale Hybrid-Schicht reservieren.**
- **WebAssembly:** Nahe-native Performance für Berechnungen (DXF-Parsing, geometrische Operationen). **Empfohlen für rechenintensive Aufgaben.**
**Quellen:**
- SVG Genie Blog: SVG vs Canvas vs WebGL Performance Comparison (2026)
- AlterSquare: WebGL vs Canvas for Browser-Based CAD Tools
- Medium (@codetip.top): SVG vs Canvas vs WebGL for Diagram Viewers
- PMC: Cross-Device Benchmark of Modern Web Animation Systems
### 9.2 Multi-User Kollaboration
**Recherche-Ergebnisse (Stand 2025/2026):**
- **CRDT (Conflict-free Replicated Data Types):** Moderner Standard für kollaborative Anwendungen; verwendet von Figma und vielen modernen Apps; leichter korrekt zu implementieren als OT.
- **Yjs (MIT):** Beliebteste CRDT-Bibliothek; unterstützt Text, Arrays, Maps, XML; WebSocket- und WebRTC-Bindings vorhanden.
- **Automerge (MIT):** Alternative CRDT-Bibliothek; ähnliche Features.
- **OT (Operational Transformation):** Älterer Ansatz (Google Docs); komplexer korrekt zu implementieren; erfordert zentrale Server-Logik.
- **Transport:** WebSocket für Dokument-Synchronisation; WebRTC für Cursor-Positionen (niedrigere Latenz).
- **Persistenz:** Server-seitige Speicherung der CRDT-Dokumente für Single Source of Truth und Versionshistorie.
**Empfehlung:** CRDT (Yjs, MIT) über WebSocket als primäre Kollaborations-Architektur.
**Quellen:**
- Medium (toonsquare.tech): Real-Time Collaborative Editor with CRDT and Durable Objects
- Velt Blog: OT vs CRDT in 2026; Yjs WebSocket Server Guide
- Daydreamsoft: Real-Time Collaboration Using CRDTs and OT
- Onshape: Cloud-native CAD Collaboration
### 9.3 KI-Copilot-Architektur
**Recherche-Ergebnisse (basierend auf Known Best Practices und früheren Suchergebnissen zu AutoCAD AI 2026/2027):**
- **AutoCAD 2026/2027 AI Features:** Autodesk integriert KI für automatisches Block-Placement, Dimensioning, Layer-Assignment und Error-Detection mittels Machine Learning. (Quelle: cadcenterhyderabad.com, arkance.us)
- **LLM Function Calling / Tool Use:** Der Standard-Pattern für KI-Copiloten in Software-Anwendungen. Das LLM erhält eine Liste von verfügbaren Functions/Tools und generiert strukturierte Function Calls, die von der Anwendung ausgeführt werden.
- Beispiel: `draw_line(x1=100, y1=200, x2=300, y2=400)` → CAD-Engine führt Funktion aus → Canvas aktualisiert sich
- Vorteil: Sichere, kontrollierte KI-Ausführung; LLM hat keinen direkten Canvas-Zugriff
- Verwendet von: OpenAI (Function Calling), Anthropic (Tool Use), Open-Source-Modelle via Ollama/vLLM
- **Open-Source KI-Backends:**
- **Ollama (MIT):** Lokaler Model-Server; einfach zu deployen; unterstützt Llama, Qwen, DeepSeek; Function Calling via JSON-Format
- **vLLM (Apache-2.0):** Hochperformanter Inference-Server; optimiert für Throughput; unterstützt OpenAI-kompatibles API
- **llama.cpp (MIT):** Minimaler C++-Inference-Server; läuft auf CPU und GPU; für Resource-constrained Environments
- **Open-Source LLM-Modelle mit Function Calling:**
- **Llama 3/4 (Meta, Llama License):** 8B/70B/400B Parameter; gute Function-Calling-Unterstützung
- **Qwen 2.5 (Alibaba, Apache-2.0):** 7B/14B/32B/72B Parameter; explizit für Tool-Use trainiert
- **DeepSeek (MIT):** 7B/67B Parameter; gutes Code-Verständnis; Function-Calling-fähig
- **Context Injection:** Der aktuelle CAD-Zustand (Zeichnung, Selektion, Layer, Zoom, Maßstab) wird als strukturiertes Context-Objekt an das LLM gesendet. Dadurch kann das LLM kontextbezogene Antworten und Function Calls generieren.
- **Mehrschritt-Operationen:** Für komplexe Befehle (z. B. "Erstelle einen Raum und bestuhle ihn") kann das LLM eine Sequenz von Function Calls generieren, die nacheinander ausgeführt werden.
- **Guardrails / Safety:** Ein Safety-Layer prüft jeden Function Call vor der Ausführung. Destruktive Operationen (Löschen aller Elemente, Überschreiben ganzer Zeichnungen) erfordern explizite User-Bestätigung.
**Empfehlung:** Ollama (MIT) als KI-Backend mit Qwen 2.5 (Apache-2.0) oder Llama (Llama License) als primäres Modell. Function Calling Pattern mit zentraler CAD-Function-Registry. Context Injection für Kontext-Verständnis. Guardrails für Safety.
**Quellen:**
- cadcenterhyderabad.com: AutoCAD 2027 AI Features
- arkance.us: AutoCAD 2026 New Features (BSEARCH, Centerline Layer)
- Ollama Documentation: Function Calling Support
- vLLM Documentation: OpenAI-Compatible API
- Qwen 2.5 Model Card: Tool Use Training
- Allgemeine Best Practices für LLM Function Calling / Tool Use Pattern
### 9.4 Open-Source-Technologie-Stack (Empfehlung)
| Schicht | Empfehlung | Lizenz |
|---|---|---|
| **Frontend-Framework** | React (MIT) oder Vue.js (MIT) oder Svelte (MIT) | MIT |
| **Rendering** | Canvas 2D (native) + rbush (MIT) für räumliche Indexierung | MIT |
| **WebGL (optional)** | regl (MIT) oder Three.js (MIT) | MIT |
| **CRDT/Sync** | Yjs (MIT) + y-websocket (MIT) | MIT |
| **Backend-Framework** | Node.js (Express/Fastify) oder Python (FastAPI) | MIT |
| **WebSocket-Server** | ws (MIT) für Node.js oder websockets (BSD) für Python | MIT/BSD |
| **Datenbank** | SQLite (Public Domain) Standard; PostgreSQL (PostgreSQL License) optional | Open Source |
| **DXF-Parser** | dxf-parser (MIT, JS) oder Rust-Port mit wasm-bindgen | MIT |
| **DWG-Parser (optional)** | libredwg (GPL) | GPL |
| **PDF-Generierung** | pdf-lib (MIT) oder jsPDF (MIT) | MIT |
| **SVG-Verarbeitung** | Native Browser-API oder svg.js (MIT) | MIT |
| **Auth** | bcrypt (Apache) oder argon2 (MIT/CDDL) | Open Source |
| **KI-Backend** | Ollama (MIT) oder vLLM (Apache-2.0) | MIT/Apache |
| **KI-Modell** | Qwen 2.5 (Apache-2.0) oder Llama 3/4 (Llama License) oder DeepSeek (MIT) | Open Source |
| **API-Dokumentation** | OpenAPI/Swagger (Apache-2.0) | Apache |
| **Containerisierung** | Docker (Apache 2.0) | Open Source |
| **Deployment** | Coolify (AGPL-3.0) | Open Source |
### 9.5 Architektur-Referenzen
- **AutoCAD Web:** Browser-basierte CAD-Oberfläche mit streamlined UI, Side-Panel, Command Line, Blocks/Layers-Tabs. Siehe Section 12 für detaillierte Feature-Referenz.
- **AutoCAD 2026/2027 AI:** KI-Features für Block-Placement, Dimensioning, Layer-Assignment, Error-Detection.
- **Onshape:** Cloud-native CAD mit echter Multi-User-Kollaboration; Single Source of Truth; keine Datei-Kopien.
- **Figma:** Browser-basierte Design-Tool mit CRDT-basierter Kollaboration; inspirierend für UI und Sync-Architektur.
- **xDraftSight:** Cloud-basierter 2D-CAD; browser-basierte Architektur.
---
## 10. Abhängigkeiten & Risiken
| Risiko | Beschreibung | Mitigation |
|---|---|---|
| DXF/DWG-Kompatibilität | DXF-Parser muss verschiedene DXF-Versionen korrekt verarbeiten | Open-Source-Library (dxf-parser, MIT) verwenden; Tests mit realen DXF-Dateien |
| Performance bei großen Zeichnungen | 50k+ Elemente können Browser überlasten | Canvas 2D mit räumlichem Index (rbush); Viewport-Culling; Virtualisierte Layer |
| Kollaborations-Komplexität | CRDT-Synchronisation für komplexe CAD-Daten ist nicht trivial | Yjs als bewährte Bibliothek; inkrementelle Implementierung; erst einfache Operationen, dann komplexe |
| Open-Source-DWG-Support | libredwg (GPL) hat eingeschränkte DWG-Version-Unterstützung | DWG als optional markieren; DXF als primäres Format |
| Browser-Speicherlimit | Sehr große Projekte können Browser-Speicherlimit überschreiten | Lazy-Loading; Kompression; IndexedDB für Persistenz |
| Plugin-System-Komplexität | Universelles Plugin-System kann Core-Stabilität gefährden | Plugin-Isolation (Sandbox/try-catch); Plugin-Manifest mit deklarativen Abhängigkeiten |
| KI-Fehlerhafte Befehle | LLM könnte fehlerhafte oder unerwartete Function Calls generieren | Guardrails; Function-Validation vor Ausführung; Bestätigung für destruktive Operationen |
| KI-Latenz | LLM-Inferenz kann mehrere Sekunden dauern, besonders auf lokaler Hardware | Streaming-Responses; Fortschrittsanzeige; Modellgröße wählbar (7B für Speed, 70B für Qualität) |
| KI-Hardware-Anforderungen | Lokale KI-Modelle benötigen GPU/RAM | Ollama mit quantisierten Modellen (4-bit/8-bit); remote API als Fallback |
| KI-Kontext-Größe | CAD-Zustand kann groß sein (viele Elemente); LLM-Context-Limit begrenzt | Context-Summary statt vollständiger Zeichnung; nur relevante Ausschnitte senden |
---
## 11. Deployment-Erwartungen
| Aspekt | Erwartung |
|---|---|
| **Containerisierung** | Docker (Dockerfile + docker-compose.yml) CAD-Backend, KI-Backend, Frontend |
| **Orchestrierung** | Coolify auf coolify-01 (46.225.91.159) |
| **Domain** | TBD z. B. cad.media-on.de |
| **SSL** | Let's Encrypt via Coolify/Traefik |
| **Datenbank** | SQLite (Standard); Datenbank-Schicht abstrahiert für Migration |
| **KI-Backend** | Ollama oder vLLM als separater Container; GPU empfohlen (nicht zwingend) |
| **WebSocket-Server** | Separater Container oder integriert; WebSocket-Proxy via Traefik |
| **Persistenz** | Docker-Volume für Datenbank, Datei-Storage und KI-Modelle |
| **Skalierung** | Initiale Version: Einzelner Server; später horizontal skalierbar |
---
## 12. AutoCAD Web Feature-Referenz
Diese Sektion dokumentiert die recherchierten Features von AutoCAD Web App als Vergleichsbasis für web-cad.
### 12.1 CAD-Grundfunktionen in AutoCAD Web
Basierend auf Recherche (Scan2CAD Review, Autodesk Produktseiten, Softonic Review, Reddit/Diskussionen):
| Kategorie | Verfügbare Tools/Features in AutoCAD Web |
|---|---|
| **Zeichnen (Draw)** | Polyline (PLINE), Line, Circle, Arc, Rectangle, Polygon |
| **Bearbeiten (Modify)** | Move, Offset, Mirror, Rotate, Trim, Extend, Copy, Scale, Fillet |
| **Bemaßung (Dimensioning)** | DIM (Linear, Aligned, Radial), MLEADER (Multi-Leader) |
| **Annotation/Text** | MTEXT (Multiline Text), REVCLOUD (Revision Cloud), Text |
| **Raster & Fang (Snap)** | Object Snaps (Endpoint, Midpoint, Intersection), Snap Overrides, Polar Tracking, Ortho |
| **Auswahl (Selection)** | Einzelauswahl, Fenster-Auswahl, Kreuz-Auswahl |
| **Blocks** | Insert (aus Blocks-Tab), Create, Edit (via Command Line) |
| **Layers** | Layer-Verwaltung (On/Off, Lock/Unlock, Farbe, Linientyp) |
| **XREFs** | External References werden unterstützt (im selben Ordner wie Parent-File) |
| **Command Line** | Vollständige Command-Line-Eingabe wie Desktop-AutoCAD |
| **UI-Elemente** | Side Panel (Commands), Blocks Tab, Layers Tab, Command Line, Status Bar |
### 12.2 AutoCAD Web UI-Struktur
| UI-Element | Beschreibung |
|---|---|
| **Streamlined UI** | Reduzierte, fokussierte Oberfläche für 2D-Drafting weniger überladen als Desktop |
| **Side Panel** | Seitliches Panel mit Befehls-Auswahl (Alternative zur Command Line) |
| **Command Line** | Befehlseingabe via Tastatur (wie Desktop-AutoCAD) |
| **Blocks Tab** | Tab im Side Panel zum Einfügen von Blöcken |
| **Layers Tab** | Tab im Side Panel für Layer-Verwaltung |
| **Canvas Area** | Haupt-Zeichenbereich mit Zoom/Pan |
| **Status Bar** | Status-Anzeige (Snap, Ortho, etc.) |
| **Ribbon** | Begrenzte Ribbon-Elemente (weniger als Desktop) |
### 12.3 AutoCAD Web Limitierungen (vs. Desktop AutoCAD)
| Limitierung | Beschreibung |
|---|---|
| **Kein Block Editor** | Kein vollständiger Block-Editor wie in Desktop; Block-Bearbeitung nur via Command Line |
| **Keine Tool Palettes** | Keine Tool-Paletten wie in Desktop-AutoCAD |
| **Kein LISP/AutoLISP** | Keine LISP- oder AutoLISP-Skripting-Unterstützung |
| **Keine Macros** | Keine Macro-Aufzeichnung oder -Wiedergabe |
| **Keine 3D-Bearbeitung** | Fokus auf 2D-Drafting; keine 3D-Modellierung oder -Bearbeitung |
| **Begrenzte 3D-Viewing** | DWG-3D-Viewing ist möglich, aber kein 3D-Editing |
| **Keine CAD Standards** | Keine DWS-Dateien oder Standards-Checking |
| **Keine erweiterten Plot-Konfigurationen** | Begrenzte Plot-/Druck-Optionen vs. Desktop |
| **Begrenzte Datei-Formate** | Primär DWG; DXF-Support begrenzt; keine direkten DGN/DWF-Exporte |
| **Keine Parametric Constraints** | Keine parametrischen Constraints (geometrische oder dimensionale) |
| **Keine Express Tools** | Keine Express-Tools-Sammlung wie in Desktop |
| **Begrenzte Anpassung** | Keine CUI-Anpassung (Custom User Interface) |
| **Freie Version limitiert** | Free-Version kann nur DWG-Dateien öffnen/anzeigen; Editieren erfordert Subscription |
| **Schwergewichtige Tasks** | Major drafting/editing-heavy lifting erfordert weiterhin Desktop |
### 12.4 AutoCAD Web Import/Export-Formate
| Format | Support | Bemerkung |
|---|---|---|
| **DWG** | ✅ Import & Export | Primäres Format; Vollunterstützung |
| **DXF** | ⚠️ Begrenzt | DXF-Support vorhanden aber weniger umfassend als Desktop |
| **PDF** | ✅ Export | PDF-Export unterstützt |
| **DGN** | ❌ Nicht unterstützt | Kein DGN-Import/Export in Web-Version |
| **DWF** | ❌ Begrenzt | Kein direkter DWF-Export in Web-Version |
| **SVG** | ❌ Nicht unterstützt | Kein SVG-Support in AutoCAD Web |
### 12.5 Vergleich: AutoCAD Web vs. web-cad (Target)
| Feature | AutoCAD Web | web-cad (Target) | Vorteil web-cad |
|---|---|---|---|
| **Rendering** | Proprietär (Autodesk) | Canvas 2D + rbush (Open Source) | Open Source, kontrollierbar |
| **Kollaboration** | Begrenzt (Autodesk Docs) | CRDT (Yjs) Echtzeit-Kollaboration | Echte Echtzeit-Kollaboration |
| **KI Copilot** | ⚠️ Begrenzt (AutoCAD 2026 AI) | ✅ Vollständiger KI Copilot mit Function Calling | Offen, steuerbar, alle CAD-Funktionen |
| **LISP/Scripting** | ❌ Nicht unterstützt | ❌ Non-Goal (initial) | |
| **Plugin-System** | ❌ Nicht verfügbar | ✅ Vollständiges Plugin/Tool-System | Erweiterbar in jede Richtung |
| **SVG-Import** | ❌ Nicht unterstützt | ✅ Vollunterstützt | Bibliothek-Erweiterung |
| **DXF-Support** | ⚠️ Begrenzt | ✅ Vollunterstützt (Open Source) | Vollständiger DXF-Support |
| **DWG-Support** | ✅ Vollunterstützt | ⚠️ Optional (libredwg, GPL) | AutoCAD Web überlegen hier |
| **Bestuhlungs-Tools** | ❌ Nicht verfügbar | ✅ Reihen & Block-Bestuhlung | Branchen-spezifisch |
| **API-First** | ❌ Keine öffentliche API | ✅ REST-API, API-first design | An andere Software anhängbar |
| **Lizenz** | Proprietär (Subscription) | Open Source (AGPL-3.0/MIT) | Frei nutzbar |
| **Deployment** | Autodesk Cloud | Docker/Coolify (self-hosted) | Self-hosted, volle Kontrolle |
| **UI** | Streamlined, Side Panel | AutoCAD Web-inspiriert + erweitert | Bekannte UI + mehr Features |
| **Datenbank** | Proprietär (Autodesk Cloud) | SQLite (Public Domain) | Self-hosted, kontrollierbar |
| **Mehrsprachigkeit** | ✅ Mehrere Sprachen | ⚠️ Deutsch first, i18n später | |
### 12.6 Quellen AutoCAD Web Referenz
- Scan2CAD: AutoCAD Web App Review (https://www.scan2cad.com/blog/cad/autocad-web-app/)
- Autodesk: AutoCAD Web Features (https://www.autodesk.com/products/autocad-web/features)
- Autodesk: AutoCAD Web FAQ (https://help.autodesk.com/view/ACADWEB/ENU/)
- Interscale: What is AutoCAD Web App & How It Differs (https://interscale.com.au/blog/autocad-web-app/)
- Softonic: AutoCAD Web Download Review
- Reddit: r/AutoCAD Diskussionen über Web-Version Limitierungen
- Autodesk: AutoCAD Web Overview (https://www.autodesk.com/products/autocad-web/overview)
- cadcenterhyderabad.com: AutoCAD 2027 AI Features
- arkance.us: AutoCAD 2026 New Features
---
## 13. Handoff
### Requirements Status
- **Draft v3 erstellt:** Ja (2026-06-19)
- **Entschiedene Fragen:** Q-01 (Open Source) ✅, Q-02 (E-Mail/Passwort) ✅, Q-03 (SQLite + API-first/modular) ✅
- **Testbare Anforderungen:** Ja alle funktionalen und nicht-funktionalen Anforderungen haben konkrete Akzeptanzkriterien
- **Akzeptanzkriterien konkret:** Ja
- **Assumptions:** 18 dokumentiert (erweitert um KI Copilot, API-First, SQLite, Modularität)
- **Non-Goals:** 17 dokumentiert (angepasst KI ist nun Kern-Feature, kein Non-Goal mehr; autonomes KI-Zeichnen ist Non-Goal)
- **Offene Fragen:** 9 (0 hoch, 4 mittel, 5 niedrig priorisiert)
- **AutoCAD Web Referenz:** Vollständige Feature-Analyse inkl. Limitierungen und Vergleich (erweitert um KI Copilot und API-First Vergleich)
- **Open-Source-Stack:** Vollständiger Stack mit Lizenzen (erweitert um KI-Backend und KI-Modelle)
- **KI Copilot:** 15 detaillierte Anforderungen (F-AI-01 bis F-AI-15) mit Function Calling Pattern, Guardrails, Open-Source-Backend
- **Integration/Modularität:** 8 Anforderungen (F-INT-01 bis F-INT-08) für API-first, REST-API, Webhooks, Headless-Modus
- **Plugin-System:** 8 Anforderungen (F-EXT-01 bis F-EXT-08) für universelle Erweiterbarkeit
### Ready for Architecture
- **Ja** alle hoch-priorisierten Fragen geklärt; Architektur-Phase kann starten
- KI-Copilot-Architektur ist als Core-Feature definiert mit Function Calling Pattern
- API-First-Design ist als Architektur-Vorgabe definiert
- Verbleibende offene Fragen (Q-04 bis Q-16) sind mittel/niedrig priorisiert und können während oder nach der Architektur-Phase geklärt werden
- Technologie-Empfehlungen stehen als Architektur-Vorgaben bereit
### Empfohlene nächste Schritte
1. User-Review der aktualisierten requirements.md (v3)
2. Optional: Beantwortung von Q-15 (KI lokal vs. remote) und Q-16 (KI-Modellgröße)
3. Freigabe für Architektur-Phase (Phase 2)
4. Delegation an Solution Architect mit Vorgaben: Open-Source-Stack, KI-Copilot-Function-Calling, API-First, Plugin-System