98 lines
5.4 KiB
Markdown
98 lines
5.4 KiB
Markdown
|
|
# Web-CAD Work Log
|
||
|
|
|
||
|
|
## 2026-06-28 — Session 1
|
||
|
|
|
||
|
|
### Erledigt:
|
||
|
|
1. **Echte Source gefunden**: `/data/web-cad-neu/frontend/` auf Server — echter TypeScript CAD-Editor (React 18, Vite, RibbonBar, KI, Layers, Tools)
|
||
|
|
2. **Source in Repo committed**: Commit `9edce19` — kompletter TS-Source, kein Viewer
|
||
|
|
3. **Backend/.dockerignore hinzugefügt**: Commit `c977678` → dann durch History-Reset in `9edce19` integriert
|
||
|
|
4. **Git-Historie bereinigt**: Orphan-Branch, Force-Push — alle alten Viewer-Commits vernichtet
|
||
|
|
5. **Server bereinigt**:
|
||
|
|
- `/tmp/web-cad-deploy/` gelöscht (JSX viewer)
|
||
|
|
- `/tmp/web-cad-*` Temp-Dateien gelöscht (7 Dateien)
|
||
|
|
- `/data/webspace/webcad/`, `web-cad-mockups-x7k2p9/`, `web-cad-neu/` gelöscht
|
||
|
|
- Altes Docker-Image `web-cad-frontend:latest` (d8fee173c5fe) gelöscht
|
||
|
|
- Alter Container `temp-extract` gelöscht
|
||
|
|
6. **Repo mit Server synchronisiert**: `backend/package-lock.json` angepasst, Commit `d08785d`
|
||
|
|
7. **Checksums verifiziert**: 119/119 Dateien SHA256-identisch (lokal ↔ Server)
|
||
|
|
8. **Backup erstellt**:
|
||
|
|
- Lokal: `/a0/usr/workdir/web-cad-backup-20260628-102017.tar.gz` (270K)
|
||
|
|
- Server: `/tmp/web-cad-neu-backup-20260628-102018.tar.gz` (268K)
|
||
|
|
9. **Deployment verifiziert**: Health OK, Frontend+Backend running, Browser zeigt echten CAD-Editor
|
||
|
|
|
||
|
|
### Gefundene Fehler (Frontend Tests):
|
||
|
|
- **6 Failures in `tests/Components.test.tsx`** (PropertiesPanel):
|
||
|
|
1. `should display default values` — erwartet `'0.000 m'`, bekommt `'0'` (Format-String fehlt)
|
||
|
|
2. `should display element coordinates` — erwartet `'10.000 m'`, bekommt `'10'`
|
||
|
|
3. `should display element dimensions` — erwartet `'100.00 m'`, bekommt `'100'`
|
||
|
|
4. `should call onUpdateProperty` — erwartet String `'999'`, bekommt Number `999` (Typ-Konflikt)
|
||
|
|
5-6. Weitere PropertiesPanel-Formatierungsfehler
|
||
|
|
- **337 Tests passed**, 6 failed
|
||
|
|
|
||
|
|
### Backups (vor Bug-Fixing erstellt):
|
||
|
|
- **Lokal**: `/a0/usr/workdir/web-cad-backup-20260628-102017.tar.gz` (270K, 161 Dateien — frontend + backend + configs)
|
||
|
|
- Server-Backup gelöscht (redundant, /tmp ist temporär)
|
||
|
|
- Forgejo Commit `d08785d` ist der letzte Stand vor Bug-Fixing
|
||
|
|
|
||
|
|
### Bug-Fixing Fortschritt:
|
||
|
|
|
||
|
|
#### Frontend Fixes:
|
||
|
|
1. **PropertiesPanel.tsx** — 6 Test-Fehler behoben:
|
||
|
|
- Position X/Y: `String(el.x)` → `formatPos(el.x)` = `'X.XXX m'` (3 Dezimalstellen + ' m')
|
||
|
|
- Breite/Tiefe: `String(el.width)` → `formatDim(el.width)` = `'X.XX m'` (2 Dezimalstellen + ' m')
|
||
|
|
- Default-Werte: `'0'` → `'0.000 m'` / `'0.50 m'`
|
||
|
|
- onChange: `parseFloat(e.target.value) || 0` → `e.target.value` (String statt Number)
|
||
|
|
- Neue Helper: `formatPos()`, `formatDim()`, `parseNum()`
|
||
|
|
2. **LayerPanel.tsx** — 2 Test-Fehler behoben:
|
||
|
|
- Add-Button: `className="add-layer-btn"` + `aria-label="Neue Ebene"` hinzugefügt
|
||
|
|
- Visibility-Toggle: `aria-label={layer.visible ? 'Verstecken' : 'Anzeigen'}` hinzugefügt
|
||
|
|
3. **RibbonBar.tsx** — SVG Property Warnings behoben:
|
||
|
|
- `stroke-width` → `strokeWidth`, `stroke-linecap` → `strokeLinecap`, `stroke-linejoin` → `strokeLinejoin`
|
||
|
|
4. **9 weitere Komponenten** — gleiche SVG Property Fixes:
|
||
|
|
- RightSidebar, PropertiesPanel, Topbar, MobileDrawers, CanvasArea, KICopilot, StatusBar, LeftSidebar, BlockLibrary
|
||
|
|
- exportService.ts
|
||
|
|
|
||
|
|
#### Backend Fixes:
|
||
|
|
- Noch ausstehend (1 StressTest Timing-Fehler: 507ms vs 500ms Threshold)
|
||
|
|
|
||
|
|
#### Test-Ergebnisse nach Fixes:
|
||
|
|
- Frontend: 343/343 passed ✅
|
||
|
|
- Frontend TypeScript: clean ✅
|
||
|
|
- Backend: 158/158 passed ✅
|
||
|
|
- Backend TypeScript: clean ✅
|
||
|
|
- Frontend Build: 337 modules, OK ✅
|
||
|
|
|
||
|
|
#### Weitere Code-Review Fixes:
|
||
|
|
5. **App.tsx line 617** — Copy-Funktion: `(e as any).selected` → `selectedElement ? [selectedElement] : []` (selected property existierte nicht auf CADElement)
|
||
|
|
6. **App.tsx lines 654-660** — Image-Insert: `type: 'image' as any` + `as any` → korrektes CADElement mit `type: 'image'`, `width: 200`, `height: 200`
|
||
|
|
7. **cad.types.ts** — `'image'` zu ElementType hinzugefügt
|
||
|
|
8. **SnapEngine.ts line 89** — `'grid' as SnapMode as any` → `'grid'` (double cast entfernt)
|
||
|
|
9. **RenderEngine.ts line 33** — SnapPoint type erweitert: `'grid' | 'perpendicular' | 'tangent' | 'quadrant' | 'none'` hinzugefügt
|
||
|
|
10. **RightSidebar.tsx line 51** — `(updated as any)[key] = value as number` → proper type-safe assignment mit String-Parsing
|
||
|
|
11. **RightSidebar.tsx** — rotation handling hinzugefügt (String → Number Parse)
|
||
|
|
12. **RibbonBar.tsx + 9 weitere Dateien** — SVG Properties: `stroke-width` → `strokeWidth` etc. (React camelCase)
|
||
|
|
|
||
|
|
### TODO:
|
||
|
|
- [ ] Backend Tests ausführen
|
||
|
|
- [ ] PropertiesPanel: Format-String für Werte (m, cm) fixen
|
||
|
|
- [ ] PropertiesPanel: onUpdateProperty Typ-Konsistenz (string vs number)
|
||
|
|
- [ ] Alle Frontend-Tests grün bekommen
|
||
|
|
- [ ] Backend-Tests prüfen und fixen
|
||
|
|
- [ ] Code-Review: jede Komponente, jeder Button, jede Funktion
|
||
|
|
- [ ] Gefundene Fehler fixen und testen
|
||
|
|
- [ ] Fixes committen und pushen
|
||
|
|
- [ ] Auf Server deployen und verifizieren
|
||
|
|
|
||
|
|
### Commits:
|
||
|
|
- `9edce19` — Web CAD complete TypeScript source (orphan, history reset)
|
||
|
|
- `d08785d` — Sync backend/package-lock.json with production server
|
||
|
|
|
||
|
|
### Wichtige Pfade:
|
||
|
|
- Lokales Repo: `/a0/usr/workdir/web-cad/`
|
||
|
|
- Server Source: `/data/web-cad-neu/` (frontend + backend)
|
||
|
|
- Server Git Clone: `/root/web-cad/`
|
||
|
|
- Forgejo: `https://forgejo.media-on.de/Leopoldadmin/web-cad.git`
|
||
|
|
- Coolify Service: `cnuavrh33goa3zs0upi6hgif`
|
||
|
|
- Live URL: `https://web-cad-neu.server.media-on.de`
|
||
|
|
- SSH: `ssh -i /a0/usr/workdir/.ssh/coolify-01-root root@46.225.91.159`
|