Levy Cover Fehlerbehebung
Diese Seite behandelt die haufigsten Fehlerzustande fur Levy Cover und wie man sie diagnostiziert. Die meisten Probleme landen in einem von vier Eimern: Konfiguration, Versicherer-Ausfall, Webhook-Lucken oder Buchhaltungs-Drift.
Opt-in-Karte erscheint nie beim Entsperren
Symptom: Fahrer entsperrt ein Fahrzeug, keine Levy Cover Karte erscheint, die Fahrt geht ohne Angebot weiter.
Wahrscheinlichste Ursachen (in der Reihenfolge):
- Unterkonto-Toggle aus. Prufen Sie
/dashboard/insurance/settings. Bestatigen Sie, dass Levy Cover fur das Unterkonto aktiviert ist. - Jurisdiktion nicht abgedeckt. Der Entsperrort lost zu einer Region auf, die als
available: falsein der Matrix markiert ist. Siehe Jurisdiktionsmatrix. Prufen Sie/api/admin/insurance/jurisdiction-matrixfur den aktuellen Matrix-Zustand. - Versicherer-Anmeldedaten fehlen.
CoverGeniusClientwirftCarrierNotConfiguredError. In Produktion verbirgt das die Karte vollig. Bestatigen Sie, dassCOVER_GENIUS_API_KEYundCOVER_GENIUS_PARTNER_IDin der bereitgestellten Umgebung gesetzt sind. - Versicherer hat keine Stufen zuruckgegeben. Der Versicherer kann ablehnen, auf bestimmte Risikoprofile zu quotieren (z.B. ein brandneuer Fahrer ohne Historie in einer Hochrisikozone). Prufen Sie die Angebotsantwort in Logs.
- Angebot Zeituberschreitung. Das 2-Sekunden-Budget beim Entsperren ist abgelaufen. Die Fahrt geht ohne das Angebot weiter, was das beabsichtigte Fail-Open-Verhalten ist.
- Fahrerpraferenz auf "immer ablehnen" gesetzt. Wenn der Fahrer die persistente Praferenz aus geschaltet hat, ist die Karte verborgen, bis er sie wieder aktiviert.
Diagnostische Abfragen:
SELECT * FROM insurance_offerings WHERE subaccount_id = '<id>'- aktivierte Zeilen bestatigen.SELECT * FROM ride_insurance_policies WHERE ride_id = '<ride id>'- bestatigen, ob ein Angebot/eine Bindung tatsachlich stattgefunden hat.- Logs: nach
quote.requestedundquote.failedEreignissen um den Entsperr-Zeitstempel herum suchen.
Bind hat 200 zuruckgegeben, aber keine Police in DB
Symptom: Logs zeigen einen erfolgreichen POST /bookings-Aufruf, aber ride_insurance_policies hat keine Zeile.
Wahrscheinliche Ursachen:
- Webhook-URL nicht registriert. Einige Versicherer-Integrationen bestatigen die Bindung uber den eingehenden
booking.confirmed-Webhook. Wenn dieser Webhook nie ankommt, protokolliert Levy die Anfrage unbegrenzt als in Bearbeitung. - Webhook-Signatur fehlgeschlagen. Das Ereignis kam an, aber
signature_verified = false. Prufen Sieinsurance_webhook_log. - Die Bindung war beim Versicherer erfolgreich, aber das Antwort-Payload war fehlerhaft. Selten; normalerweise nur ein Sandbox-Problem.
Losung: Fuhren Sie den Versicherer-Abstimmungs-Cron manuell aus:
curl -X POST https://fleets.levyelectric.com/api/cron/insurance-carrier-reconciliation
Der Cron prufut gebundene Policen gegen den Versicherer und repariert fehlende Fahrt-Versicherungs-Stempel. Wenn der Versicherer die Police als gultig meldet, wird die Zeile mit bound_at zuruckdatiert auf die ursprungliche Bindezeit erstellt.
Pramie nicht auf der Fahrtquittung
Symptom: Der Fahrer hat sich angemeldet, die Police wurde gebunden, aber die Quittung zeigt den Levy Cover Posten nicht.
Ursachen:
applyRideInsuranceToPricingwurde nicht aufgerufen. Prufen Sie, dasssrc/lib/rides/process-ride-completion.tsder Pfad ist, den der Abschluss genommen hat. Die Mobile-End-, Admin-Force-End-, Internal-Ride-End- und Auto-End-Pfade wenden alle diesen Helper an - wenn ein neuer Ride-End-Pfad hinzugefugt wurde, muss er den Helper ebenfalls anwenden.- Die Bindung ist passiert, aber der Versicherer hat die Police vor Fahrtende annulliert. Prufen Sie
ride_insurance_policies.voided_at. Wenn gesetzt, wurde die Pramie korrekt von der Quittung ausgeschlossen. - Stripe Connect Buchung fehlgeschlagen. Die Pramie ist Teil der Fahrtgesamtsumme; wenn die Gesamtsumme nicht erfolgreich gebucht wurde, wird kein Posten generiert. Standard-Zahlungswiederholung gilt.
Diagnose: SELECT id, total_cost, insurance_premium_amount FROM rides WHERE id = '<ride>'. Wenn insurance_premium_amount befullt ist, aber total_cost ihn nicht einschliesst, hat die Abschluss-Pipeline den Helper nicht angewendet.
Schadensfotos konnen nicht hochgeladen werden
Symptom: Fahrer versucht, ein Foto auf dem Schadensbildschirm hochzuladen, der Upload schlagt fehl.
Ursachen:
insurance-claimsStorage Bucket fehlt. Bestatigen Sie, dass der Bucket mit Fahrer-Upload + Read-Richtlinien und Service-Rollen-Management-Richtlinie existiert. Die Migration20270601120100_09_*erstellt ihn.- Signierte URL abgelaufen. Signierte URLs fur Foto-Upload haben eine kurze TTL. Wenn der Fahrer zu lange auf dem Bildschirm gesessen hat, lauft die URL ab. Die App sollte automatisch erneut abrufen; wenn nicht, starten Sie den Schadensfluss neu.
- Dateigrosse oder Typ abgelehnt. Die Bucket-Richtlinie beschrankt auf Bild-MIME-Typen bis zu 25 MB pro Datei.
Schaden steckt tagelang in submitted fest
Symptom: Ein Schaden wird eingereicht, der Betreiber sieht ihn in der Liste, aber er bewegt sich nie zu under_review oder weiter.
Ursachen:
- Webhook verpasst. Der Versicherer hat den Schaden bewegt, aber der Webhook hat Levy nie erreicht. Prufen Sie
insurance_webhook_logauf fehlgeschlagene Zustellungen um die Zeit der erwarteten Statusanderung herum. - Versichererseitige Sachbearbeiter-Verzogerung. Cover Genius prufut typischerweise innerhalb von 48-72 Stunden. Slice kann in einigen Jurisdiktionen langer dauern.
- Erforderliche Informationen fehlen. Einige Versicherer senden einen
claim.requires_info-Webhook, der zusatzliche Daten anfordert. Prufen Sie das Schadensdetail auf einen "Versicherer anfordernd"-Vermerk.
Aktion: Betreiber konnen an Levy-Support eskalieren, der den Versicherer uber den Partnerkanal verfolgen kann. Betreiber konnen weder Einspruche einreichen noch Statusanfragen direkt beim Versicherer stellen.
Webhook-Signaturfehler
Symptom: insurance_webhook_log zeigt signature_verified = false.
Ursachen:
COVER_GENIUS_WEBHOOK_SECRETstimmt nicht uberein. Am haufigsten. Holen Sie das aktuelle Geheimnis aus dem Cover Genius Portal erneut ab und aktualisieren Sie die Umgebungsvariable.- Die Webhook-URL der falschen Umgebung ist registriert. Sandbox-Ereignisse kommen am Produktions-Endpunkt an oder umgekehrt. Registrieren Sie die korrekte URL erneut im Versicherer-Portal.
- Replay oder Out-of-Order-Zustellung. Duplikat-Schlussel-Handling auf
UNIQUE (carrier, event_id)gibt{ duplicate: true }zuruck. Echte Signaturfehler unterscheiden sich von Duplikat-Handling - prufen Sie das Feldsignature_verifiedder Zeile.
Versicherer-Ausfall
Symptom: Angebot-Aufrufe haben Zeituberschreitung, Bind-Aufrufe geben 5xx zuruck, die Opt-in-Karte hort auf zu erscheinen.
Verhalten:
- Angebote Zeituberschreitung -> Fail Open, Fahrt geht ohne Angebot weiter,
insurance_offered = false. - Bestehende gebundene Policen bleiben gultig. Der Versicherer ehrt sie weiterhin, wenn Schaden schliesslich eingereicht werden.
- Ausstehende Schaden sitzen in ihrem aktuellen Status, bis der Versicherer sich erholt und sie verarbeitet.
Aktion:
- Bestatigen Sie den Ausfall auf der Cover Genius Statusseite oder uber den Partnerkanal.
- Kommunizieren Sie an betroffene Betreiber, wenn der Ausfall 1 Stunde uberschreitet.
- Binden Sie Policen wahrend des Ausfalls nicht manuell. Es gibt keinen Pfad, dies sicher zu tun - wenn der Versicherer die Bindung nicht tatsachlich empfangen hat, ist die Fahrt unversichert.
Pramie berechnet, aber Fahrer behauptet, nicht zugestimmt zu haben
Symptom: Fahrer-Support-Ticket sagt "Ich habe der Versicherung nicht zugestimmt, aber ich wurde berechnet."
Diagnose:
- Prufen Sie
ride_insurance_policiesfur die Fahrt. Wenn eine Zeile mit einembound_at-Zeitstempel existiert, wurde ein Opt-in-Ereignis erfasst. - Prufen Sie das Feld
policy_wording_versionfur den Text, den der Fahrer gezeigt bekam. - Prufen Sie die persistente Praferenz des Fahrers - "Meine Wahl erinnern" auf akzeptieren gesetzt bedeutet, dass zukunftige Fahrten automatisch binden.
Losung:
- Wenn der Fahrer wirklich nicht zugestimmt hat (ein UI-Bug oder eine veraltete Auto-Inklusiv-Praferenz), folgen Sie dem Pramienruckerstattungs-Pfad. Siehe Pramienruckerstattungen uber die Fahrt.
- Wenn der Fahrer zugestimmt hat, aber vergessen hat - der Text war klar und der Bindungsstempel ist intakt - erklaren Sie den Quittungsposten und den Praferenz-Toggle. Keine Ruckerstattung.
Tests schlagen fehl
Die vollstandige Test-Suite liegt unter src/lib/insurance/__tests__/. Es gibt 8 Dateien und 36 Tests. Um sie auszufuhren:
npx vitest run src/lib/insurance/__tests__/ src/lib/rides/__tests__/durable-completion-jobs.test.ts
Haufige Fehler:
- Umgebungsvariablen wahrend Testlaufen gesetzt. Wenn die Test-Umgebung
COVER_GENIUS_API_KEYgesetzt hat, kann die Registry den echten Client statt des Mocks auswahlen. Verwenden SiesetCarrierRegistryForTestszum Festlegen. - Migrations-Drift. Wenn ein Entwickler die Migrationsdateien lokal bearbeitet, konnen die Test-Fixtures vom Schema abdriften. Setzen Sie die lokale DB zuruck und fuhren Sie erneut aus.
Weiter
Prufen Sie FAQ fur kurzere Antworten auf haufige Fragen, oder Versicherer-Anmeldedaten einrichten fur Umgebungsvariablen-bezogene Probleme.
Hilfe benotigt?
Wenn keines der oben genannten Probleme lost, kontaktieren Sie support@levyelectric.com mit der Fahrt-ID und allen relevanten Log-Zeitstempeln.