5.6 KiB
CLAUDE.md
Projektweite Instruktionen für Claude Code. Diese Datei wird automatisch gelesen und gilt für jeden Lauf in diesem Repository.
Projektkontext
Projekt: ASV-Format-Validator Sprache: Java 21 (Jakarta/Java SE, kein Spring, kein Quarkus, kein DI-Framework) Build: Maven Zielplattform: Windows, lokale CLI, eine Eingabedatei pro Lauf Spezifikation: Technische Anlage ASV 1.09, Stand 09.10.2025 Domäne: Validierung von ASV-Abrechnungsdateien (EDIFACT, KKS, PKCS#7) gegen eine normative Spezifikation der GKV
Normative Dokumente (Rangfolge bei Konflikten)
Spec.docx— Technische Anlage ASV 1.09 ist die fachlich-technische Wahrheit. Bei jedem Konflikt entscheidet die Spec. (Liegt außerhalb des Repos beim Projektinhaber.)docs/specs/fachliche-anforderungen.mdv4 — verbindlicher fachlicher Soll-Rahmen, feldgenauer Regelkatalog, Fehlercodesdocs/specs/technik-und-architektur.mdv5 — verbindlicher technischer Soll-Rahmen, Architektur, Paketstruktur, Qualitätsgatesdocs/specs/meilensteine.mdv3 — nachrangig, strukturiert nur die Umsetzung
Die Grunddokumente (1–3) sind bei jeder Arbeit mitzudenken. Die Meilensteindatei ersetzt sie nicht.
Arbeitsweise in diesem Repo
Die Implementierung folgt einem Meilenstein-/Arbeitspaket-Modell:
- Meilensteine sind in
docs/specs/meilensteine.mddefiniert (M1 bis M9) - Arbeitspakete pro Meilenstein liegen in
docs/arbeitspakete/m<n>/APxx-*.md - Abschlussberichte pro Arbeitspaket gehören nach
docs/arbeitspakete/m<n>/berichte/APxx-bericht.md - Berichtsvorlage ist
docs/arbeitspakete/m<n>/templates/ap-bericht.md
Ein Claude-Code-Lauf bearbeitet genau ein Arbeitspaket. Nicht mehr, nicht weniger.
Harte Regeln für jeden Lauf
- Scope-Treue: Was im Arbeitspaket unter „Scope OUT" steht, wird nicht angefasst. Auch nicht nebenbei, auch nicht „schnell aufgeräumt". Wenn du etwas Merkwürdiges außerhalb des Scopes siehst, dokumentiere es unter „Rest-Risiken" im Abschlussbericht.
- Keine stillen Annahmen: Wo die Spec etwas nicht festlegt, wird nichts stillschweigend ergänzt. Unsicherheiten werden explizit benannt.
- Kein
git commit, keingit push, keingit add— der Mensch committet am Ende selbst nach Sichtung. - Kein Schreiben außerhalb des Auftragsbereichs. Wenn das Arbeitspaket sagt „keine Code-Änderungen", dann wird keine
.java-Datei angefasst. - Grünes Zwischenziel: Jeder Arbeitspaket-Lauf endet mit einem grünen
mvn clean verify— es sei denn, das Arbeitspaket sagt ausdrücklich etwas anderes. - Abschlussbericht ist Pflicht: Am Ende jedes Arbeitspaket-Laufs entsteht der Bericht nach Vorlage in
docs/arbeitspakete/m<n>/berichte/APxx-bericht.md. Reviewer-Checkliste am Ende ausfüllen.
Architekturprinzipien (aus technik-und-architektur.md)
- Hexagonale Architektur innerhalb des bestehenden Maven-Projekts
- Manuelle Constructor Injection, kein DI-Framework
- Strikte Trennung Domain/Application von Adaptern/Infrastruktur
- SLF4J als Logging-Fassade, Log4j2 als Bindung, Log4j2-Typen sichtbar nur in
adapter.out.loggingundbootstrap - Befundmodell unterscheidet Spec-Urteil und diagnostische Weiteranalyse — Diagnose verändert das Spec-Urteil nie
- Exit-Codes:
0= gültig,1= ungültig,2= Bedienfehler. Nicht0/1/2/3. - Eingabe-Encoding: ISO 8859-15. Niemals UTF-8 oder Plattform-Default für Eingabedateien.
- Ausgabe (Berichtdatei
.txt, Log-Datei.log): UTF-8 - Paketstruktur wie in
technik-und-architektur.mdunter „Gewünschte Paketstruktur" beschrieben
Code-Konventionen
- Klassennamen, Methoden, Variablen: Englisch
- JavaDoc: Deutsch
- Benutzer-sichtbare Texte (Bericht, Logausgabe, Fehlermeldungen): Deutsch
- Unveränderliche Datenträger: bevorzugt als Java Records, sofern fachlich-technisch passend
- Wertobjekte mit Validierung: reguläre Klassen
- Tests: JUnit 5, Mockito. Tests liegen spiegelbildlich zur Produktionsklasse.
V1-Kategorien (für Regel-Implementierung ab M3)
- V1-V = verbindlich in V1 zu prüfen
- V1-T = in V1 nur teilweise/lokal prüfbar (strukturell/formal ja, inhaltlich gegen Bestände nein)
- V1-N = fachlich existent, in V1 bewusst nicht belastbar prüfbar (keine aktiven Pflichtprüfungen umsetzen!)
- V1-K = konventionsbasiert aus angrenzenden Standards
Wichtig: V1-N-Regeln dürfen nie als harte Pflichtprüfung umgesetzt werden, auch wenn sie fachlich existieren.
Was explizit NICHT zum Scope von Version 1 gehört
- GUI (JavaFX-Anbindung wird in V2 erwogen)
- Batch-/Verzeichnisverarbeitung
- Server-/Containerbetrieb, Web-UI
- Mehrversionssupport der ASV-Spezifikation
- Referenzdatenbestände (ICD, OPS, IK, BSNR, LANR, Teamnummer, Stammdaten)
- Stufe-4-Prüfungen
- Automatische Korrektur/Rewrite von Eingabedateien
- PDF-Bericht
- JSON-Ausgabe
Tools und Befehle
- Build:
mvn clean verify - Nur Compile:
mvn clean compile - JAR bauen:
mvn clean package - Mutation-Tests:
mvn -P mutation test(Profil, ab AP02 verfügbar) - Tests einzeln:
mvn test -Dtest=ClassName
Wenn du unsicher bist
- Lies die drei Grunddokumente. Wahrscheinlich steht die Antwort dort.
- Halte dich ans Arbeitspaket. Wenn das Arbeitspaket eine Sache nicht erlaubt oder nicht erwähnt, mache sie nicht.
- Dokumentiere die Unsicherheit. Lieber im Abschlussbericht „hier war ich unsicher, Entscheidung X, weil Y" als eine stille, unsichtbare Annahme.
- Frag nicht nach Bestätigung für Offensichtliches. Wenn das Arbeitspaket sagt „lies Datei X", dann lies sie, ohne vorher zu fragen.