feat(robustheit): optimistische Nebenläufigkeit (featuresVersion + Konflikt-Erkennung)
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 28m41s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 28m41s
Verhindert stilles Überschreiben neuerer Änderungen durch veralteten Stand (z.B. nach Offline-Reconnect oder Lock-Ablauf bei Multi-Device). - Project.featuresVersion (Schema + Auto-Migration), pro Features-Speichern +1 - Features-PUT: optimistischer Lock in interaktiver Transaktion (updateMany WHERE featuresVersion=baseVersion -> atomar; count=0 => 409 Konflikt) - Bei Konflikt liefert der Server den aktuellen Stand zurück (409 + features + version) - Client sendet baseVersion (Auto-Save, manuell, Beacon, Offline-Queue), übernimmt bei 409 den Server-Stand und warnt den Nutzer (statt still zu überschreiben) - Offline-Queue verwirft konfligierende 4xx (kein Clobber beim Reconnect) - Transaktions-Timeout 15s für grosse Zeichnungen auf langsamer DB Version 1.4.11 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -58,8 +58,10 @@ Legende Aufwand: 🟢 klein · 🟡 mittel · 🔴 gross
|
||||
- [x] localStorage-Features pro Projekt (`lageplan-features-<id>`) statt globalem Key
|
||||
- [x] Sync-Queue verwirft dauerhafte 4xx-Fehler (kein Endlos-Retry/verstopfte Queue)
|
||||
- [x] `beforeunload` persistiert auch leere Listen (gelöschte Elemente gehen nicht verloren)
|
||||
- Offen (🟡 5): Multi-Device-Versionierung — Editor-Lock ist pro Session, nicht pro User;
|
||||
Last-Writer-Wins ohne `updatedAt`-Check. Eigener grösserer Schritt.
|
||||
- [x] **5: Optimistische Nebenläufigkeit** — `Project.featuresVersion` + Versions-Check
|
||||
beim Speichern. Ein veralteter (z.B. offline) Stand überschreibt neuere Änderungen nicht
|
||||
mehr still, sondern erzeugt 409 → Client übernimmt Server-Stand + Warnung. Offline-Queue
|
||||
verwirft konfliktierende 4xx. (Merge pro Element / echtes Co-Drawing weiterhin offen.)
|
||||
|
||||
## Zusatz – Leitungsrechner professionalisiert ✅
|
||||
|
||||
|
||||
Reference in New Issue
Block a user