Reaktionszeit-Safe-Ride-Check
Der Safe Ride Check ist ein kurzer Reaktionszeit-Test, den der Fahrer vor dem Unlock wahrend eines konfigurierbaren Spatfensters absolviert. Er ist darauf ausgelegt, sichere Entscheidungen zu fordern - es ist kein Nuchternheits- oder DUI-Test.
Datenschutz-Rahmung - wichtig
Dies ist ein "Safe Ride Check", kein medizinischer oder rechtlicher Beeintrachtigungstest. Der In-App-Text lautet:
"Dies ist kein medizinischer oder rechtlicher Test der Beeintrachtigung. Wir verwenden ihn, um sichere Entscheidungen zu fordern. Wenn Sie sich nicht sicher fuhlen zu fahren, wahlen Sie bitte einen anderen Verkehrstrager."
Wir teilen Ergebnisse niemals mit Strafverfolgung ausser per Haftbefehl.
Was der Fahrer tut
- Spatabendlicher Unlock-Versuch (Standard-Fenster: 22:00 bis 04:00 Ortszeit).
- Die App startet ein 5-Runden-Tap-the-Dot-Minispiel.
- Jede Runde zeichnet eine Reaktionszeit in Millisekunden auf, oder einen "Miss" bei Timeout (3s).
- Nach 5 Runden berechnet die App den Median und die Miss-Anzahl.
- Bestehen: Median < 450ms, weniger als 2 Misses.
- Nicht bestehen: 30-Minuten-Unlock-Cooldown plus "Sind Sie sicher zu fahren?" mit "Freund anrufen"-CTA.
Bestehens-Schwellenwerte
| Einstellung | Standard | Wirkung |
|---|---|---|
reaction_median_threshold_ms | 450 | Maximale Median-Reaktionszeit |
reaction_max_misses | 1 | Maximale Misses |
reaction_test_round_count | 5 | Anzahl Runden |
reaction_test_timeout_ms | 3000 | Pro-Runden-Timeout |
Alle pro Subkonto editierbar unter Einstellungen > Safe Ride Check.
Auslosefenster
| Einstellung | Standard | Wirkung |
|---|---|---|
reaction_window_start_local | 22:00 | Fensterbeginn |
reaction_window_end_local | 04:00 | Fensterende (umschlagt Mitternacht) |
reaction_window_enabled | true | Auf false setzen, um zu deaktivieren |
Der Mitternachts-Umschlag wird in isWithinNightWindow() in src/lib/rider-score/reaction-test.ts behandelt und ist unit-getestet.
Was bei Nichtbestehen passiert
Ein einzelner Fail:
- 30-Minuten-Unlock-Cooldown.
- Cooldown-UI zeigt verbleibende Zeit und "Erneut versuchen".
- Keine Score-Sanktion.
- Kein
score_audit_log-Eintrag.
Drei Fails in 24 Stunden offnen eine Schritt-6-Zeit-Sperre in der Interventionsleiter.
Was bei Bestehen passiert
- Fahrer entsperrt normal.
reaction_tests-Zeile mitpassed=true.- Keine Auswirkung auf Score oder Preis.
Cooldown-Logik
Der evaluateAttempts()-Kernel ist unit-getestet.
reaction_tests row:
median_reaction_ms - Median aller Runden
miss_count - Misses (Timeout >= 3s)
passed - bool aus Bestehenskriterien
trigger - 'nighttime' | 'appeal' | 'random'
cooldown_until - jetzt + 30 Min bei Fail
Ein Fahrer mit cooldown_until in der Zukunft wird vom Tor blockiert (reason='reaction_cooldown').
Wann der Test sonst ausgelost wird
- Nacht-Trigger (Standard): jeder Unlock-Versuch im Nachtfenster.
- Einspruchs-Trigger (optional): Betreiber kann Safe-Ride-Check vor Auflosung einer Schritt-6-Einspruchs erfordern.
- Zufalls-Trigger (optional): zufallige Untermenge aller Unlocks. Standard 0%.
Datenschutz und was wir nicht tun
- Wir protokollieren nicht, mit wem der Fahrer gesprochen hat.
- Wir nehmen den Bildschirm, die Kamera oder das Mikrofon nicht auf.
- Wir teilen Ergebnisse nicht mit Versicherern in identifizierbarer Form.
- Wir teilen Ergebnisse nicht mit Strafverfolgung ausser per Haftbefehl.
Betreiber-Steuerung
- Einstellungen > Safe Ride Check zum Konfigurieren.
- Prufspur gefiltert nach
action='reaction_test_fail_lockout'. - Fahrer-Profil > Reaktionstests zeigt die letzten 30 Tage.
ADA und Barrierefreiheit
Reaktionstests konnen Fahrer mit bestimmten Behinderungen benachteiligen. Bei Selbstoffenlegung sollte der Betreiber eine kontoebene Ausnahme unter Fahrer-Profil > Ausnahmen konfigurieren.
API-Oberflache
| Endpunkt | Zweck |
|---|---|
POST /api/mobile/rider/reaction-test | Versuche einreichen |
GET /api/mobile/rider/reaction-test | Ist gerade einer erforderlich? |
Weiter
Siehe Interventionsleiter dafur, wie 3 Fails in 24h zu einer Schritt-6-Sperre werden.