- {@html} der Trail-Beschreibung mit DOMPurify absichern
- fehlender Key in der Status-Schleife
Beides fiel beim Autofixer-Lauf in Task 8 auf und stand so im Plan.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Der Test "ignoriert Höhenschwankungen unter 3 m" nutzte 300->301->302->303
und erwartete 0 Höhenmeter. Das ist aber ein echter Anstieg von 3 m, nur fein
aufgezeichnet — bei einem langen gleichmäßigen Berganstieg hätte der Parser
die Höhenmeter systematisch verschluckt.
Jetzt zwei Tests, die die Fälle trennen: gleichmäßiger Anstieg in 1-m-Schritten
ergibt 3 hm, Schwanken um denselben Wert ergibt 0.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Die Alternative (bool active auf trail_versions) käme ohne Zirkelbezug aus,
verlagert die Wahrheit aber in N Datensätze: zwei Schreibvorgänge beim
Umschalten, ohne Transaktion kurzzeitig zwei aktive Versionen möglich.
trails.current ändert genau ein Feld und kennt keinen ungültigen Zustand.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Trail-Katalog pro Team: GPX hochladen, auf Karte anzeigen, verortete
Meldungen setzen, kommentieren. Neue Uploads legen Versionen an statt zu
überschreiben; Marker und Kommentare hängen am Trail und überleben damit
einen Track-Austausch.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Die SvelteKit-App liegt unter frontend/, das Backend unter backend/ als
eigenständige PocketBase-Instanz mit Dockerfile, docker-compose und
versioniertem Schema.
- PocketBase-URL über PUBLIC_PB_URL konfigurierbar, Default bleibt die
produktive Instanz https://api.stammtisch-hersbruck.de
- Schema als Snapshot-Migration der sechs fachlichen Collections
(users, teams, events, runs, riders, times), abgezogen von der
produktiven Instanz. Verifiziert: ein Erststart gegen leere pb_data
legt alle sechs an, Felder und API-Rules stimmen überein.
- pb_data und pb_migrations als Bind-Mounts, damit Daten persistieren und
im Admin-UI erzeugte Migrationen im Repo landen
- Veraltete Dokumentation entfernt: pocketbase_schema.json nannte
Collections (stages, results, organizers), die es nicht gibt
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>