fix tests and change invitation mechanics
Sonarqube Scanner / Prepare environment (push) Successful in 8s
Sonarqube Scanner / Build and test (push) Successful in 24s
Sonarqube Scanner / SonarQube analysis (push) Failing after 1m2s
Sonarqube Scanner / Deploy to Server (push) Successful in 6s

This commit is contained in:
Florian Zumpe
2026-10-19 17:21:50 +02:00
parent a66a795407
commit cacc63be66
13 changed files with 349 additions and 146 deletions
+32 -23
View File
@@ -1,18 +1,18 @@
# Gemeinsam bearbeiten
In „Strecken bearbeiten“ öffnet der kleine Button mit zwei gezeichneten Wichteln
zwischen Stift und
Löschen den gemeinsamen Entwurf und zeigt anschließend den echten Code mit
fünf Wichteln in einem großen Popup an. Eine vorgeschaltete Zwei-Wichtel-Vorschau
gibt es nicht mehr. Das Original bleibt unverändert. Bei lokalen Entwürfen
fragt die App vorher, ob Weg, Stationen, Bilder und Ton übertragen werden dürfen.
Ein bereits eingesandter eigener Entwurf wird dabei zuerst aktualisiert.
zwischen Stift und Löschen zuerst ein großes Popup zur Codeauswahl. Die fünf
Drehräder sind zufällig vorbelegt. Du kannst jeden Wichtel ändern; Wiederholungen
sind erlaubt. Erst „Diesen Code verwenden“ bestätigt deine Auswahl. Abbrechen
legt keine Gruppe an und überträgt keine Strecke. Bei lokalen Entwürfen fragt
die App danach, ob Weg, Stationen, Bilder und Ton übertragen werden dürfen.
Ein bereits eingesandter eigener Entwurf wird zuerst aktualisiert. Anschließend
zeigt ein eigenes Popup den gespeicherten Code. Die Bearbeitung beginnt erst
mit „Entwurf bearbeiten“. Das Original bleibt unverändert.
Danach zeigt die App fünf Wichtel als Gruppencode. Andere öffnen in der
Streckenverwaltung „Gruppencode eingeben“. Ein eigenes breites Popup bietet
Platz für alle fünf Drehräder. Dort schieben sie die Bilder in den fünf
Drehrädern nach oben oder unten. Es zählen die Wichtel in der Mitte, von links
nach rechts. Wiederholungen sind erlaubt. Pfeiltasten und die Pfeilschaltflächen
Andere öffnen in der Streckenverwaltung „Gruppencode eingeben“. Dort schieben
sie die Bilder in fünf Drehrädern nach oben oder unten. Es zählen die Wichtel
in der Mitte, von links nach rechts. Pfeiltasten und Pfeilschaltflächen
funktionieren ebenfalls. „Mitmachen“ öffnet den gemeinsamen Entwurf.
## Arbeiten und Einladungen
@@ -25,12 +25,19 @@ funktionieren ebenfalls. „Mitmachen“ öffnet den gemeinsamen Entwurf.
- Wenn jemand zwischenzeitlich gespeichert hat, weist die App den veralteten
Speicherversuch zurück. Die Eingaben bleiben stehen und können vor dem Laden
des neuen Stands gesichert werden. Es gibt noch keine automatische Zusammenführung.
- Der Einladungscode gilt 30 Minuten. Anschließend erzeugt die Website automatisch
einen neuen Code, sobald keine Station mehr gesperrt ist. Ein abgelaufener Code
erlaubt auch während einer Bearbeitung keinen neuen Beitritt. Bereits beigetretene
Personen behalten ihren Zugang. Das geöffnete Codefenster prüft alle 30 Sekunden
auf einen neuen Code. Die eröffnende Person kann mit „Neuen Code anzeigen“ auch
früher wechseln; während einer Stationsbearbeitung wartet auch dieser Wechsel.
- Der Einladungscode gilt 60 Minuten. Erfolgreiches Mitmachen, Öffnen zur
Bearbeitung, Übernehmen einer Station, gemeldete tatsächliche Bearbeitungsaktivität
und erfolgreiches Speichern setzen die Frist erneut auf 60 Minuten.
Listen, Codeanzeige, reine Datenabrufe und Sperrstatusabfragen verlängern sie nicht.
- Das Code-Popup zeigt Ablaufzeit und verbleibende Minuten und Sekunden. Die
Restzeit zählt herunter; neue Aktivität wird spätestens nach 30 Sekunden übernommen.
- Der Code wird niemals automatisch geändert oder neu erzeugt. Nach Ablauf
erlaubt er keinen neuen Beitritt. Bereits beigetretene Personen behalten ihren
Zugang und können durch erneute Bearbeitung die Gültigkeit desselben Codes verlängern.
- „Gruppencode“ zeigt den gespeicherten Code erneut an. „Code auswählen“ öffnet
die Auswahl; nur eine ausdrückliche Bestätigung ändert oder reaktiviert den Code.
Während einer Stationsbearbeitung wartet ein Codewechsel, bis die Stationen frei sind.
Bereits verwendete Codes anderer Gruppen werden mit einem Hinweis abgewiesen.
- „Gruppe schließen“ entfernt den Zugang der anderen Personen und den Code.
Die eröffnende Person behält ihren Entwurf und kann wieder einen Code erzeugen.
- Es sind höchstens 50 Zugänge je Gruppe und zwölf gleichzeitig offene Gruppen
@@ -74,7 +81,8 @@ npm run test:runtime-db
systemctl --user restart wegwichtel.service
```
`init-db` legt die drei neuen STRICT-Tabellen an. Es verändert keine bestehenden
`init-db` legt fehlende STRICT-Tabellen an, einschließlich `collaboration_invitations`
für die dauerhaft gespeicherten Codes. Es verändert keine bestehenden
Streckentabellen und löscht keine Strecken. Eine Neuerzeugung oder das Löschen
der vorhandenen Datenbank ist hierfür nicht erforderlich.
@@ -154,8 +162,9 @@ zur vorhandenen Anzeige des belegten Gerätespeichers. Browserdaten-Löschung ka
sie entfernen. Sie enthalten nur die betroffene Station und neu ausgewählte
Dateien; vorhandene Aufnahmen werden hierfür nicht gesammelt heruntergeladen.
Einladungen werden dauerhaft weiterhin nur als Hash gespeichert. Den neu erzeugten
Klartext hält der App-Prozess im Arbeitsspeicher für die berechtigte Anzeige vor.
Nach einem App-Neustart bleibt der zuletzt gültige Code weiterhin bis zu seinem
Ablauf verwendbar. Falls er auf dem Gerät nicht mehr angezeigt wird, kann die
eröffnende Person bei freien Stationen einen neuen Code anfordern.
Die ausgewählten Codes liegen in `collaboration_invitations`, der zugehörige
SHA-256-Abdruck und Ablaufzeitpunkt in `collaboration_groups`. Nur die berechtigte
eröffnende Sitzung kann den Code abrufen. Nach einem App-Neustart wird derselbe
Code wieder angezeigt; es findet kein automatischer Ersatz statt. Bestehende
Gruppen aus der vorherigen Version enthalten noch keinen gespeicherten Klartext.
Für sie muss die eröffnende Person einmal ausdrücklich einen Code auswählen.