intermediate
refunds
automatic
wallet

Automatische Ruckerstattungen

Vollstandige Anleitung zum automatischen Ruckerstattungssystem, das fehlgeschlagene Fahrten erkennt und Kunden automatisch auf ihr Wallet erstattet

Levy Fleets TeamDecember 25, 202518 min read

Automatische Ruckerstattungen

Das automatische Ruckerstattungssystem erkennt Fahrten, die wahrscheinlich fehlgeschlagen sind oder Fehlfunktionen hatten, und erstattet Kunden automatisch auf ihr Wallet. Dies hilft, die Kundenzufriedenheit zu erhalten, wenn Fahrzeuge fehlfunktionieren, nicht ordnungsgemas entsperrt werden konnen oder andere Probleme auftreten, die zu sehr kurzen, erfolglosen Fahrten fuhren.

Funktionsweise

Der automatische Ruckerstattungs-Ablauf

Wenn eine Fahrt endet, bewertet das System, ob sie fur eine automatische Ruckerstattung qualifiziert ist:

1

Fahrt endet

Kunde beendet seine Fahrt uber die mobile App

2

Metriken berechnet

System berechnet Fahrtmetriken (Dauer, Entfernung, Kosten)

3

Berechtigung bewertet

System pruft, ob Fahrt die Ruckerstattungsschwellenwerte erfullt

4

Job eingereiht

Falls berechtigt, wird ein Ruckerstattungs-Job in ride_auto_refund_jobs eingereiht

5

Verzogerungsperiode

Cron-Job wartet die konfigurierte Verzogerung (recalc_gap_minutes)

6

Neubewertung

System bewertet mit neuesten Telemetriedaten neu

7

Ruckerstattung ausgestellt

Falls weiterhin berechtigt, wird Wallet gutgeschrieben und Kunde benachrichtigt

Warum die Verzogerung?

Das System wartet eine konfigurierbare Anzahl von Minuten, bevor es die Ruckerstattung verarbeitet. Diese Verzogerung ermoglicht:

  1. Spat eintreffende Telemetriedaten zur Aktualisierung der Fahrtmetriken
  2. IoT-Datensynchronisation zum Abschluss mit endgultiger Entfernung/Dauer
  3. Backend-Verarbeitung zur Finalisierung der Fahrtberechnungen

Dies verhindert vorzeitige Ruckerstattungen basierend auf unvollstandigen Daten.

Ruckerstattungsziel

Automatische Ruckerstattungen gehen immer auf das Wallet des Kunden, nicht zuruck auf seine Karte. Dies gewahrleistet sofortige Ruckerstattungen ohne Transaktionsgebuhren und fordert die weitere Nutzung des Dienstes.

Berechtigungskriterien

Eine Fahrt qualifiziert sich fur automatische Ruckerstattung, wenn ALLE der folgenden Punkte zutreffen:

KriteriumStandardwertBeschreibung
Funktion aktivierttrueAutomatische Ruckerstattungen sind in den Einstellungen aktiviert
Dauer innerhalb des Limits≤ 3 MinutenFahrtdauer ist kleiner oder gleich Maximum
Entfernung innerhalb des Limits≤ 200 MeterZuruck gelegte Gesamtstrecke liegt innerhalb des Schwellenwerts
Hat KundenErforderlichFahrt ist mit einem gultigen Kunden verknupft
Kein doppelter JobErforderlichKein ausstehender/verarbeitender Job existiert fur diese Fahrt
Erstattungsfahiges GuthabenErforderlichFahrt hat einen Betrag, der erstattet werden kann

Was gepruft wird

Die Berechtigungsbewertung verwendet folgende Fahrtdaten:

  • Dauer in Sekunden
  • Entfernung in Metern
  • Gesamtkosten
  • Abgebuchter Betrag
  • Zahlungsstatus

Konfiguration

Zugang zu Einstellungen

Konfigurieren Sie automatische Ruckerstattungen im Admin-Dashboard:

  1. Navigieren Sie zu Einstellungen
  2. Klicken Sie auf den Tab Fahrten
  3. Finden Sie den Abschnitt Automatische Ruckerstattungen

Konfigurationsoptionen

EinstellungTypStandardBeschreibung
enabledbooleantrueHauptschalter fur automatische Ruckerstattungen
max_ride_duration_minutesnumber3Maximale Fahrtdauer zur Qualifikation
max_total_distance_mnumber200Maximale Entfernung in Metern zur Qualifikation
recalc_gap_minutesnumber1Minuten Wartezeit vor Verarbeitung

Empfohlene Werte nach Anwendungsfall

Konservativ (Weniger Ruckerstattungen)

Verwenden Sie diese Einstellungen, wenn Sie automatische Ruckerstattungen minimieren und manuelle Uberprufung bevorzugen mochten:

EinstellungWert
enabledtrue
max_ride_duration_minutes2
max_total_distance_m100
recalc_gap_minutes2

Standard (Ausgewogen)

Die Standardeinstellungen balancieren Kundenzufriedenheit mit betrieblicher Aufsicht:

EinstellungWert
enabledtrue
max_ride_duration_minutes3
max_total_distance_m200
recalc_gap_minutes1

Grosszugig (Mehr Ruckerstattungen)

Verwenden Sie diese Einstellungen fur maximale Kundenzufriedenheit:

EinstellungWert
enabledtrue
max_ride_duration_minutes5
max_total_distance_m300
recalc_gap_minutes1

Die richtige Balance finden

Beginnen Sie mit den Standardeinstellungen und passen Sie basierend auf Ihren Ruckerstattungsraten und Kundenfeedback an. Uberwachen Sie das Dashboard fur automatische Ruckerstattungen, um Muster zu erkennen.

Job-Status

Automatische Ruckerstattungs-Jobs durchlaufen diese Status:

StatusBeschreibung
pendingWartet auf Verarbeitung
processingWird aktuell verarbeitet (gesperrt)
succeededRuckerstattung erfolgreich angewendet
failedVerarbeitung fehlgeschlagen (kann manuell wiederholt werden)
cancelledJob abgebrochen (Fahrt nicht mehr berechtigt)

Cron-Job-Details

Der automatische Ruckerstattungs-Cron lauft alle 5 Minuten uber Vercel Cron.

Verarbeitungsverhalten

Jede Cron-Ausfuhrung:

  1. Verarbeitet bis zu 25 Jobs pro Durchlauf
  2. Verarbeitet nur Jobs, bei denen scheduled_for ≤ NOW()
  3. Verwendet optimistisches Sperren, um doppelte Verarbeitung zu verhindern
  4. Bereinigt abgelaufene Jobs, die alter als 7 Tage sind

Antwortformat

Der Cron-Endpunkt gibt Verarbeitungsstatistiken zuruck:

{
  "success": true,
  "timestamp": "2025-01-19T12:00:00Z",
  "duration_ms": 1234,
  "processed": 15,
  "succeeded": 12,
  "cancelled": 2,
  "failed": 1,
  "total_refunded_usd": 24.50
}

Admin-Dashboard

Greifen Sie auf das Dashboard fur automatische Ruckerstattungen zu unter Dashboard > Ruckerstattungen > Automatisch.

Dashboard-Funktionen

Statistikkarten

  • Ausstehende Jobs - Anzahl der auf Verarbeitung wartenden Jobs
  • Erfolgreich (24h) - Erfolgreiche Ruckerstattungen in den letzten 24 Stunden
  • Gesamt erstattet (24h) - Erstatteter Dollarbetrag
  • Erfolgsrate - Prozentsatz der erfolgreichen Jobs

Ausstehende Jobs-Tabelle

  • Fahrt-Link
  • Kunden-Link
  • Fahrtmetriken (Dauer, Entfernung)
  • Ruckerstattungsbetrag
  • Geplante Verarbeitungszeit
  • Abbrechen-Aktion

Fehlgeschlagene Jobs-Warnung

  • Prominent angezeigt, wenn Jobs Aufmerksamkeit benotigen
  • Wiederholen- und Abbrechen-Aktionen

Aktuelle Ruckerstattungen-Tabelle

  • Verarbeitete Ruckerstattungen der letzten 24 Stunden
  • Betrag, Kunde, Fahrtdetails
  • Job-ID zur Fehlerbehebung

Verfugbare Aktionen

AktionBeschreibung
AktualisierenAlle Dashboard-Daten neu laden
Job abbrechenAusstehenden Job abbrechen (wird nicht erstattet)
Job wiederholenFehlgeschlagenen Job wiederholen

Ruckerstattungsprozess-Details

Was wahrend der Ruckerstattung passiert

  1. Job-Sperre erworben - Status auf processing gesetzt
  2. Einstellungen validiert - Prufen, ob Auto-Ruckerstattung noch aktiviert
  3. Fahrt neu abgerufen - Neueste Fahrtmetriken abrufen
  4. Berechtigung neu bewertet - Bestatigen, dass noch innerhalb der Schwellenwerte
  5. Erstattungsfahiger Betrag berechnet - Tatsachlich bezahlt minus bereits erstattet
  6. Wallet gutgeschrieben - Wallet-Guthaben des Kunden erhoht
  7. Wallet-Transaktion erstellt - Prufpfad aufgezeichnet
  8. Fahrt aktualisiert - Als erstattet markiert, wenn vollstandig erstattet
  9. Benachrichtigung gesendet - Push-Benachrichtigung an Kunden
  10. Job abgeschlossen - Status auf succeeded gesetzt

Kundenbenachrichtigung

Wenn eine automatische Ruckerstattung ausgestellt wird, erhalten Kunden:

Push-Benachrichtigung:

  • Titel: "Fahrtruckerstattung ausgestellt"
  • Text: "Eine kurzliche Fahrt wurde automatisch auf Ihr Wallet erstattet."

Wallet-Transaktion:

  • Typ: Gutschrift
  • Beschreibung: "Automatische Fahrtruckerstattung"
  • Referenz: Fahrt-UUID

Stornierungsgrunde

Jobs konnen aus verschiedenen Grunden storniert werden:

GrundBeschreibung
automatic_refund_disabledFunktion wurde nach Job-Erstellung deaktiviert
duration_exceeds_limitFahrtdauer uberschreitet jetzt Schwellenwert
distance_exceeds_limitFahrtentfernung uberschreitet jetzt Schwellenwert
eligibility_failedAllgemeine Berechtigungsprufung fehlgeschlagen
no_refundable_balanceFahrt bereits vollstandig erstattet
missing_customer_uuidKunde nicht gefunden

Manuelle Ruckerstattungen

Zusatzlich zu automatischen Ruckerstattungen konnen Betreiber manuelle Ruckerstattungen uber das Dashboard ausstellen.

Ruckerstattungstypen

TypBeschreibung
Wallet-RuckerstattungSchreibt dem Wallet-Guthaben des Kunden sofort gut
Karten-RuckerstattungVerarbeitet Ruckerstattung uber Stripe zuruck zur ursprunglichen Zahlungsmethode

Ruckerstattungsmodi

ModusBeschreibung
VollErstattet den gesamten verbleibenden erstattungsfahigen Betrag
TeilweiseErstattet einen bestimmten Betrag (nur Karten-Ruckerstattungen)

Teilruckerstattungen

Wallet-Ruckerstattungen mussen immer Vollruckerstattungen sein. Teilruckerstattungen werden nur fur Karten-Ruckerstattungen unterstutzt.

Eine manuelle Ruckerstattung verarbeiten

1

Zur Fahrt navigieren

Gehen Sie zu Dashboard > Fahrten und klicken Sie auf die Fahrt

2

Auf Erstatten klicken

Klicken Sie auf den Button Erstatten auf der Fahrtdetailseite

3

Ziel wahlen

Wahlen Sie Wallet oder Karte als Ruckerstattungsziel

4

Modus auswahlen

Fur Karten-Ruckerstattungen, voll oder teilweise wahlen

5

Grund eingeben

Optional einen Grund fur die Ruckerstattung eingeben

6

Bestatigen

Ruckerstattung uberprufen und bestatigen

Berechtigungsanforderungen

Ruckerstattungen erfordern die Berechtigung ride:refund. Folgende Rollen konnen Ruckerstattungen verarbeiten:

  • super_admin
  • global_admin
  • admin
  • general_manager
  • franchisee_manager
  • fleet_manager
  • customer_support

Hinweis: Analysten und Service-Techniker konnen keine Ruckerstattungen verarbeiten.

Uberwachung

Ausstehende Jobs anzeigen

SELECT
  id,
  ride_uuid,
  customer_uuid,
  status,
  scheduled_for,
  attempts,
  created_at
FROM ride_auto_refund_jobs
WHERE status = 'pending'
ORDER BY scheduled_for ASC;

Aktuelle automatische Ruckerstattungen anzeigen

SELECT
  r.id,
  r.ride_uuid,
  r.customer_uuid,
  r.amount,
  r.processed_at,
  r.metadata->>'job_id' as job_id
FROM ride_refunds r
WHERE r.metadata->>'automatic_refund' = 'true'
  AND r.processed_at > NOW() - INTERVAL '24 hours'
ORDER BY r.processed_at DESC;

Fehlgeschlagene Jobs prufen

SELECT
  id,
  ride_uuid,
  customer_uuid,
  attempts,
  last_error,
  created_at
FROM ride_auto_refund_jobs
WHERE status = 'failed'
ORDER BY updated_at DESC
LIMIT 20;

Fehlerbehebung

Jobs werden nicht erstellt

Prufung 1: Ist automatische Ruckerstattung aktiviert?

  • Navigieren Sie zu Einstellungen > Fahrten > Automatische Ruckerstattungen
  • Uberprufen Sie, ob der Schalter aktiviert ist

Prufung 2: Sind Fahrtmetriken innerhalb der Schwellenwerte?

  • Prufen Sie Fahrtdauer (muss ≤ max_ride_duration_minutes sein)
  • Prufen Sie Fahrtentfernung (muss ≤ max_total_distance_m sein)

Prufung 3: Hat die Fahrt einen Kunden?

  • Uberprufen Sie, ob die Fahrt mit einem gultigen Kunden verknupft ist

Jobs stecken in Ausstehend fest

Prufung 1: Lauft der Cron?

  • Uberprufen Sie, ob Vercel Cron konfiguriert ist
  • Prufen Sie Vercel-Dashboard auf Cron-Ausfuhrungsprotokolle

Prufung 2: Sind Jobs fur die Zukunft geplant?

  • Jobs werden erst verarbeitet, wenn scheduled_for ≤ NOW()

Prufung 3: Prufen Sie Vercel-Funktionsprotokolle auf Fehler

Jobs schlagen fehl

Haufige Fehler und Losungen:

FehlerUrsacheLosung
customer_not_foundKunde wurde geloschtJob abbrechen
ride_not_foundFahrt wurde geloschtJob abbrechen
no_refundable_balanceBereits erstattetJob storniert automatisch
wallet_update_failedDatenbankproblemJob wiederholen

Leistungsoptimierung

Hochvolumen-Flotten

Fur Flotten mit vielen Fahrten, erwagen Sie:

  1. Cron-Frequenz erhohen - Alle 2-3 Minuten statt 5 ausfuhren
  2. Stapelgrosse erhohen - 50-100 Jobs pro Durchlauf verarbeiten
  3. Warteschlangen-Ruckstau uberwachen - Alarme fur Anzahl ausstehender Jobs einrichten

Datenbankoptimierung

Stellen Sie sicher, dass diese Indizes fur optimale Leistung existieren:

-- Ausstehende Job-Suche
CREATE INDEX CONCURRENTLY IF NOT EXISTS
  idx_ride_auto_refund_jobs_pending_scheduled
  ON ride_auto_refund_jobs (scheduled_for)
  WHERE status = 'pending';

-- Kunden-Wallet-Suche
CREATE INDEX CONCURRENTLY IF NOT EXISTS
  idx_customers_wallet
  ON customers (id, wallet_balance);

Empfohlene Alarme

Richten Sie Alarme ein fur:

  1. Hohe Fehlerrate - Alarm, wenn fehlgeschlagene Jobs > 10% der verarbeiteten
  2. Warteschlangen-Ruckstau - Alarm, wenn ausstehende Jobs > 100
  3. Verarbeitungsverzogerung - Alarm, wenn Jobs > 30 Minuten uberfällig
  4. Ausfuhrungsfehler - Alarm, wenn Cron-Endpunkt 500 zuruckgibt

Nachste Schritte

Automatische Ruckerstattungen aktiv

Mit konfigurierten automatischen Ruckerstattungen erhalten Ihre Kunden sofortige Ruckerstattungen fur fehlgeschlagene Fahrten, was die Zufriedenheit verbessert und Support-Tickets reduziert. Uberwachen Sie das Dashboard regelmasig, um sicherzustellen, dass das System korrekt funktioniert.