Zum Inhalt

Tachographen-Parser-Integration

1. Umfang

FLEET Mira verarbeitet Fahrerkarten-C-Dateien und Massenspeicher-M-Dateien über einen gemeinsamen TachographImportService. Das komprimierte Archivoriginal bleibt Beweisquelle; Parsertabellen sind ersetzbare abgeleitete Daten.

2. Importpipeline

flowchart TD
    A[Archiv-ID] --> B[GZIP/Hash lesen und prüfen]
    B --> C[Binärinhalt klassifizieren]
    C --> D[C- oder M-Struktur parsen]
    D --> E[Zertifikate/signierte Sektionen prüfen]
    E --> F{Ergebnis}
    F -->|Gültig| G[Abgeleitete Zeilen atomar ersetzen]
    F -->|Ungültig/nicht prüfbar| H[Quarantäneergebnisse speichern]
    F -->|Technischer Fehler| I[Vorherige gültige Details behalten]
    G --> J[Verknüpfung, Fälligkeit, UI-Cache invalidieren]
    H --> J

Öffentliche Integrationspunkte:

TachographImportService(db_path, logger).import_archive_id(archive_id)
DriverCardFullParser.parse_bytes(data)
VehicleUnitParser.parse(path)
DriverCardSignatureVerificationService.verify(parsed, trust_store, reference_time)
SignatureVerificationService.verify_sections(parsed, trust_store)

3. Klassifizierung

Die Klassifizierung verwendet Protokoll-/Dateikennungen im Binärinhalt, niemals nur den Dateinamen. Werte: DRIVER_CARD, VEHICLE_UNIT, UNKNOWN. C-/M-Präfixe werden nur für Auslesedatum/Plausibilität geprüft.

4. Fahrerkartendaten

Der C-Parser bewahrt Blockart, Anwendungs-/Datei-ID, Generation, Reihenfolge, exakte Datenbytes und nachfolgende Signaturbytes. Er bildet Identität, Kartengültigkeit, Behörden, Führerscheinnummer, Aktivitäten, Ereignisse, Störungen, Fahrzeuge und Positionen ab.

Parserwert Fachverwendung
Nachname/Vornamen Personenkonflikt und Anzeige
Geburtsdatum optionaler Personalwert
Kartennummer/Generation Kartenverknüpfung und C-/M-Abgleich
Ausgabe/Gültig-ab/Ablauf Kartenakte und Ablauffälligkeit
Führerscheinnummer/-behörde Personalführerscheindaten
Sprache/Land Kartenmetadaten

Es werden keine Werte aus fremden Bytebereichen geschätzt. Textfelder entfernen Encodingindikatoren/Steuerbytes und normalisieren Leerzeichen, ohne bedeutende Zeichen zu verändern.

5. Massenspeicherdaten

Unterstützt: G1 TREP 01–05, G2 v1 21–25, G2 v2 31–35. Tabellen: Übersicht/Identität, Kartensitzungen, Slotaktivitäten, Ereignisse, Störungen, Überschreitungen, Sekundengeschwindigkeit, Technik/Kalibrierung und Position/Grenze/Laden.

Unbekannte begrenzte optionale Records bleiben als Warnung. Ungültige Längen/Protokollfolgen führen zum Parsefehler. Fahrer-/Werkstattnamen verwenden dieselbe Textnormalisierung.

6. Signaturprüfung

C-Dateien

  • G1: EF.Card_Certificate, EF.CA_Certificate, RSA PKCS#1/SHA-1 über exakte Datenblockbytes.
  • G2/G2V2: Card_Sign, MSCA_Card, optionales Linkzertifikat und ECDSA über exakte signierte EFs.

M-Dateien

Jede vorhandene signierte VU-Sektion wird separat gegen ERCA/MSCA/VU-Kette geprüft. Zertifikatszeit verwendet den besten plausiblen signierten Dateizeitpunkt, sonst Archiv-/Downloadzeit mit Warnung.

Gesamtpriorität: INVALID, dann UNVERIFIABLE, dann VALID. Fehlendes cryptography, Signatur/Zertifikat oder Trustanker ergibt UNVERIFIABLE, nie VALID.

7. Parser-/Quarantänestatus

Status Bedeutung
PARSED_VERIFIED Parse und Pflichtprüfung gültig
PARSED_VERIFIED_WITH_WARNINGS gültiger Nachweis mit nichtfatalen Warnungen
QUARANTINED_INVALID_SIGNATURE kryptografisch ungültig
QUARANTINED_UNVERIFIABLE Nachweis nicht vollständig möglich
PARSE_ERROR struktureller/technischer Parsefehler

Quarantänedateien bleiben sichtbar/exportierbar, dürfen aber keine vertrauenswürdigen Personal-/Fahrzeuglinks, kombinierten C-/M-Auswertungen oder Prüfsnapshots speisen.

8. C-/M-Abgleich

Das gewählte Archiv bleibt Basis. Gegenintervalle werden nach normalisierter Kartennummer, Generation und UTC-Überdeckung zugeordnet. Ein Sweep-Line-Vergleich schneidet nur an Intervallgrenzen. Überdeckte gültige Daten erscheinen als C und M vorhanden; einseitige Abdeckung als nur C/M. C-Vorrang gilt nur in vollständiger Personenhistorie und ändert nie Rohquellen.

9. Neuverarbeitung und Idempotenz

Der Archivhash verhindert Originaldubletten. Reparse ersetzt abgeleitete Zeilen erst nach erfolgreicher Parse-/Prüftransaktion. Fehler erhalten letzte gültige Details. Import, Löschung, Restore oder Reparse invalidiert betroffene Vergleichscaches.

10. Parser erweitern

  1. normative Datei-/Record-ID und Generation dokumentieren;
  2. Längen vor Lesen validieren;
  3. Quellsektion/-index und Rohbezug bewahren;
  4. UTC unverändert lassen;
  5. Fixture-/Fehllängentests ergänzen;
  6. Signaturauswirkung testen;
  7. beide Sprachversionen und API-Schemata aktualisieren;
  8. keine Fachidentität aus mehrdeutigen Werten ableiten.

Ältere technische Modul-/Tabellennamen mit ddd oder DLTNG bleiben Kompatibilitätskennungen.