2026 10 07 sev gemeinsamer restweg - shedowe19/routely GitHub Wiki
07.10.2026 — Akzeptiert.
Der erneute Nutzerbericht zeigt gültige Ersatzhalte und GPS-Haltfortschritt, aber die Diagnose AMBIGUOUS_ROUTE. Die vorhandene öffentliche OSRM-Fixture Mülheim → Essen enthält zwei Anfahrtswege mit rund 884 Metern Längenunterschied und identischem späterem Restweg. Auf öffentlichen Punkten dieses Restwegs unterscheiden sich die planbasierten ETA-Werte bei 23 Minuten Abschnittsfahrzeit nur um rund 38 Sekunden. Der bisherige Vergleich absoluter Chainage blockiert die Prognose trotzdem dauerhaft, wenn nach dem Zusammenlaufen noch kein früherer Weg gebunden war.
app/src/main/kotlin/de/traewelling/app/service/GpsJourneyTimeEstimator.ktapp/src/main/kotlin/de/traewelling/app/service/TrackingRouteGeometry.ktapp/src/test/kotlin/de/traewelling/app/service/GpsRoadConsensusTest.ktapp/src/test/kotlin/de/traewelling/app/service/TrackingRouteGeometryRemainingPathTest.ktapp/src/test/resources/routing/muelheim-essen-osrm.json
- Neben dem allgemeinen Korridor bestimmt der beste Querabstand eine relative Plausibilitätsgrenze von
max(10 m, 2 × Genauigkeit). Ein früher gebundener Weg muss diese Grenze ebenfalls weiter erfüllen; sonst verfallen Bindung und Prognose und der neue Kandidat benötigt eigene Bewegung. Mehrdeutigkeit innerhalb irgendeines verfügbaren Kandidaten verwirft die Prognose bereits vor der Prüfung einer früheren Bindung. - Der bisherige Fortschrittsvergleich bleibt erhalten. Bei unterschiedlichem vergangenem Fortschritt ist eine Ausnahme nur auf demselben geordneten Restlinienzug zulässig. Alle Kandidatenpaare werden ab ihrer tatsächlichen Projektion an der Vereinigung sämtlicher verbleibender normierter Bogenlängen-Stützpunkte verglichen. Höchstens ein Meter Formabweichung ist erlaubt. Gleiche Restlänge allein genügt nicht; zukünftige Abzweigungen, Schleifen, falsche Besuchsreihenfolge und parallele Straßen bleiben ausgeschlossen. Zusätzliche kollineare Stützpunkte sind zulässig.
- Restlängen dürfen höchstens
max(10 m, 2 × Genauigkeit)differieren. Das weiterhin gültige Planintervall muss 15 Sekunden bis 90 Minuten umfassen, die planbasierten ETA-Werte dürfen höchstens 60 Sekunden auseinanderliegen. Die zeitliche Grenze gilt auch bei Fortschrittsübereinstimmung innerhalb der bisherigen Metertoleranz. Maßgeblich ist die späteste Kandidaten-ETA. Dieser Grenzwert begrenzt Modellstreuung, nicht den realen Ankunftsfehler. - Jeder plausible Kandidat muss selbst die gerichteten Fixpaare, Sprunggrenze und mindestens drei frische Fixes über acht Sekunden mit
max(50 m, 3 × Genauigkeit)Bewegung erfüllen. Kandidatenwechsel beginnen das Fenster neu. Eine kompatible frühere Prognose behält ausschließlich ihren ursprünglichen Ablauf; Replays liefern keine neue Bewegung oder Gültigkeit. - Ein gemeinsamer Restweg autorisiert keine eindeutige historische Route. Physische Halt-/Abfahrtsbeobachtung, Besuchscursor, TTS und Zielabschluss behalten ihre getrennten Belege. Gerätefixes und GPS-Historie werden weder für Routing übertragen noch als öffentliche Testdaten gespeichert.
Die Änderung verwendet die bestehenden öffentlichen OSRM-Kandidaten, Kotlin und lokale Geometrie. Keine neue Bibliothek, API, Konfiguration oder Datenmigration. OSRM-Pkw-Wege sind weiterhin mögliche Straßenwege, keine offizielle SEV-Busführung; OSRM-Fahrtdauer wird nicht als Bus-ETA verwendet.
Eine größere pauschale Fortschrittstoleranz würde falsche Wege und Schleifen zulassen. Die erste Alternative ohne Beleg zu wählen würde eine historische Route vortäuschen. Ausschließlich auf eine frühere Bindung zu warten ließe Starts oder Neustarts auf bereits gemeinsamem Restweg dauerhaft ohne Prognose. Die eng begrenzte Restwegprüfung vermeidet diese Probleme.
- TODO: Gemeinsamen Restweg, Neustart, GPS-Ausfall, nahe parallele Straßen, Umleitung und Prognosegüte auf einer tatsächlichen SEV-Fahrt prüfen. Automatisierte Regressionen belegen Codeverhalten, keine reale Zustellung oder ETA-Genauigkeit.
- Die ausgeführten Prüfungen und Grenzen stehen unter Tests.