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¶
- normative Datei-/Record-ID und Generation dokumentieren;
- Längen vor Lesen validieren;
- Quellsektion/-index und Rohbezug bewahren;
- UTC unverändert lassen;
- Fixture-/Fehllängentests ergänzen;
- Signaturauswirkung testen;
- beide Sprachversionen und API-Schemata aktualisieren;
- keine Fachidentität aus mehrdeutigen Werten ableiten.
Ältere technische Modul-/Tabellennamen mit ddd oder DLTNG bleiben Kompatibilitätskennungen.