Multiple improvements
Sonarqube Scanner / Prepare environment (push) Successful in 10s
Sonarqube Scanner / Build and test (push) Successful in 28s
Sonarqube Scanner / SonarQube analysis (push) Successful in 1m8s
Sonarqube Scanner / Deploy to Server (push) Successful in 8s

This commit is contained in:
2026-10-05 01:18:14 +02:00
parent 2b07e9bc47
commit 49a9de0355
27 changed files with 797 additions and 80 deletions
+7 -2
View File
@@ -46,12 +46,17 @@ Die notwendigen Arbeiten stehen in
Vor verbindlicher Verwendung sind insbesondere diese Platzhalter zu ersetzen:
- vollständiger Name und Anschrift des tatsächlichen Betreibers als Lizenznehmer;
- Kontakt für Rechtefragen, Widerruf und Entfernung;
- Rechtsgrundlagen, Empfänger, Hostinganbieter sowie Lösch- und Sicherungsfristen.
Kontakt für Wegwichtel, Rechtefragen, Datenschutzanfragen, Widerruf und Entfernung:
[info@wegwichtel.de](mailto:info@wegwichtel.de). Die Adresse ist eingerichtet
und ersetzt die bisherigen Kontaktplatzhalter. Die Kontaktdaten der Schule
und der Datenschutzstellen bleiben als Kontakte dieser Stellen erhalten.
Außerdem müssen die Texte und das Zustimmungsverfahren zum tatsächlichen
Betriebsmodell der Schule passen und rechtlich geprüft werden. Die bereits
vorhandenen Kontaktangaben im Impressum wurden nicht verändert. Die frühere
vorhandenen Schul- und Behördenkontakte im Impressum wurden nicht verändert;
die Kontaktadresse für Wegwichtel und die technische Verantwortung wurde ergänzt. Die frühere
pauschale Rechtezuordnung zur Schule wurde durch die Trennung von Urheberschaft
und Nutzungsrechten ersetzt.
+2 -1
View File
@@ -76,5 +76,6 @@ stehen in [TODO-MODERATION.md](agents/TODO-MODERATION.md) weiterhin aus.
Die GPS-Aufzeichnung läuft nur innerhalb einer Bearbeitungssitzung. Schließen,
Abbrechen, Rückkehr zur Liste, Streckenwechsel und Verlassen der Seite beenden
sie; ein Neustart übernimmt keinen aktiven Aufzeichnungszustand. Beim erneuten
Öffnen eines lokalen Entwurfs beginnt eine neue Sitzung. Einzelheiten stehen in
Öffnen eines lokalen Entwurfs beginnt eine neue Sitzung mit ausgeschalteter
Aufnahme. Der Schalter „Meinen Weg aufnehmen“ aktiviert sie. Einzelheiten stehen in
[GPX-Aufzeichnung.md](agents/GPX-Aufzeichnung.md).
+37
View File
@@ -0,0 +1,37 @@
# Entwürfe ohne Internet bearbeiten
„Meine Entwürfe“ erscheint sofort beim Öffnen der Streckenbearbeitung. Erst danach
werden veröffentlichte Strecken geladen. Du kannst deine Entwürfe auch bearbeiten,
wenn der Server nicht erreichbar ist. Lade die App zuvor auf dein Gerät.
## Den Weg aufnehmen
Schalte „Meinen Weg aufnehmen“ beim Bearbeiten eines Entwurfs ein. Dein Standort
wird sofort und danach alle zwei Minuten auf diesem Gerät gespeichert. Speichere
einen neuen Entwurf zuerst. Beim Verlassen der Bearbeitung endet die Aufnahme.
Beim nächsten Öffnen ist sie wieder aus. Du kannst die Aufnahme auch pausieren.
Erlaube der App den Zugriff auf deinen Standort. Das funktioniert auch ohne Internet,
wenn dein Gerät seinen Standort bestimmen kann. Ohne Standort bleibt ein leerer
Eintrag, den du später ergänzen kannst. Bei gesperrtem Bildschirm oder im Hintergrund
kann der Internetbrowser die Aufnahme verzögern.
## Einen Ort ergänzen
Unter „Orte auf dem Weg ergänzen“ setzt das Zielkreuz deinen aktuellen Standort
in die beiden Felder des gewählten Punktes ein. Speichere danach deine Änderungen.
Die Aufnahme wird dadurch nicht eingeschaltet.
## Bilder und Tonaufnahmen
Beim Öffnen oder Speichern einer Strecke werden die Bilder und Tonaufnahmen
nicht alle geladen. Erst wenn du eine Station ansiehst oder bearbeitest,
werden deren Dateien geöffnet. Auch beim Senden zur Prüfung werden die
benötigten Dateien gelesen.
## Den Weg zur Prüfung senden
Beim Senden werden die aufgenommenen Orte und die Stationen mit bekanntem
Standort zu einem gemeinsamen Weg verbunden. Auch ohne Aufnahme können die
Stationen einen Weg bilden. Fehlende Orte kannst du später ergänzen.
Die Verbindung zeigt nicht automatisch den Verlauf von Straßen oder Wanderwegen.
+2 -1
View File
@@ -7,7 +7,8 @@ Die in der Anwendung enthaltenen Texte sind Vorlagen und ersetzen keine Prüfung
- vollständiger Name und Rechtsform der Betreiberin
- vertretungsberechtigte Person
- ladungsfähige Anschrift
- E-Mail-Adresse und weiterer unmittelbarer Kontaktweg
- eingerichtete Kontaktadresse für Wegwichtel: info@wegwichtel.de
- weiterer unmittelbarer Kontaktweg
- inhaltlich verantwortliche Person
- gegebenenfalls Aufsichtsbehörde, Register und steuerliche Pflichtangaben
+1 -1
View File
@@ -10,7 +10,7 @@ Alle folgenden Befehle werden im Projektverzeichnis ausgeführt.
## Architektur
Die Trennung von Stationen und Weg, die Aufzeichnung alle 30 Sekunden und das
Die Trennung von Stationen und Weg, die zuschaltbare Aufzeichnung alle zwei Minuten und das
nachträgliche Ergänzen fehlender Koordinaten sind in
[`GPX-Aufzeichnung.md`](agents/GPX-Aufzeichnung.md) beschrieben.
+32
View File
@@ -51,6 +51,13 @@ Die App richtet sich an Grundschulkinder und Menschen ohne technische Vorkenntni
und Code-Kommentare. Code-Bezeichner, Dateiformate und Schnittstellen bleiben fachlich präzise.
- Prüfe neue Texte und angepasste Text-Erwartungen in den vorhandenen Tests.
## Kontaktadresse
Die eingerichtete Kontaktadresse für Wegwichtel ist `info@wegwichtel.de`.
Sie gilt für App-Kontakt, technische Fragen, Rechtefragen, Datenschutzanfragen,
Widerruf und Entfernung von Aufnahmen. In Rechtstexten statisch einsetzen.
Schul- und Behördenadressen bleiben die Kontakte der jeweiligen Stellen.
## Texte und Übersetzungen
- Alle eigenen Bedienungstexte liegen zentral in der Klasse `WegwichtelTexts`
@@ -83,3 +90,28 @@ Die App richtet sich an Grundschulkinder und Menschen ohne technische Vorkenntni
- Deutsch und Englisch enthalten dieselben Schlüssel, Platzhalter und Pluralformen.
Texte in beiden Sprachen einfach und sinngemäß schreiben. Sprachwechsel aktualisieren feste Beschriftungen;
bereits erzeugte dynamische Ansichten bei Bedarf neu rendern.
## Ausrichtung von Bedienelementen
Button-Gruppen in Strecken- und Stationslisten am rechten Kartenrand ausrichten.
Icon-Buttons bekommen einheitliche Breiten, Höhen und Abstände, auch wenn sie
inaktiv sind. Titel dürfen umbrechen und verändern die Button-Spalten nicht.
Die Bedienflächen bleiben mindestens 44 × 44 Pixel groß.
## Lokale Bilder und Tonaufnahmen erst bei Bedarf laden
Beim Öffnen oder Speichern einer Strecke und beim Umordnen von Stationen
nur Metadaten lesen. Keine Dateien aller Stationen hydratisieren.
Dateireferenzen bzw. IndexedDB-Dateien erst beim Bearbeiten oder Aufrufen
der jeweiligen Station lesen. Der Upload liest die benötigten Dateien direkt.
Temporäre Blob-URLs beim Verlassen der Ansicht freigeben; verspätete
Ladeergebnisse dürfen eine andere Station oder geschlossene Ansicht nicht ändern.
## Stationsorte in der Routenberechnung
Beim Hochladen und erneuten Berechnen sowohl aufgezeichnete Wegpositionen als
auch `wpt` mit gültigen Koordinaten berücksichtigen. Stationsanker dürfen nicht
durch die GPS-Clusterbildung wegfallen. Nur gültige Koordinaten einbeziehen;
Stationen ohne Standort bleiben bearbeitbar. Berechnete Stationsanker im GPX
kennzeichnen und bei Verschieben/Löschen ersetzen, statt veraltete Orte zu behalten.
Rätsel-Stationen sind für später in `docs/agents/TODO-RAETSEL-STATIONEN.md` vorgemerkt.
+28 -8
View File
@@ -3,12 +3,12 @@
## Stationen und Weg getrennt speichern
- Stationen mit Koordinaten stehen als `wpt` unmittelbar unter `gpx`.
- Beim ersten Speichern eines neuen Entwurfs startet während der Bearbeitung eine Aufzeichnung:
sofort eine Position, danach alle 30 Sekunden eine neue GPS-Abfrage.
- Der Schalter „Meinen Weg aufnehmen“ ist beim Start und beim Öffnen eines
Entwurfs aus. Einschalten fragt sofort den Standort ab, danach alle zwei Minuten.
Bei noch nicht gespeicherten Entwürfen beginnt die Aufnahme nach dem ersten Speichern.
Schließen, Abbrechen, Rückkehr zur Streckenliste oder Wechsel der Strecke
beendet die Aufzeichnung. Nach einem Neustart ist sie inaktiv. Beim erneuten
Öffnen eines lokalen Entwurfs zur Bearbeitung beginnt eine neue Sitzung.
Speichern innerhalb derselben Sitzung hebt Pause oder bewusstes Stoppen nicht auf.
beendet die Aufzeichnung und schaltet sie aus. Speichern innerhalb derselben
Sitzung hebt Pause oder bewusstes Stoppen nicht auf.
- Die sichtbaren Schaltflächen erlauben Pausieren, Fortsetzen und Beenden.
Beim Löschen des Entwurfs endet die Aufzeichnung ebenfalls.
- Tatsächliche Positionen stehen als `trk/trkseg/trkpt` mit Zeitstempel und,
@@ -28,6 +28,9 @@ Positionen. Speicherfehler pausieren die Aufzeichnung und zeigen einen Hinweis.
Entwürfe und Stationen dürfen ohne GPS erstellt und gespeichert werden.
In der Streckenbearbeitung können unter „Orte auf dem Weg ergänzen“ fehlende
Positionen ergänzt, vorhandene geändert und weitere hinzugefügt werden.
Das Zielkreuz an jedem Wegpunkt fragt frische GPS-Koordinaten ab und füllt nur
dessen Felder. Es startet keine Aufnahme; die Änderung muss gespeichert werden.
Verspätete Antworten nach dem Wechseln oder Schließen werden verworfen.
Breiten- und Längengrad müssen gemeinsam angegeben werden oder beide leer bleiben.
Stationen haben eigene Felder unter „Ort ergänzen“.
@@ -56,18 +59,34 @@ Coverage-Lauf geprüft.
## Normalisierung auf dem Server
Beim Einreichen oder Ersetzen einer GPX-Datei normalisiert der Node-Dienst den
aufgezeichneten Weg zu `rte/rtept`. Bereits vorhandene Routenpunkte haben Vorrang.
aufgezeichneten Weg und gültige Stations-Wegpunkte zu `rte/rtept`. Bereits
vorhandene Routenpunkte bilden anstelle von Trackpunkten den Grundverlauf.
Aufeinanderfolgende Trackpunkte innerhalb des eingestellten Abstands werden
zusammengefasst. Der erste Punkt bleibt der Vertreter; der nächste wird erst
übernommen, wenn er weiter entfernt liegt. So werden kleine Schwankungen
während einer Pause nicht fortlaufend zur Weglänge addiert.
Nach dem Vereinfachen des Tracks werden alle gültigen `wpt` ergänzt. Sie werden
nicht durch den Clusterabstand entfernt. Ihre Reihenfolge in der Datei bleibt
erhalten; der Einfügeort im verbleibenden Weg wird anhand der kleinsten
zusätzlichen Weglänge gewählt. Übereinstimmende Orte werden zusammengeführt.
Eine Strecke mit nur Stationen erhält einen Weg in Stationsreihenfolge.
Weglänge, Routenpunktzahl und Suchgrenzen beziehen sich auf den gemeinsamen Weg.
Aus Stationen ergänzte Routenpunkte tragen in ihren GPX-Erweiterungen die
Kennung `wegwichtel:waypointRoutePoint`. Dadurch lassen sich bei erneuter
Normalisierung bzw. Verschieben/Löschen einer Station alte ergänzte Anker
entfernen und anhand der aktuellen `wpt` neu berechnen. Ursprüngliche Wegpunkte
im aufgezeichneten Verlauf bleiben erhalten. Beim Anhängen einer anderen Strecke
wird deren berechneter Weg als zusätzlicher Verlauf übernommen. Wiederholte
Normalisierung darf keine zusätzlichen Stationsanker erzeugen.
`GPX_CLUSTER_METERS` in `.env` steuert den Abstand, standardmäßig 20 Meter.
Das Verfahren ist eine geometrische Vereinfachung ohne externen Routingdienst.
Es berechnet keine Wege auf einer Straßenkarte. GPS-Lücken werden bei der
Routenberechnung übersprungen; zwischen gültigen Nachbarpunkten entsteht eine
direkte Verbindung. Die Lücken bleiben für spätere Bearbeitung als Erweiterungen
erhalten. Gibt es keine gültigen Wegpositionen, bleiben Weglänge und Punktzahl
erhalten. Gibt es weder gültige Wegpositionen noch Stationen mit Koordinaten, bleiben Weglänge und Punktzahl
bei 0 Metern und 0 Punkten; Stationen bleiben trotzdem gespeichert.
Die gespeicherte Serverdatei enthält den normalisierten Weg. Änderungen an
@@ -82,7 +101,8 @@ Zwei Pfeile zeigen gleichzeitig die Richtung:
- zum nächsten Routenpunkt, ohne Entfernungsangabe;
- zur nächsten noch offenen Station mit Koordinaten, mit Metern.
Bei einer Strecke mit ausschließlich Stationen fehlt nur die Wegführung.
Bei einem lokalen Entwurf mit ausschließlich Stationen fehlt vor dem Hochladen
die Wegführung. Nach dem Hochladen verbindet der berechnete Weg die Stationen.
Stationen ohne Koordinaten lösen keine Standort-Erkennung aus. Während einer
Pause werden die Pfeile verborgen.
+5 -1
View File
@@ -4,9 +4,13 @@ Ausgangspunkt: [Recherche und umgesetzte Hinweise](../Bilder-und-Ton-Nutzungsrec
Die statischen Rechtstexte und X-Copyright sind eingebunden; ein belegbares
Zustimmungs- und Namensnennungssystem ist noch nicht umgesetzt.
Kontakt für Wegwichtel, Rechtefragen, Datenschutzanfragen, Widerruf und Entfernung:
`info@wegwichtel.de` (vom Betreiber eingerichtet). Diesen Kontakt nicht erneut
als offenen Platzhalter führen.
## Vor verbindlicher Verwendung und Freigabe zu erledigen
1. Den tatsächlichen Lizenznehmer, Rechtekontakt, Rechtsgrundlagen und Fristen
1. Den tatsächlichen Lizenznehmer, Rechtsgrundlagen und Fristen
ergänzen. Den Entwurf und die Zustimmung für Kinder rechtlich prüfen lassen.
2. Die relevante Vereinbarung vor dem Einsenden zugänglich machen und eine
nicht vorausgewählte, ausdrückliche Zustimmung einholen. Eine bloße
+36
View File
@@ -0,0 +1,36 @@
# TODO: Rätsel-Stationen
Vom Nutzer am 04.10.2026 vorgemerkt. Noch nicht implementieren.
## Gewünschtes Verhalten
- Eine Station kann als Rätsel-Station markiert werden und online gespeichert sein.
- Zunächst Beschreibung mit einem Rätseltext bzw. Hinweis zum Ermitteln der
Koordinaten anzeigen. Dafür ein eigenes Beschreibungsfeld vorsehen.
- Statt der echten Position zunächst Eingabefelder für Breitengrad und Längengrad
anbieten. Bedienungstexte einfach halten und aus DE-/EN-Katalogen beziehen.
- Eingegebene Koordinaten serverseitig mit dem Ziel vergleichen. Liegen sie nahe
genug, die Station freischalten und erst dann die echte Position abrufbar machen.
- Nach der Freischaltung Station wie eine normale Station anzeigen und verwenden.
## Lösungsansätze und offene Entscheidungen
- Rätselart, Hinweistext und akzeptierten Abstand in Metern im Stationsmodell
vorsehen; geeigneten Standardabstand und Wahlmöglichkeit später festlegen.
- Distanz auf dem Server berechnen. Die Prüfung ausschließlich im Client würde
die echte Position vorzeitig offenlegen. Wertebereiche validieren und falsche
Eingaben mit verständlichem Hinweis beantworten.
- Freischaltung an eine Bearbeitungs-/Spielgruppe, Sitzung oder Gerätekennung
binden. Die vorhandene creator_id ist allein keine sichere Authentifizierung.
Entscheiden, ob die Freischaltung gespeichert wird und Gruppen sie teilen.
- Echte Position vorher aus öffentlichen Stationsantworten, GPX-Wegpunkten,
Routenpunkten, Richtungspfeilen und Offline-Paketen heraushalten. Auch Suchgrenzen,
Medienmetadaten und geordnete Wegverläufe können die Lösung verraten. Diese
Auswirkungen auf die neue gemeinsame Routenberechnung ausdrücklich evaluieren.
- Für den späteren Koordinatenabruf eine überprüfbare Freigabe verwenden;
wiederholte Versuche angemessen begrenzen. Kein bloßes UI-Verstecken.
- Offline-Verhalten festlegen: serverseitige Prüfung braucht eine Verbindung;
eine vollständig offline prüfbare Lösung hat andere Schutzgrenzen.
- Tests für Treffer innerhalb des erlaubten Abstands, Grenzfälle, falsche und
ungültige Eingaben, Geräte-/Gruppenwechsel sowie verfrühten Koordinatenzugriff
und Datenlecks in GPX/Offline-Paketen vorsehen.