1.5 KiB
Offline- und Konfliktkonzept
Cache
Room speichert die zuletzt erfolgreichen JSON-Antworten für Planlisten, normalisierte Trackerpläne, Editorentwürfe und Analysen. Der Cache ist lesbar, wenn das Netzwerk fehlt; er ist kein eigenständiger Serverdatenbestand.
Ausstehende Mutationen
Sessionänderungen werden als vollständiger Session-Patch mit expected_revision gespeichert. Bei Transportfehlern wird exakt der gesendete JSON-Patch in einer FIFO-Queue abgelegt. WorkManager synchronisiert nur bei Netzwerkverbindung und in Erstellungsreihenfolge.
Revisionskonflikt
HTTP 409 mit code = revision_conflict stoppt die Queue am konfliktbehafteten Eintrag. Der Eintrag bleibt erhalten und wird als Konflikt markiert. Die UI zeigt lokalen Patch und aktuelle Serverrevision. Es gibt kein automatisches Rebase und kein blindes Überschreiben.
Sichere Aktionen:
- Serverstand neu laden und lokale Änderung manuell erneut anwenden.
- Konflikt-Patch nach bewusster Benutzerentscheidung verwerfen.
- Keine automatische Änderung der
expected_revision.
Analysejobs
Ein laufender Job wird vom Server in state.json gespeichert. Die App verlässt sich nicht auf flüchtigen UI-Zustand, sondern liest nach Neustart analysis_state erneut. Solange status == running, bleibt der Startbutton deaktiviert und der Statusendpunkt wird gepollt.
Serveränderungen
Die App schreibt nie direkt in Plan-, Session-, Analyse- oder Vorschlagsdateien. Sämtliche Mutationen laufen über die vorhandenen HTTP-Endpunkte.