Files
web-cad/docs/requirements.md
T

508 lines
40 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 2026-06-19)
**Status:** Draft v2 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
**Referenz-UI:** AutoCAD Web (siehe Section 12 AutoCAD Web Feature-Referenz)
**Referenz-Architektur (Kollaboration):** Figma / Onshape (Cloud-native, Single Source of Truth)
---
## 2. Nutzer & Rollen
| Rolle | Beschreibung |
|---|---|
| **Planer** | Erstellt und bearbeitet Bestuhlungspläne, nutzt CAD-Grundfunktionen und Bestuhlungs-Tools |
| **Betrachter** | Kann Pläne ansehen, kommentieren, aber nicht bearbeiten (Read-Only-Zugriff) |
| **Admin** | Verwaltung von Projekten, Nutzern, Berechtigungen und Bibliothek |
| **Gast** | Temporärer Zugriff auf spezifische Pläne ohne Account (z. B. für Kundenfreigabe) |
---
## 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öcken 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 |
### 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 |
---
## 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 |
### 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 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 und Frameworks 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 |
### 4.5 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 |
### 4.6 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:** Persistente Datenhaltung für Projekte, Nutzer, Bibliothek | Datenbank-Schema definiert; Migration-Skripte vorhanden |
### 4.7 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 |
---
## 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).
---
## 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 KI-gestützten Funktionen** keine automatische Bestuhlungsvorschläge oder KI-Features in der ersten Version.
9. **Keine Multi-Tenant-Isolierung auf Organisationsebene** initiale Version ist Single-Tenant; Multi-Tenant später.
10. **Keine erweiterten Druck-Layouts** keine Plot-Styles, Linienstärken-Tabellen oder Print-Studio-Konfigurationen.
11. **Keine Video-/Audio-Kommunikation** keine integrierte Video- oder Audio-Calls zwischen Nutzern.
12. **Keine automatische Flächenberechnung / Mengenermittlung** in der ersten Version nicht enthalten.
13. **Kein OAuth2/OIDC/SSO** E-Mail/Passwort reicht; SSO kann später als Plugin nachgerüstet werden.
14. **Keine AutoCAD-Block-Editor-Äquivalenz** Block-Definitionen können bearbeitet werden, aber kein vollständiger Block-Editor wie in Desktop-AutoCAD.
15. **Keine CAD-Standards-Verwaltung** keine DWS-Dateien oder Standards-Checking wie in Desktop-AutoCAD.
16. **Keine 3D-Viewing** anders als AutoCAD Web (das DWG-3D-Viewing bietet), ist web-cad rein 2D.
---
## 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. |
---
## 8. Offene Fragen
| # | Frage | Priorität | Auswirkung bei Nicht-Beantwortung |
|---|---|---|---|
| Q-03 | Welche Datenbank soll verwendet werden (PostgreSQL, SQLite, MongoDB)? | Mittel | Persistenz-Design, Deployment |
| 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 |
---
## 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 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** | PostgreSQL (PostgreSQL License, ähnlich BSD) oder SQLite (Public Domain) | 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 |
| **Containerisierung** | Docker (Apache 2.0) | Open Source |
| **Deployment** | Coolify (AGPL-3.0) | Open Source |
### 9.4 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.
- **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 |
---
## 11. Deployment-Erwartungen
| Aspekt | Erwartung |
|---|---|
| **Containerisierung** | Docker (Dockerfile + docker-compose.yml) |
| **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** | PostgreSQL (empfohlen) oder SQLite (für kleinere Deployments) |
| **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 |
| **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 |
| **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 |
| **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)
---
## 13. Handoff
### Requirements Status
- **Draft v2 erstellt:** Ja (2026-06-19)
- **Hoch-priorisierte Fragen geklärt:** Q-01 (Open Source) ✅, Q-02 (E-Mail/Passwort) ✅
- **Testbare Anforderungen:** Ja alle funktionalen und nicht-funktionalen Anforderungen haben konkrete Akzeptanzkriterien
- **Akzeptanzkriterien konkret:** Ja
- **Annahmen explizit:** Ja (12 Annahmen dokumentiert)
- **Non-Goals dokumentiert:** Ja (16 Non-Goals, erweitert um AutoCAD-Web-Vergleich)
- **Offene Fragen:** 10 (davon 0 hoch, 5 mittel, 5 niedrig priorisiert)
- **AutoCAD Web Referenz:** Vollständige Feature-Analyse inkl. Limitierungen und Vergleich
- **Open-Source-Stack:** Vollständiger Open-Source-Technologie-Stack mit Lizenzen dokumentiert
- **Plugin/Erweiterbarkeit:** 8 explizite Anforderungen für universelle Erweiterbarkeit
### Ready for Architecture
- **Ja** die zwei hoch-priorisierten Fragen sind geklärt; Architektur-Phase kann starten
- Verbleibende offene Fragen (Q-03 bis Q-13) sind mittel/niedrig priorisiert und können während oder nach der Architektur-Phase geklärt werden
- Technologie-Empfehlungen (Canvas 2D + Yjs + Open-Source-Stack) stehen als Architektur-Vorgaben bereit
### Empfohlene nächste Schritte
1. User-Review der aktualisierten requirements.md (v2)
2. Optional: Beantwortung von Q-03 (Datenbank) und Q-13 (Lizenz: AGPL vs. MIT)
3. Freigabe für Architektur-Phase (Phase 2)
4. Delegation an Solution Architect mit Open-Source-Stack-Vorgaben