30 KiB
Meilensteine
Dokumentversion: v3 Stand: 08.04.2026 Status: verbindliche Meilensteinstruktur für die Implementierung von Version 1 Projekt: ASV-Format-Validator Primärquelle:
Spec.docx– Technische Anlage ASV 1.09, Stand 09.10.2025, anzuwenden ab Leistungserbringungsquartal 2/2026 Begleitdokumente:fachliche-anforderungen.mdv4,technik-und-architektur.mdv5
1. Zweck dieses Dokuments
Dieses Dokument untergliedert die Implementierung des Projekts ASV-Format-Validator in fachlich und technisch sinnvolle Meilensteine für Version 1.
Rangfolge der Dokumente:
Spec.docxist die normative fachlich-technische Wahrheit. Bei jeder Kollision gilt die Spezifikation.fachliche-anforderungen.mdv4 ist der verbindliche fachliche Soll-Rahmen.technik-und-architektur.mdv5 ist der verbindliche technische Soll-Rahmen.- Dieses Dokument strukturiert lediglich die Umsetzung der oben genannten Grunddokumente in eine sinnvolle Reihenfolge. Es ersetzt sie nicht, reduziert sie nicht und darf ihnen nicht widersprechen.
Dieses Dokument beschreibt keine Arbeitspakete, keine KI-Prompts und keine konkreten Implementierungsschritte, sondern nur die empfohlene Reihenfolge und Abgrenzung der größeren Umsetzungsschritte für Version 1.
2. Leitplanken für die Meilensteinbildung
Für alle Meilensteine gelten verbindlich folgende Grundsätze:
- Es geht ausschließlich um Version 1.
- Die Zielbasis ist genau eine Spezifikationsversion: Technische Anlage ASV 1.09.
- Themen aus
Ausblick.mdsind nicht Bestandteil dieser Meilensteinplanung. - Jeder Meilenstein muss in einem grünen, stabilen Zwischenstand enden.
- Die Architektur wird evolutionär weiterentwickelt, nicht in einem riskanten Komplettumbau.
- Fachliche Regeln, technische Parserlogik, Berichtserzeugung und Infrastruktur bleiben klar getrennt.
- Bereiche, die laut Anforderungen in V1 nicht belastbar prüfbar sind (
V1-N), werden nicht versehentlich als harte Pflichtvalidierung umgesetzt. Bereiche mit KategorieV1-Twerden nur so weit aktiv geprüft, wie es lokal belastbar möglich ist. - Die Trennung zwischen Spec-Urteil und diagnostischer Weiteranalyse ist von Anfang an architektonisch verankert, nicht erst am Ende eingeführt.
3. Überblick über die Meilensteinfolge
| Meilenstein | Titel | Hauptnutzen |
|---|---|---|
| M1 | Projektfundament, Logging und Ergebnismodell | startbare CLI, stabile Grundarchitektur, Logging-Adapter, Befundmodell mit Spec-/Diagnose-Trennung |
| M2 | Artefaktschicht, Dateizugriff, Dateinamen und globale Rahmenregeln | sauberes Einlesen, ISO-8859-15-Basis, Dateinamensschemata, Partnersicht |
| M3 | EDIFACT-Serviceebene und Transportstruktur | belastbare Strukturprüfung für UNA, UNB, UNH, UNT, UNZ inkl. Service-Crosschecks |
| M4 | KKS-Auftragssatz / AUF | vollständiger eigener Prüfpfad für Auftragsdateien und KKS-Crosschecks |
| M5 | ASVREC-Kernmodell und feldgenaue Einzelregeln | fachlich belastbare Validierung regulärer ASV-Abrechnungen |
| M6 | Beziehungsregeln, Summenlogik und Storno | Falllogik, Crosschecks und strukturierte Storno-Behandlung |
| M7 | ASVFEH und Fehlernachrichtenlogik | sauber getrennte Validierung von Fehlerdateien und FHL-Segmenten |
| M8 | PKCS#7, Krypto und Tiefenprüfung verschlüsselter Artefakte | Prüfung transportnaher bzw. verschlüsselter Eingaben bis zur inneren Nutzlast |
| M9 | Bericht, Diagnose, Produktreife und Release-Härtung | final nutzbare V1 mit stabiler Ausgabe, Qualitätssicherung und Dokumentation |
4. Detaillierte Meilensteine
M1 – Projektfundament, Logging und Ergebnismodell
Ziel
Es entsteht der tragfähige technische Sockel für die weitere Implementierung, inklusive Logging-Adapter und Befundmodell mit eingebauter Spec-/Diagnose-Trennung. Die eigentliche ASV-Fachvalidierung ist hier noch nicht enthalten. Das Grundgerüst ist so geschnitten, dass alle späteren Meilensteine ohne architektonischen Umbau darauf aufbauen können.
Inhalt
- Zielstruktur gemäß hexagonaler Architektur innerhalb des bestehenden Maven-Projekts anlegen bzw. schärfen (Paketzuschnitt gemäß
technik-und-architektur.md) - manuellen Bootstrap mit Constructor Injection herstellen; kein DI-Framework
- CLI-Grundaufruf mit genau einer Eingabedatei als Positionsargument herstellen
- internes Ergebnis- und Befundmodell als stabiles Grundgerüst einführen; das Befundmodell unterscheidet von Anfang an:
- Spec-Urteil (verbindliches Prüfurteil gemäß Spezifikation)
- diagnostische Weiteranalyse (zusätzliche Befunde, die das Spec-Urteil niemals verändern)
- Befundarten Fehler / Warnung / Hinweis strukturell im Modell verankern
- Befund-Metadaten als Felder vorsehen: Artefaktschicht, Prüfstufe, Prüfbereich, Segmenttyp, Segmentindex, Feld-ID, Rohwert, Position, Nachrichtenbezug, optionaler offizieller Fehlercode
- Logging-Adapter einführen:
- SLF4J als Fassade
- Log4j2 als Implementierungs-Bindung
- konkrete Log4j2-Bindung ausschließlich im Bootstrap und im Logging-Adapter sichtbar
- Trennung zwischen fachlichem Kern, Infrastruktur, Bericht und Logging von Anfang an sauber festziehen
- Grundverhalten für Bericht- und Log-Datei im Eingabeverzeichnis etablieren (Berichtdatei
.txt, Log-Datei.log, beide UTF-8) - Suffix-Logik
_v1,_v2, … für Mehrfachläufe auf denselben Dateibasisnamen etablieren - Exit-Code-Grundgerüst (
0,1,2) implementieren - Minimalbericht auch für Bedien- oder Zugriffsfehler vorsehen (Exit-Code
2)
Noch nicht Ziel von M1
- echte EDIFACT-Nachrichtenvalidierung
- KKS-Feldlogik
- ASVREC-/ASVFEH-Fachmodell
- PKCS#7-Verarbeitung
- inhaltliche Bericht-Gestaltung
Abnahme von M1
- Anwendung ist als JAR unter Windows mit Java 21 startbar
- Eingabedatei wird technisch entgegengenommen; falsches oder fehlendes Argument führt zu Exit-Code
2mit Minimalbericht - Bericht- und Log-Datei werden im Eingabeverzeichnis mit korrekter Suffix-Logik erzeugt
- Log4j2-Bindung ist außerhalb von Bootstrap und Logging-Adapter nicht sichtbar
- Befundmodell trennt Spec-Urteil und Diagnose strukturell
- Build und Tests sind grün
M2 – Artefaktschicht, Dateizugriff, Dateinamen und globale Rahmenregeln
Ziel
Die Anwendung kann lokale Eingabedateien robust lesen, technisch einordnen und als äußeres Artefakt sauber modellieren. Die globalen fachlichen Rahmenregeln und die Dateinamenskonventionen der Spezifikation sind als harte Prüfregeln umgesetzt.
Inhalt
- read-only Dateisystemzugriff in einem Infrastruktur-Adapter kapseln
- Eingaben konsequent mit ISO 8859-15 behandeln; keine Plattform-Default- oder stillschweigende UTF-8-Dekodierung
- äußeres Artefaktmodell aufbauen:
- physische Datei
- Dateiname
- Extension
- mutmaßliche Artefaktart
- erkannte Schichten
- automatische Dateityperkennung und explizite Benutzervorgabe als gleichrangige Eingänge umsetzen; bei Widerspruch wird die Benutzervorgabe verarbeitet und zusätzlich eine Warnung erzeugt (kein Abbruch allein wegen Widerspruch)
- Dateinamensschemata gemäß Spezifikation als harte Prüfregeln umsetzen:
- unverschlüsselt:
B<VKNR><Jahr><Quartal><Zähler>(11 Stellen) - verschlüsselt:
<IK-Sender>_<IK-Kasse>_<E|T>ASV0<Zähler> - Auftragsdatei: identischer Basisname wie die zugehörige verschlüsselte Datei, Endung
.AUF
- unverschlüsselt:
- Übermittlungszähler prüfen: Wertebereich
001–999, 3-stellig numerisch; V1 prüft keine quartalsübergreifende Folgesequenz, markiert diese Grenze aber als bewusste V1-Einschränkung im Bericht - globale fachliche Rahmenregeln umsetzen (aus
fachliche-anforderungen.md§5.1):- ISO 8859-15 als Verfahrens-Zeichensatz, nur darstellbare Zeichen
- ASV-Dateien werden unkomprimiert übertragen
- eine Datei pro Kasse, keine kassenübergreifende Bündelung
- keine erzwungene Sortierreihenfolge der Nachrichten innerhalb einer Datei
- exakte Partnerdatei-Ableitung für die zugehörige
.AUFbzw. die zugehörige Transportdatei herstellen (deterministisch, nicht heuristisch) - fehlende oder nicht passende Partnerdatei als Warnung modellieren, nicht als Abbruch
Noch nicht Ziel von M2
- tiefe Service-Segment-Validierung
- KKS-Feldprüfung
- fachliche Segmentbeziehungen in ASVREC
Abnahme von M2
- äußere Datei wird robust gelesen, mit ISO 8859-15 dekodiert und klassifiziert
- Dateinamensschemata werden feldgenau geprüft
- Übermittlungszähler-Wertebereich wird geprüft und die V1-Einschränkung ist im Bericht kenntlich
- die vier globalen Rahmenregeln aus §5.1 sind als eigene Regelbausteine umgesetzt
- Partnerdateien werden deterministisch gesucht, nicht heuristisch geraten
- Widerspruch zwischen Auto-Erkennung und Benutzervorgabe wird als Warnung erzeugt, ohne Abbruch
- Build und Tests sind grün
M3 – EDIFACT-Serviceebene und Transportstruktur
Ziel
Die Anwendung kann die EDIFACT-Hüllstruktur zuverlässig parsen und die lokalen Prüfregeln der Stufen 1 und 2 auf Service-Ebene belastbar anwenden.
Inhalt
- Parsing für
UNA,UNB,UNH,UNT,UNZ UNAals optionales Segment behandeln; Fallback auf die ASV-konformen Standardtrennzeichen, wennUNAfehlt- Prüfung der Trennzeichen und ihrer Gültigkeit
- technische Segmentgrenzen, Nachrichtenhüllen und Nachrichtenanzahl bestimmen
- Service-Crosschecks umsetzen:
- physischer Dateiname ↔
UNB_0020(UNB_0020ist die Übertragungsreferenz bzw. der Dateiname der Übertragung, nicht die Senderkennung) UNB_0020↔UNZ_0020(Referenzgleichheit von Übertragungskopf und -ende)UNH_0062↔UNT_0062je Nachricht (Referenzgleichheit von Nachrichtenkopf und -ende)UNZ_0010(Nachrichtenzähler) ↔ tatsächliche Anzahl derUNH/UNT-Paare- Testindikator
UNB 0035: Echtdaten-/Testdaten-Konsistenz mit derE/T-Kennung im physischen Dateinamen; Wert1nur für Testübertragungen
- physischer Dateiname ↔
- Konsistenzprüfungen, die den KKS-Auftragssatz voraussetzen (insbesondere die Abstimmung zwischen
UNB 0035/Dateiname und KKS-VERFAHREN_KENNUNG), sind nicht Bestandteil von M3 und werden in M4 zusammen mit den KKS-Crosschecks umgesetzt - unbekannte oder fremde Segmente nicht vorschnell verwerfen, sondern diagnostisch sichtbar halten
- Spec-Urteil und diagnostische Weiteranalyse strikt trennen (Befundklassifizierung bereits beim Erzeugen)
- parse-nahe Sofortprüfungen bleiben auf strukturelle und technische Befunde beschränkt (Lesbarkeit, Zeichensatz, Trennzeichen, grobe Segment- und Feldfehler); fachliche Regeln, feldwertbezogene Plausibilitäten und Bezugskontrollen gehören nicht in den Parser
Noch nicht Ziel von M3
- KKS-Auftragssatz im Detail
- fachliche Feldregeln der Nutzdaten
- Katalog- oder Bestandsprüfungen
Abnahme von M3
- Service-Segmente werden robust erkannt und geparst (mit und ohne
UNA) - die in M3 genannten Crosschecks sind umgesetzt und als eigene Regeln nachweisbar
- typische Stufe-1- und Stufe-2-Strukturfehler können belastbar gemeldet werden
- Build und Tests sind grün
M4 – KKS-Auftragssatz / AUF
Ziel
Der KKS-Auftragssatz wird als eigenständiger, vollwertiger Prüfgegenstand umgesetzt und nicht als Anhängsel der Nutzdatendatei behandelt. Eine .AUF-Datei kann auch eigenständig (als einzige Eingabedatei pro Lauf) validiert werden.
Inhalt
- Parser für den festen KKS-Auftragssatz aufbauen
- vollständige Umsetzung der KKS-Feldregeln gemäß
fachliche-anforderungen.md§9. Die nachfolgende Liste ist nicht abschließend, sondern nennt zentrale Anker; maßgeblich ist §9. - zentrale Festwerte und Strukturprüfungen:
IDENTIFIKATOR = 500000VERSION = 01LÄNGE_AUFTRAG = 00000348SEQUENZ_NR = 000(keine Teillieferungen)VERFAHREN_KENNUNG: Stelle 20E/T, Stellen 21–23ASV, Stelle 240VERFAHREN_KENNUNG_SPEZIFIKATIONals Kann-Feld: Blank zulässig; wenn belegt, nur aus der definierten Wertemenge (ASVA0für Abrechnung,ASVF0für Fehlermeldung)TRANSFER_NUMMER: Wertebereich001–999DATUM_ERSTELLUNG: 14-stelligJJJJMMTThhmmss, formal prüfenDATEIVERSION = 000000KORREKTUR = 0FEHLER_NUMMER = 000000,FEHLER_MASSNAHME = 000000ZEICHENSATZ = I5(formaler Anker für die ISO-8859-15-Annahme der gesamten Anwendung)KOMPRIMIERUNG = 00VERSCHLÜSSELUNGSART = 03ELEKTRONISCHE_UNTERSCHRIFT = 03
- Kommunikationspartner-Felder (
ABSENDER_EIGNER,ABSENDER_PHYSIKALISCH,EMPFÄNGER_NUTZER,EMPFÄNGER_PHYSIKALISCH): strukturell und formal auf IK-Format prüfen. Eine inhaltliche Kommunikationspartnerprüfung ist ohne Referenzbestände in V1 nicht belastbar möglich und daher nicht Gegenstand von M4 (V1-T) - Kann-Felder des KKS nach Nichtbelegungsregeln prüfen:
- numerisch → Nullfüllung (
HEX 30) - alphanumerisch → Blankfüllung (
HEX 20)
- numerisch → Nullfüllung (
- KKS-Crosschecks:
TRANSFER_NUMMER↔ Zähler im physischen Dateinamen- Dateinamensbezug (Begriffsklärung):
- der physische Dateiname der verschlüsselten Übertragungsdatei folgt dem Schema
<IK-Sender>_<IK-Kasse>_<E|T>ASV0<Zähler> - die zugehörige Auftragsdatei trägt denselben physischen Basisnamen und endet auf
.AUF UNB_0020trägt, sobald die EDIFACT-Schicht vorliegt, die Übertragungsreferenz und entspricht dem Dateinamen der Übertragung- die KKS-
DATEINAME-Angabe im Auftragssatz entspricht dem unverschlüsselten Dateinamen nach dem SchemaB<VKNR><Jahr><Quartal><Zähler> - zu prüfen sind: KKS-
DATEINAMEgegen den aus Schema und Kontext abgeleiteten unverschlüsselten Dateinamen sowie – soweit beide Schichten vorliegen – die Konsistenz zwischen physischem Dateinamen der Übertragung,UNB_0020und KKS-DATEINAME
- der physische Dateiname der verschlüsselten Übertragungsdatei folgt dem Schema
DATEIGRÖSSE_NUTZDATENgegen die tatsächliche Bytegröße der unverschlüsselten Nutzdatendatei, soweit die unverschlüsselte Schicht lokal vorliegtDATEIGRÖSSE_ÜBERTRAGUNGgegen die tatsächliche Bytegröße der verschlüsselten Übertragungsdatei- Echtdaten-/Testdaten-Konsistenz zwischen Dateiname, KKS-
VERFAHREN_KENNUNGund – soweit vorhanden –UNB 0035
Noch nicht Ziel von M4
- vollständige fachliche ASVREC-Regelvalidierung
- ASVFEH-Fachlogik
- PKCS#7-Tiefenprüfung
Abnahme von M4
.AUF-Dateien sind eigenständig validierbar- die Regeln aus
fachliche-anforderungen.md§9 sind umgesetzt - KKS-Festwerte und Feldlogik sind belastbar geprüft
- KKS-Crosschecks funktionieren technisch sauber
- AUF-bezogene Befunde sind im Ergebnis klar von EDIFACT-Nutzdaten-Befunden getrennt
- Build und Tests sind grün
M5 – ASVREC-Kernmodell und feldgenaue Einzelregeln
Ziel
Reguläre ASV-Abrechnungsnachrichten (ASVREC) werden fachlich auf Segment- und Feldebene belastbar validierbar, soweit dies lokal ohne Referenzbestände möglich ist.
Inhalt
- kanonisches internes Modell für
ASVRECaufbauen - Segmentabbildung für die ASVREC-Nutzsegmente gemäß Spezifikation:
IFA,DGN,LEA,SAC,GEN,OPA,REA,IVA - feldgenaue Regeln gemäß Fachlichen Anforderungen umsetzen, soweit in V1 lokal belastbar
- Muss-/Kann-Logik und Vorkommensregeln pro Segment und Feld umsetzen
- formale Prüfungen für Typ, Länge, Format, Schlüsselwerte und Sonderformate umsetzen
- Versichertennummer-Strukturprüfung (
IVA 8.3.1) umsetzen:- Stelle 1: Alpha
A–Zohne Umlaute - Stellen 2–9: numerisch
- Stelle 10: Prüfzifferstelle vorhanden (keine algorithmische Prüfziffernvalidierung in V1)
- Stelle 1: Alpha
- zentrale Sonderregeln und Ausnahmen korrekt berücksichtigen – diese dürfen nicht fälschlich als Fehler gemeldet werden:
- Geburtsdatum im Ersatzverfahren (
IVA 8.4.3): im FormatJJJJMMTTsind beliebige numerische Werte zulässig, zusätzlich die Platzhalter00(unbekannter Tag),0000(unbekannter Tag und Monat) und00000000(vollständig unbekannt); eine Datumsplausibilisierung in diesem Feld ist unzulässig - negative numerische Werte: das führende Minuszeichen zählt nicht zur maximalen Feldlänge
- Dezimalzeichen
,zählt nicht zur maximalen Feldlänge - Pseudo-GOP
88999sowie regionale Pseudo-GOP sind für Sachkosten ohne Sachzusammenhang zulässig - GOÄ-Sonderfall: in
3/3.2.1wird die Pseudo-GOP übertragen, in3/3.2.5die zugehörige GOÄ-Ziffer - obsolete Muss-Felder
4/4.2.4und4/4.2.5: füllpflichtig mit beliebigem Inhalt, aber nicht ausschließlich Leerzeichen; inhaltlich werden diese Felder nicht geprüft
- Geburtsdatum im Ersatzverfahren (
- Vertretungs-Teamebene
4: Die Spezifikation legt fest, dass bei Teamebene4die Teamebene des Vertretenen maßgeblich ist. Eine belastbare Prüfung dieser Regel setzt einen Abgleich mit dem ASV-Verzeichnis voraus und ist in V1 ohne Referenzbestände nicht möglich (V1-N). V1 erzwingt deshalb insbesondere keine Plausibilitäten auf Teamebene4und markiert diesen Bereich als bewusst nicht geprüft. - ausdrücklich keine referenzbestandsabhängigen Prüfungen erzwingen (
V1-N-Bereich: ICD, OPS, IK, BSNR, LANR, Teamnummer inhaltlich) - Bereiche mit
V1-Nim Bericht als „bewusst nicht geprüft" kenntlich machen
Noch nicht Ziel von M5
- fallübergreifende bzw. komplexe Crosschecks
- Storno-Sonderstruktur
- ASVFEH
- PKCS#7
Abnahme von M5
- reguläre
ASVREC-Nachrichten können segment- und feldgenau validiert werden - die genannten Sonderwerte und Ausnahmen werden nicht fälschlich als Fehler behandelt
- die Versichertennummer-Strukturprüfung ist umgesetzt
- lokal nicht belastbar prüfbare Bereiche bleiben sauber abgegrenzt und als
V1-Nmarkiert - das kanonische Modell ist stabil genug für Beziehungsregeln im nächsten Meilenstein
- Build und Tests sind grün
M6 – Beziehungsregeln, Summenlogik und Storno
Ziel
Die fallinterne Logik von ASV-Abrechnungen wird vollständig genug, um reguläre Rechnungen und Storno-Fälle fachlich konsistent zu beurteilen.
Inhalt
- segmentübergreifende Crosschecks umsetzen, insbesondere:
DGNerforderlich bei regulärer Rechnung (REA 7.2.4 = 0)LEAerforderlich bei regulärer Rechnung- Summenprüfung Rechnungsbetrag (
REA) gegenLEAundSAC, soweit ohne externe Bestände lokal möglich - Überweiserkontext ↔ Diagnoseart (
IFA 1.3.1/DGN 2.2.5) - externer und interner Überweiser nicht gleichzeitig (
IFA 1.3.1/1.3.2) - Pflicht-
GENbei bestimmten GOPs
- Regeln für Pseudo-GOP, GOÄ-Sonderfall und Sachkosten-Sonderkonstellationen umsetzen, soweit lokal belastbar
- Konsistenzprüfung zur globalen Regel „eine Datei pro Kasse" auf Basis der lokal verfügbaren Kassenbezüge (Andockstelle an die globale Rahmenregel aus M2)
- Storno als eigene Strukturvariante von
ASVRECsauber modellieren:- reduzierte Segmentstruktur: nur die in der Spezifikation für Storno vorgesehenen Muss-Segmente und Muss-Felder
- bei Storno unzulässige Segmente gemäß Spezifikation:
DGN,LEA,SAC,GEN,OPA– ihr Vorhandensein ist ein Fehler - Rechnungskennzeichen Storno (
REA 7.2.4 = 1) - Rechnungsbetrag bei Storno
REA 7.2.1 = 0,00 - Bezug auf die ursprüngliche Rechnungsnummer, soweit lokal prüfbar
- saubere Vermeidung, dass Storno-Pflichten als „normale Rechnungspflichten" missbraucht werden und umgekehrt
Noch nicht Ziel von M6
- Validierung von
ASVFEH - PKCS#7-Tiefenprüfung
Abnahme von M6
- reguläre Rechnungen und Storno-Nachrichten werden sauber unterschieden
- die in M6 genannten segmentübergreifenden ASVREC-Regeln greifen
- Summen- und Strukturfehler werden fachlich nachvollziehbar ausgewiesen
- Storno wird als eigene Variante behandelt; bei Storno unzulässige Segmente werden erkannt
- Build und Tests sind grün
M7 – ASVFEH und Fehlernachrichtenlogik
Ziel
Fehlernachrichten (ASVFEH) werden als eigener Nachrichtentyp mit eigener Struktur und eigenen Regeln vollständig separat validiert.
Inhalt
- eigenes kanonisches Modell für
ASVFEHeinführen - beide Strukturvarianten unterstützen:
- eigenständige Fehlerdatei (typisch Stufe 1):
UNB,UNHmit NachrichtentypASVFEH,FHL,UNT,UNZ - eingebettete Fehlernachricht mit Originalnutzdaten (typisch Stufen 2–4):
UNH, Originalnutzdatensegmente,FHL,UNT
- eigenständige Fehlerdatei (typisch Stufe 1):
FHL-Segmentlogik umsetzen (Spezifikation sieht bis zu 99 Vorkommen vor)- Prüfung von Fehlercode, Fehlertext, Referenzen, Storno-/Korrekturkennzeichen und weiteren
FHL-Feldern, soweit lokal belastbar - Regel abbilden: Kann-Datenelemente im
FHLwerden zu Muss-Datenelementen, wenn ihre Ermittelbarkeit aus der Fehlersituation belastbar ableitbar ist. V1 setzt dies nur dort als Fehler um, wo diese Ableitbarkeit aus der vorliegenden Datei wirklich gegeben ist. - Umgang mit Originalnachricht explizit umsetzen:
- die mitgelieferte Originalnachricht wird nicht als eigenständiger ASVREC-Validierungsgegenstand behandelt
- die Abwesenheit der Originalnachricht bei Prüfstufen 2–4 ist kein Fehler, sondern höchstens ein Hinweis, da die Originalnutzdaten laut Spezifikation nicht lesbar oder nicht syntaxkonform übertragbar gewesen sein dürfen
- die Verfahrensregel „eine Fehlernachricht darf nicht mit einer Fehlernachricht beantwortet werden" wird nicht als Validierungsregel umgesetzt, da sie an einer einzelnen isoliert übergebenen Datei nicht prüfbar ist (
V1-N)
- Vorrang spezifischer offizieller Fehlercodes vor Sammelcodes (
xx999,3A998,4A998) berücksichtigen
Noch nicht Ziel von M7
- PKCS#7-Tiefenprüfung
- finale Berichtsveredelung
Abnahme von M7
ASVFEHist sauber vonASVRECgetrennt- beide
ASVFEH-Strukturvarianten werden korrekt erkannt FHL-Segmente sind feldgenau modelliert und strukturell für bis zu 99 Vorkommen unterstützt- das Fehlen der Originalnachricht bei Stufen 2–4 erzeugt keinen harten Fehler
- offizielle Fehlercodebezüge können belastbar an Befunde angehängt werden; Sammelcodes werden nur genutzt, wenn kein spezifischerer offizieller Code einschlägig ist
- Build und Tests sind grün
M8 – PKCS#7, Krypto und Tiefenprüfung verschlüsselter Artefakte
Ziel
Die Anwendung kann verschlüsselte bzw. transportnahe Artefakte technisch verarbeiten und – soweit Material nutzbar bereitgestellt wurde – bis zur inneren Nutzlast durchsteigen. Die Tiefenprüfung nutzt die bereits in M3–M7 gebaute Validierungskette erneut; es entsteht keine zweite, parallele Validierungslogik.
Inhalt
- Krypto-Adapter hinter stabilen Ports einführen; Krypto-Verarbeitung erfolgt innerhalb der Java-Anwendung, keine externen Tools oder Binaries
- explizite CLI-Übergabe von Schlüssel- und Passwortmaterial anbinden (konkrete Optionsnamen in der README dokumentiert)
- Basisprüfung verschlüsselter Artefakte auch ohne nutzbares Material ermöglichen
- Fallback-Verhalten sauber umsetzen: Warnung statt Totalabbruch, wenn Material technisch nicht nutzbar ist
- nach erfolgreicher Entschlüsselung automatisch bis zur inneren fachlichen Schicht weiterarbeiten, indem die bereits bestehende Validierungskette aus M3–M7 auf die entschlüsselte Nutzlast angewendet wird
- Mindestalgorithmusprüfungen gemäß technischem Soll-Rahmen modellieren, insbesondere:
- PKCS#7 als Containerformat
- AES-256-CBC als Session Key
- RSA 4096 Bit als Interchange Key
- SHA256withRSAandMGF1 / PSS
- RSA-Exponent Fermat-4 (
2^16 + 1)
- Nicht-PSS-Altverfahren müssen in V1 nicht aktiv unterstützt werden, dürfen aber als erkannte Abweichung gemeldet werden
- Abweichungen sauber als technische Befunde modellieren
- Krypto-Integration bleibt sauber von Domain und Application entkoppelt; Krypto-Typen sind außerhalb des Krypto-Adapters und des Bootstrap nicht sichtbar
Noch nicht Ziel von M8
- zusätzliche Transportkanäle
- E-Mail- oder Serverintegration
- Mehrdateimodus
Abnahme von M8
- verschlüsselte Artefakte sind technisch analysierbar
- mit gültigem Material ist Tiefenprüfung bis zur Nutzlast möglich; das Ergebnis ist konsistent zu dem, was eine Direktvalidierung der unverschlüsselten Datei liefern würde
- ohne nutzbares Material erfolgt nachvollziehbare Basisprüfung mit Warnung, kein Totalabbruch
- Krypto-Integration ist entkoppelt
- Build und Tests sind grün
M9 – Bericht, Diagnose, Produktreife und Release-Härtung
Ziel
Die bis dahin umgesetzte Funktionalität wird zu einer sauberen, benutzbaren und abnahmereifen Version 1 zusammengeführt.
Inhalt
- finalen hierarchischen Bericht stabilisieren:
- Datei
- Schichten
- Nachrichten/Fälle
- Befunde
- strukturierte Bestandsinformationen in den Bericht aufnehmen: erkannter Dateityp, erkannte Schichten, Anzahl Nachrichten/Fälle, relevante Kopfdaten, Übermittlungszähler, spec-konformes Prüfurteil, zusätzliche diagnostische Auffälligkeiten
- klare Trennung zwischen Spec-Urteil und diagnostischer Weiteranalyse final durchziehen (architektonisch seit M1 vorhanden, hier nur in der Darstellung konsolidiert)
- Befunde mit Metadaten und – soweit eindeutig – offiziellen Fehlercodes anreichern; Vorrangregel für Sammelcodes einhalten
- Konsolenausgabe und Berichtdatei fachlich gleichziehen
- technisches Logging sauber vom Bericht trennen
- README und Nutzungsdokumentation vervollständigen, inklusive CLI-Optionsnamen und der PKCS#7-Materialübergabe
- umfangreiche End-to-End-Testartefakte ergänzen: Parser-, KKS-, ASVFEH- und Storno-Fälle mit synthetischen, anonymisierten Testdaten
- letzte Robustheits- und Randfalllücken schließen
Quality-Gates für Version 1 (verbindlich)
- Build grün
- alle Tests grün
- Coverage gesamtprojektweit ≥ 85 %
- PIT-Mutation-Score gesamtprojektweit ≥ 70 %
- differenzierte Zielschwellen gemäß
technik-und-architektur.md:
| Bereich | Coverage | Mutation |
|---|---|---|
domain |
≥ 95 % | ≥ 85 % |
application |
≥ 90 % | ≥ 80 % |
adapter.out.* |
≥ 90 % | ≥ 75 % |
adapter.in.cli |
≥ 80 % | ≥ 60 % |
bootstrap |
ausgenommen | ausgenommen |
- Abweichungen von den Schwellwerten sind nur mit dokumentierter Begründung zulässig
Noch nicht Ziel von M9
- GUI
- Batch-Verarbeitung
- Mehrversionssupport
- Referenzdatenbestände
- spätere Erweiterungen aus
Ausblick.md
Abnahme von M9
- Version 1 ist fachlich und technisch in sich geschlossen nutzbar
- Bericht und Logging sind stabil, verständlich und sauber getrennt
- Spec-Urteil wird nie durch Diagnose „grün gerechnet"
- alle Quality-Gates sind erreicht oder bewusst dokumentiert abgewichen
- das Projekt ist bereit für nachgelagerte Feinschnitte in Arbeitspakete
5. Empfohlene Umsetzungslogik für die spätere Arbeitspaketbildung
Aus dieser Meilensteinstruktur ergibt sich für die spätere Arbeitspaketbildung folgende sinnvolle Logik:
- Zuerst immer den tragfähigen Unterbau herstellen – inklusive Logging und Befundmodell mit Spec-/Diagnose-Trennung.
- Danach die äußere technische Struktur, die globalen Rahmenregeln und den KKS-Auftragssatz stabilisieren.
- Erst dann die fachliche Tiefe von ASVREC aufbauen.
- Storno und ASVFEH nicht vermischen, sondern als eigene Prüfdimensionen schneiden.
- PKCS#7 erst aufsetzen, wenn die innere Nutzlastvalidierung bereits stabil steht; die bestehende Kette wird wiederverwendet.
- Produktreife, Bericht, Doku und Qualitäts-Härtung am Ende konsolidieren.
6. Definition of Done über alle Meilensteine hinweg
Ein Meilenstein gilt nur dann als sinnvoll abgeschlossen, wenn mindestens die folgenden Punkte erfüllt sind:
- der Stand ist fachlich und technisch konsistent zu den Grunddokumenten
- Build und zugehörige Tests sind grün
- der Meilenstein erzeugt keinen architektonischen Widerspruch zu den Grunddokumenten
- nicht prüfbare
V1-N- und nur teilprüfbareV1-T-Bereiche wurden nicht versehentlich als harte Pflichtprüfung umgesetzt - keine Elemente aus späteren Ausbaustufen wurden unbemerkt in Version 1 hineingezogen
- die im jeweiligen Meilenstein genannten Abnahmekriterien sind erfüllt
- der Stand ist stabil genug, um daraus anschließend Arbeitspakete abzuleiten
Die finalen Quality-Gates für Version 1 (Coverage, Mutation, Zielschwellen pro Paket) gelten am Ende von M9. Zwischenmeilensteine müssen lediglich grün sein, nicht die finalen Schwellwerte vorwegnehmen.
7. Zusammenfassung
Die Implementierung von Version 1 sollte nicht entlang technischer Zufälle, sondern entlang einer klaren fachlich-technischen Reifung erfolgen:
- zuerst Grundgerüst, Logging und Befundmodell mit Spec-/Diagnose-Trennung,
- dann Artefaktschicht, Dateinamen und globale Rahmenregeln,
- dann Service- und KKS-Ebene,
- danach ASVREC mit Beziehungslogik und Storno,
- anschließend ASVFEH,
- danach PKCS#7-Tiefenprüfung unter Wiederverwendung der bestehenden Kette,
- und zum Schluss Bericht, Qualität und Release-Härtung.
Damit entsteht eine Meilensteinfolge, die klein genug für kontrollierte Weiterentwicklung bleibt, aber groß genug ist, um daraus später präzise und in sich geschlossene Arbeitspakete abzuleiten.
8. Dokumenthistorie
| Version | Wesentliche Änderungen |
|---|---|
| v1 | Erstfassung mit Meilensteinfolge M1–M9 |
| v2 | Logging-Adapter und Spec-/Diagnose-Trennung als Fundament in M1 verankert; Dateinamensschemata und globale Rahmenregeln in M2 ergänzt; Service-Crosschecks in M3 vollständiger; KKS-Regelsatz in M4 erweitert und eigenständige .AUF-Validierbarkeit klargestellt; Sonderregeln in M5 ergänzt; Umgang mit Originalnachricht in M7 präzisiert; Wiederverwendung der Validierungskette in M8 explizit; Quality-Gates in M9 mit Zahlen. |
| v3 | Zweck entschärft und Rangfolge der Grunddokumente klargestellt (Spec.docx als Wahrheit; meilensteine.md strukturiert lediglich). M3: Crosscheck physischer Dateiname ↔ UNB_0020 korrekt als Übertragungsreferenz benannt (nicht „Senderkennung"); Vorgriff auf KKS-VERFAHREN_KENNUNG aus M3 entfernt und nach M4 verschoben. M4: Dateinamensbezug (physischer Dateiname, UNB_0020, KKS-DATEINAME, .AUF-Basisname) sauber begrifflich getrennt; unscharfe „bzw."-Formulierung ersetzt. M5: regionale Pseudo-GOP neben 88999 ausdrücklich aufgenommen; Vertretungs-Teamebene 4 als V1-N gekennzeichnet statt als aktive Prüfung; NAD-Hinweis entfernt. Gesamtes Dokument: in v2 eingeführte Zwischen-Quality-Gates (Coverage/Mutation pro Meilenstein) entfernt, da nicht aus den Grunddokumenten folgend; finale Gates bleiben in M9 erhalten. V1-T-Sprachregelung in den Leitplanken präzisiert. Kleinere sprachliche Glättungen. |