Zum Hauptinhalt springen

Fahrzeug — Kilometer (Sub-Route)

Zweck

Sub-Route /vehicles/:id/mileages zeigt die Kilometerstand-Historie des Fahrzeugs mit Datums-Stempel. Basis für Wartungsintervalle, Inspektions-Trigger und Fahrtenbuch. Werte werden typischerweise periodisch erfasst.

Berechtigungen (CASL)

ActionSubjectWirkungKeycloak-Rolle
viewFE_Vehicle, VehicleDetail aufrufbar
view/createVehicleMileageEinträge pflegenAPP_SPEAMCORE_VIEW/CREATE_VEHICLE_MILEAGE

Schritt-für-Schritt-Anleitung

  1. Fahrzeug (/vehicles/:id) → Tab Kilometer.
  2. + Eintrag → Datum und Kilometerstand erfassen.
  3. Bei Erreichen von Wartungs-Schwellen kann ein Notification-Event ausgeloest werden.

Anlege-Pattern (Inline-Row-Editing)

Tachostaende werden über die Lebensdauer des Fahrzeugs erfasst — wichtig für Wartungsintervalle, Steuer/Berufsfahrten-Trennung und Verkaufs-Wert.

SpalteEingabeWirkung
recordedAtDatum/ZeitZeitpunkt der Tacho-Ablesung.
mileageNumerisch (km)Aktueller Tachostand. Muss > letzter erfasster Wert sein (Backend-Validierung).
recordedByIdAutoMitarbeiter, der die Erfassung gemacht hat.
commentTextareaKontext (z. B. „Vor TUEV", „Nach Auslandsfahrt").

Werte werden zur Wartungs-Erinnerung verwendet (Vehicle.nextServiceMileage) und in Berichten als „km-Stand am Stichtag" aggregiert.

Wiederverwendbare Konzepte

Verknuepfungen zu anderen Modulen

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/vehicle-mileages?filter[vehicleId]Listeview VehicleMileage
POST/api/vehicle-mileagesEintragcreate VehicleMileage

App-Screenshots als KM-Nachweis (Welle 141)

Seit Welle 141 nimmt SpeamCore auch App-Screenshots als Nachweis für KM-Stände an — Fahrer fotografieren den Tacho mit ihrem Handy, das Bild landet als Beleg am Mileage-Eintrag. Die KI klassifiziert das Foto automatisch (vehicle-document-ai-classify-worker), liest den Wert per OCR und schlägt ihn als mileage vor. User bestätigt → Eintrag ist live.

Zusätzlich rotierte SpeamCore die Warnschwelle bei Vielfahrern auf einen quartalsweisen Rhythmus statt täglich:

  • vehicleMileageOveruseWarning wird nur noch alle 3 Monate ausgelöst (Compliance-Notification).
  • Daily-Trigger war im Praxisbetrieb zu nervig — bei normaler Fahrleistung mehrfach täglich Pop-ups.
  • Logik im BE-Service vehicle.service.ts (Commit 7c8059e4).

Plus: Mileage-Import aus DKV-/UTA-Reports kennt jetzt einen implausible-Flag (Welle 113), und Beträge wie "50400.000" werden korrekt als 50400 interpretiert (DKV-CSV-Parser-Fix).

KM-Foto-KI-Prüfung (seit Juni 2026)

Wird ein Kilometerstand mit Foto über den Compliance-Flow erfasst (POST /compliance-checks/:id/submit-mileage), prüft eine KI per Vision das Tacho-Foto gegen den eingegebenen Wert:

  • Die KI liest die Zahl vom Foto und vergleicht sie mit der Eingabe (Toleranz: ±2 % oder ±100 km, je nachdem was größer ist).
  • Abgelehnt (HTTP 422) wird nur bei einem echten Mismatch: Die KI hat einen Wert sicher gelesen und er liegt außerhalb der Toleranz.
  • Geht durch, wenn die KI keinen sicheren Wert lesen kann (extractedMileage = null) oder gar kein Kombiinstrument erkennt — schlecht ablesbare, aber legitime Fotos blockieren den Fahrer also nicht.

Abschaltbar: Über die Einstellung „KM-Eingabe: Foto per KI prüfen" (complianceVehicleMileagePhotoAiEnabled, Default an) lässt sich die KI-Prüfung global deaktivieren — dann wird jedes Foto ohne Abgleich akzeptiert.

Korrektur zu hoher Vorwerte: Ein per Foto verifizierter (niedrigerer) Tachostand ersetzt ältere Einträge mit höherer km-Zahl (diese werden in derselben Transaktion soft-gelöscht), sodass die Monotonie-Prüfung sauber bleibt. Die Notiz vermerkt, wie viele Vorwerte ersetzt wurden.

Versionshinweise

  • 2026-06-12: KM-Foto-KI-Prüfung dokumentiert — Vision-Abgleich Foto ↔ Eingabe (Toleranz ±2 %/±100 km, Ablehnung nur bei echtem Mismatch), Settings-Toggle complianceVehicleMileagePhotoAiEnabled, Supersede-Korrektur zu hoher Vorwerte. Verifiziert an vehicleMileagePhotoAi.service.ts, complianceCheck.router.ts (submit-mileage), vehicleMileage.model.ts.
  • 2026-04-30: Initiale Veröffentlichung.
  • 2026-05-21 (Welle 141): App-Screenshots als KM-Nachweis (Foto → AI-Klassifizierung → OCR-Vorschlag). vehicleMileageOveruseWarning quartalsweise statt täglich. Bestands-Purge alter inkonsistenter Mileage-Daten beim Migrieren. Quelle: BE-Commits 4ea001f1, 7c8059e4.