# Requirements Specification – web-cad **Project:** web-cad – Web-basiertes 2D-CAD für Event-Bestuhlungspläne **Phase:** 1 (Intake) **Date:** 2026-06-19 (updated v5 – quality review fixes) **Status:** Draft v5 – quality review fixes applied --- ## 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 konfigurierter Maßeinheit an | | F-CAD-04 | **Raster & Fang:** Rasteranzeige, Snap-to-Grid, Snap-to-Endpoint, Snap-to-Midpoint, Snap-to-Center, Snap-to-Intersection, Snap-to-Perpendicular, Snap-to-Tangent, Snap-to-Nearest, Snap-to-Quadrant, Ortho-Modus, Polar Tracking | Alle Snap-Typen sind einzeln aktivierbar/deaktivierbar und visuell unterscheidbar (verschiedene Marker-Symbole). Snap-Toleranz ≤ 5 Pixel bei aktuellem Zoom. F3 toggled Snap; Status-Bar zeigt aktive Snaps | | 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, Lasso-/Polygon-Auswahl (Freihand-Selektion durch Ziehen einer geschlossenen Linie), Selektion-Filter, Quick-Select (Eigenschafts-basierte Auswahl) | Alle Auswahlmethoden funktionieren und können kombiniert werden; Lasso-Auswahl wählt alle Elemente innerhalb der gezeichneten Region aus | | 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 konfigurierbarer Schrittzahl (Default: 100) | Mindestens 100 Undo-Schritte; Historie zeigt Aktion-Beschreibung und Zeitstempel; älteste Schritte werden rotiert wenn Speicherlimit erreicht | | 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 | | F-CAD-13 | **Autosave / Crash Recovery:** Zeichnung wird automatisch in konfigurierbaren Intervallen (Default: 60 Sekunden) gespeichert. Bei Browser-Neustart wird Wiederherstellung angeboten | Nach Crash/Tab-Schließen wird beim erneuten Öffnen die letzte Autosave-Version angeboten; Datenverlust max. 60 Sekunden | | F-CAD-13a | **Units Management:** Projekteinheit konfigurierbar (mm, cm, m, inches, feet). Bemaßungen, Maßstab und Import/Export verwenden konfigurierte Einheit. Einheiten-Konvertierung bei gemischten Einheiten in Import/Export | Projekteinheit ist in Settings konfigurierbar; Bemaßungen und Exporte verwenden konfigurierte Einheit; Import mit abweichender Einheit wird korrekt konvertiert | | F-CAD-14 | **Suche/Find:** Elemente können nach Eigenschaften gesucht werden (Layer, Block-Name, Farbe, Linientyp) | Suchergebnisse werden in Liste angezeigt; Klick auf Ergebnis zoomt zum Element und highlightet es | ### 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 | | F-LAY-07 | **Layer-State Import/Export:** Layer-Konfiguration (Name, Farbe, Linientyp, Sichtbarkeit) kann exportiert und in anderen Projekten importiert werden | Layer-State wird als JSON exportiert; Import in anderes Projekt erstellt/aktualisiert Layer entsprechend | ### 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 | | F-LIB-08 | **Bibliotheks-Paket-Import:** Batch-Import von SVG-Dateien als Block-Paket (ZIP-Import) | ZIP mit SVG-Dateien wird importiert; alle SVGs werden als Blöcke in einem Ordner gespeichert | ### 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 konfigurierter Maßeinheit 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) mit projekt-spezifischer Rollenzuweisung. Berechtigungs-Matrix: Planer = CRUD auf Zeichnungen/Layer/Blöcke innerhalb zugewiesener Projekte, kein Projekt-Delete; Betrachter = Read-Only + Kommentieren; Admin = volle Projekt-Verwaltung; Gast = Read-Only auf freigegebene Pläne mit zeitlichem Limit | Berechtigungen werden server-seitig enforced; Nutzer können pro Projekt unterschiedliche Rollen haben; Planer kann keine Projekte löschen; Gast-Zugang hat zeitliches Limit | | F-MU-05a | **Permission-Matrix dokumentiert:** Berechtigungs-Matrix ist als Referenzdokument hinterlegt und wird server-seitig enforced | Permission-Matrix-Dokument im Repo; Server verweigert unautorisierte Aktionen mit HTTP 403 | | F-MU-06 | **Offline-Unterstützung:** Offline-Änderungen werden synchronisiert, wenn Verbindung wiederhergestellt ist. Service Worker / PWA-Technologie; IndexedDB für lokales Caching; UI-Indikation des Offline-Status | Offline-Änderungen werden automatisch synchronisiert; UI zeigt Offline-Status klar an; keine Datenverluste | | F-MU-06a | **Offline-Konflikt-Behandlung:** Bei Reconnect nach längerer Offline-Phase werden CRDT-Merges visualisiert; Nutzer wird über zusammengeführte Änderungen informiert | Merge-Report wird angezeigt; Nutzer kann zusammengeführte Änderungen einsehen und ggf. korrigieren | | F-MU-07 | **Versionshistorie:** Änderungen werden protokolliert; Versionen können eingesehen und wiederhergestellt werden. (a) Automatische Versionen bei Save/Export, (b) Manuelle Versionen mit Label/Beschreibung, (c) Mindestens 50 Versionen pro Projekt, (d) Diff-View zeigt Änderungen zwischen zwei Versionen visuell, (e) Wiederherstellung erstellt neue Version (nicht-destruktiv), (f) Alte Versionen rotieren nach konfigurierbarem Limit | Historie zeigt Zeitstempel, Nutzer und Label; Diff-View verfügbar; Wiederherstellung ist nicht-destruktiv; min. 50 Versionen speicherbar | ### 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) sowie: Undo/Redo (Strg+Z/Y), Save (Strg+S), Select All (Strg+A), Delete (Entf), Copy (Strg+C), Paste (Strg+V), Zoom-to-Fit, Ortho Toggle (F8), Snap Toggle (F3), Layer-Dialog (LA) | Alle Shortcuts funktionieren und sind dokumentiert; vollständige Shortcut-Referenz in Dokumentation | | F-UI-04a | **Shortcut-Customization:** Nutzer kann Tastatur-Shortcuts anpassen und eigene definieren | Shortcut-Editor in Einstellungen; Custom-Shortcuts werden persistent gespeichert | | 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 | | F-UI-11 | **i18n-Readiness:** UI-Texte sind über i18n-Framework (z. B. i18next) organisiert – nicht hardcodiert. Initial nur Deutsch, aber Architektur unterstützt weitere Sprachen ohne Code-Changes | Alle UI-Texte werden über i18n-Framework geladen; Sprach-Wechsel ist durch Konfiguration möglich | ### 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 über eine OpenAI-kompatible API-URL und API-Key konfiguriert werden (base_url + api_key in Settings) | Admin kann API-URL und API-Key in Einstellungen eintragen; KI-Backend ist nach Konfiguration funktionsfähig | | F-AI-13 | **OpenAI-kompatibler Endpoint:** KI wird über einen OpenAI-kompatiblen API-Endpoint angebunden – funktioniert mit OpenAI, OpenRouter, Ollama (OpenAI-Compat-Modus), vLLM (OpenAI-Compat-Modus) etc. | KI funktioniert mit jedem OpenAI-kompatiblen Endpoint; kein lokales Modell-Deployment nötig; User bringt eigenen Endpoint mit | | 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 (OpenAI-kompatibler Endpoint) | Aspekt | Empfehlung | Begründung | |---|---|---| | **KI-Anbindung** | OpenAI-kompatibler API-Endpoint (user-provided) | User bringt eigenen Endpoint mit (OpenAI, OpenRouter, Ollama OpenAI-Compat, vLLM OpenAI-Compat, etc.); kein lokales Modell-Deployment nötig | | **Konfiguration** | base_url + api_key in Admin-Settings | Admin trägt API-URL und API-Key ein; KI ist nach Konfiguration sofort funktionsfähig | | **Function Calling** | LLM Function Calling / Tool Use Pattern | CAD-Operationen werden als Functions registriert; LLM ruft Functions auf; Ergebnisse zurück an LLM | | **KI-Transport** | Backend leitet KI-Anfragen an konfigurierten OpenAI-kompatiblen Endpoint weiter | Frontend sendet KI-Anfrage an CAD-Backend; Backend leitet an externen API-Endpoint weiter; LLM generiert Function Calls; Backend führt aus | | **CAD-Function-Registry** | Zentrales Verzeichnis aller CAD-Operationen als aufrufbare Functions | LLM kann nur registrierte Functions aufrufen; sicher; erweiterbar durch Plugins | | **Context Injection** | Aktueller CAD-Zustand (Zeichnung, Selektion, Layer, Zoom) wird als Context an LLM gesendet | LLM hat Kontext; kann kontextbezogene Antworten geben | | **Guardrails** | Safety-Layer für destruktive Operationen | Verhindert ungewolltes Löschen; erfordert Bestätigung | **Architektur-Pattern:** ``` User Input (Text/Sprache) → CAD-Backend leitet an OpenAI-kompatiblen API-Endpoint weiter → 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-Anbindung offen:** KI wird über einen OpenAI-kompatiblen API-Endpoint angebunden; kein proprietäres KI-Modell fest codiert | Jeder OpenAI-kompatible Endpoint funktioniert (OpenAI, OpenRouter, Ollama, vLLM); User wählt seinen eigenen Provider | ### 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 | | NF-SEC-06 | **GDPR-Compliance:** Nutzerdaten können auf Anfrage exportiert und gelöscht werden (Right to Access, Right to Erasure). Datenschutzerklärung erforderlich | Datenexport und -löschung funktionieren; Datenschutzerklärung ist hinterlegt | | NF-SEC-07 | **API Rate Limiting:** REST-API hat Rate Limiting (konfigurierbar, Default: 100 Requests/Minute pro Nutzer). Bei Überschreitung: HTTP 429 mit Retry-After Header | Rate Limiting ist aktiv; bei Überschreitung wird HTTP 429 mit Retry-After zurückgegeben | ### 4.6a Barrierefreiheit | ID | Anforderung | Akzeptanzkriterium | |---|---|---| | NF-A11Y-01 | **WCAG 2.1 AA:** WCAG 2.1 AA für alle UI-Elemente außer Canvas-Zeichenbereich; Command Line als barrierefreie Alternative zum Canvas | UI-Elemente (Menüs, Panels, Dialoge, Command Line) erfüllen WCAG 2.1 AA; Canvas hat eingeschränkte Barrierefreiheit mit Command Line als Alternative | ### 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-Anbindung:** KI wird über externen OpenAI-kompatiblen API-Endpoint angebunden – kein separater KI-Container nötig | KI-API-URL und API-Key werden über Umgebungsvariablen konfiguriert; keine lokale KI-Infrastruktur erforderlich | ### 4.8 Plattform & Browser-Kompatibilität | ID | Anforderung | Akzeptanzkriterium | |---|---|---| | NF-PLAT-01 | **Browser-Unterstützung:** Unterstützt werden die letzten 2 Major-Versionen von Chrome, Firefox, Edge und Safari | CI/CD-Browser-Tests via Playwright gegen definierte Browser-Matrix; alle Tests grün | | 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 | | NF-PLAT-04 | **PWA-Unterstützung:** Anwendung ist als PWA installierbar (manifest.json, service worker, install prompt) | Anwendung kann in Chrome/Edge/Brave/Safari installiert werden; funktioniert offline mit Service Worker | --- ## 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. **OpenAI-kompatibler KI-Endpoint:** KI wird über einen OpenAI-kompatiblen API-Endpoint angebunden (user-provided); kein lokales Modell-Deployment. User bringt eigenen Endpoint mit (OpenAI, OpenRouter, Ollama OpenAI-Compat, vLLM OpenAI-Compat, etc.). 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 / allgemeine Mengenermittlung** – keine BOQ/Bill of Quantities. Bestuhlungs-Zählung (Stühle pro Reihe/Block/Gesamt) ist Teil der Bestuhlungs-Tools und kein Non-Goal. 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. | | Q-15 | Soll das KI-Backend lokal oder remote laufen? | Remote (OpenAI-kompatibel) | ✅ **Entschieden:** KI wird remote über einen OpenAI-kompatiblen API-Endpoint angebunden. Kein lokales Modell-Deployment (kein Ollama, kein vLLM lokal). User bringt eigenen Endpoint mit. | | Q-16 | Welche KI-Modellgröße ist akzeptabel? | User-Sache | ✅ **Entschieden:** Modellgröße ist nicht unsere Concern – der User bringt seinen eigenen Endpoint mit. Wir binden nur einen OpenAI-kompatiblen API-Call ein. | --- ## 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)? | Entschieden: Mittel | UI-Elemente (nicht Canvas) müssen WCAG 2.1 AA erfüllen; siehe NF-A11Y-01 | | 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)? | Entschieden: Hoch | mm, cm, m, inches, feet werden unterstützt; siehe F-CAD-13a | | 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 | --- ## 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:** OpenAI-kompatibler API-Endpoint (user-provided) als KI-Anbindung. Function Calling Pattern mit zentraler CAD-Function-Registry. Context Injection für Kontext-Verständnis. Guardrails für Safety. Kein lokales Modell-Deployment – der User bringt seinen eigenen Endpoint mit (OpenAI, OpenRouter, Ollama OpenAI-Compat, vLLM OpenAI-Compat, etc.). **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-Anbindung** | OpenAI-kompatibler API-Endpoint (user-provided) – funktioniert mit OpenAI, OpenRouter, Ollama (OpenAI-Compat), vLLM (OpenAI-Compat) | User-provided | | **KI-Client** | OpenAI SDK (MIT) oder native fetch/axios | MIT | | **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 beim externen API-Provider kann mehrere Sekunden dauern | Streaming-Responses; Fortschrittsanzeige; Timeout-Handling;Fallback auf manuelle Bedienung | | KI-API-Verfügbarkeit | Externer KI-API-Endpoint kann nicht erreichbar sein (Netzwerk, Wartung, Rate-Limit) | Klare Fehlermeldungen; Retry-Logik; CAD bleibt ohne KI voll nutzbar | | 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 | | Datenverlust bei Browser-Crash | Browser-Absturz oder versehentliches Tab-Schließen kann ungespeicherte Arbeit verlieren | Autosave (Default 60s); IndexedDB-Persistenz; Crash-Recovery-Dialog beim Neustart | | Blockierende UI bei großem Datei-Import | DXF/DWG mit 50k+ Elementen kann UI einfrieren | WebWorker für asynchronen Import; Fortschrittsanzeige; Streaming-Parser | | Cross-Browser Rendering-Differenzen | Canvas 2D rendert leicht unterschiedlich in Chrome/Firefox/Safari (Anti-Aliasing, Linien-Kappen) | Visuelle Regression-Tests in Browser-Matrix; Rendering-Toleranz in Akzeptanzkriterien definieren | --- ## 11. Deployment-Erwartungen | Aspekt | Erwartung | |---|---| | **Containerisierung** | Docker (Dockerfile + docker-compose.yml) – CAD-Backend + Frontend (2 Container) | | **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-Anbindung** | OpenAI-kompatibler API-Endpoint (extern) – kein separater KI-Container; API-URL + API-Key über Umgebungsvariablen | | **WebSocket-Server** | Separater Container oder integriert; WebSocket-Proxy via Traefik | | **Persistenz** | Docker-Volume für Datenbank und Datei-Storage (Grundrisse, Bibliothek) | | **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 v4 erstellt:** Ja (2026-06-19) - **Entschiedene Fragen:** Q-01 (Open Source) ✅, Q-02 (E-Mail/Passwort) ✅, Q-03 (SQLite + API-first) ✅, Q-10 (Accessibility/WCAG 2.1 AA) ✅, Q-12 (Units: mm/cm/m/inches/feet) ✅, Q-15 (Remote/OpenAI-kompatibel) ✅, Q-16 (User-Sache) ✅ - **Testbare Anforderungen:** Ja – alle funktionalen und nicht-funktionalen Anforderungen haben konkrete Akzeptanzkriterien - **Akzeptanzkriterien konkret:** Ja - **Assumptions:** 18 dokumentiert (erweitert um OpenAI-kompatiblen KI-Endpoint) - **Non-Goals:** 17 dokumentiert (Non-Goal #11 präzisiert: Bestuhlungs-Zählung ist kein Non-Goal) - **Quality Review (v5):** 3 kritische + 8 major + 8 minor/suggestion Findings aus Quality Gate Review behoben – Autosave, Snap-System, Units, Lasso-Selection, Shortcuts, Browser-Compat, Offline/PWA, Versionshistorie, Accessibility, RBAC, GDPR, Rate Limiting, i18n, Suche/Find, Layer-State-Export, Bibliotheks-Paket-Import, 3 neue Risiken - **Offene Fragen:** 5 (0 hoch, 2 mittel, 3 niedrig priorisiert; Q-10 und Q-12 entschieden) - **AutoCAD Web Referenz:** Vollständige Feature-Analyse inkl. Limitierungen und Vergleich - **Open-Source-Stack:** Vollständiger Stack mit Lizenzen (KI-Anbindung: OpenAI-kompatibler Endpoint, user-provided) - **KI Copilot:** 15 detaillierte Anforderungen (F-AI-01 bis F-AI-15) mit Function Calling Pattern, Guardrails, OpenAI-kompatibler Endpoint - **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 (Q-12 Units entschieden); Architektur-Phase kann starten - KI-Copilot-Architektur: OpenAI-kompatibler API-Endpoint + Function Calling + CAD-Function-Registry - API-First-Design ist als Architektur-Vorgabe definiert - Deployment: 2 Docker-Container (CAD-Backend + Frontend); KI ist externer API-Call - Verbleibende offene Fragen (Q-04 bis Q-14) 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 (v4) 2. Freigabe für Architektur-Phase (Phase 2) 3. Delegation an Solution Architect mit Vorgaben: Open-Source-Stack, KI-Copilot (OpenAI-kompatibler Endpoint + Function Calling), API-First, Plugin-System, 2 Container