87 lines
4.7 KiB
Markdown
87 lines
4.7 KiB
Markdown
# AP09 – Altlogik aus M1 entkoppeln (Parser/Validator einfrieren)
|
||
|
||
## Ziel
|
||
|
||
Die **bereits vorhandene Parser- und Validator-Logik** aus der früheren Implementierung (vor dieser M1-Planung) wird **nicht gelöscht**, aber sauber **entkoppelt** vom aktiven M1-Lauf. Sie wird als „Vorbau für M3 und folgende" explizit markiert und ist während M1 **nicht** Bestandteil der aktiven Verarbeitungskette.
|
||
|
||
Hintergrund: Der ursprüngliche Stand im Repository enthält bereits `DefaultInputFileParser`, `DefaultSegmentLineTokenizer`, `DefaultStructureValidator`, `DefaultFieldValidator`, `DefaultInputFileValidator` und `validation.model.ValidationResult`. Das ist wertvoll und darf nicht verloren gehen — gehört aber fachlich in M3 (Parser), M5 (Feldregeln) und M6 (Beziehungen), nicht in M1.
|
||
|
||
## Voraussetzungen
|
||
|
||
- AP03 (Migration), AP05 (neues Befundmodell), AP06 (neuer Bootstrap/CLI)
|
||
|
||
## Scope IN
|
||
|
||
### Einfrieren statt Löschen
|
||
- Die bestehenden Klassen bleiben **vollständig erhalten**, inklusive Tests
|
||
- Sie werden in ein klar erkennbares Unterpaket verschoben, z.B.:
|
||
```
|
||
de.gecheckt.asv.legacy.parser
|
||
de.gecheckt.asv.legacy.validation
|
||
de.gecheckt.asv.legacy.model
|
||
```
|
||
oder alternativ:
|
||
```
|
||
de.gecheckt.asv.application.preview
|
||
```
|
||
Die Entscheidung zwischen `legacy` und `preview` wird im Bericht dokumentiert und begründet. Empfehlung: **`preview`**, weil „legacy" suggeriert, dass etwas alt und zu entsorgen ist — tatsächlich wird der Code in M3/M5/M6 weiterverwendet.
|
||
- Jedes Paket bekommt ein `package-info.java` mit deutlichem Hinweis:
|
||
```
|
||
Diese Klassen stammen aus einer früheren Implementierung und sind
|
||
für die Meilensteine M3 bis M6 vorgesehen. Sie sind in M1 nicht Teil
|
||
der aktiven Validierungskette. Änderungen an diesen Klassen während
|
||
M1 sind zu vermeiden.
|
||
```
|
||
|
||
### Entkopplung vom Lauf
|
||
- `CliRunner` und `Bootstrap` dürfen die Preview-Klassen **nicht** aufrufen
|
||
- der aktive M1-Lauf verwendet ausschließlich den Dummy-Pfad aus AP06 (Datei einlesen, leeren `ValidationReport` erzeugen)
|
||
- die alten Tests der Preview-Klassen laufen **weiterhin grün mit**, damit der Code nicht verrottet
|
||
- `validation.model.ValidationResult` (alt) bleibt im Preview-Paket und wird **nicht** mit dem neuen `ValidationReport` aus AP05 verwechselt
|
||
|
||
### Saubere Kennzeichnung
|
||
- In `README.md` des Repos (falls vorhanden, sonst anlegen) ein kurzer Abschnitt „Preview-Code" mit Verweis auf `docs/arbeitspakete/m1/AP09-altlogik-einfrieren.md`
|
||
- Kein `@Deprecated`! Deprecated würde bedeuten „wird entfernt" — das Gegenteil ist der Fall.
|
||
|
||
## Scope OUT
|
||
|
||
- Weiterentwicklung der Preview-Klassen
|
||
- Änderung der Preview-Tests (außer notwendige Import-Anpassungen durch den Package-Umzug)
|
||
- Integration der Preview-Klassen in die neue `domain.finding`-Struktur (das ist explizit M3+)
|
||
- Löschung von Preview-Klassen, auch wenn sie wie Duplikate wirken
|
||
|
||
## Schritte
|
||
|
||
1. Branch `m1/ap09-preview-einfrieren`
|
||
2. Zielpaket wählen (`preview` empfohlen) und im Bericht begründen
|
||
3. Alle Parser-Klassen verschieben
|
||
4. Alle Validator-Klassen verschieben
|
||
5. `validation.model.ValidationResult` und `validation.model.*` mit verschieben
|
||
6. Tests entsprechend verschieben; Imports anpassen
|
||
7. `CliRunner`/`Bootstrap` auf Preview-Imports prüfen — **darf keine haben**, sonst entkoppeln
|
||
8. `package-info.java` mit Warnhinweis in jedem Preview-Unterpaket anlegen
|
||
9. README-Abschnitt „Preview-Code" ergänzen
|
||
10. `mvn clean verify` grün bekommen (alle Tests der Preview-Klassen laufen weiter mit)
|
||
11. Commit `M1-AP09: Alt-Parser und Alt-Validator nach preview-Paket, vom M1-Lauf entkoppelt`
|
||
12. Abschlussbericht schreiben
|
||
|
||
## Abnahmekriterien
|
||
|
||
- alle ursprünglich vorhandenen Parser- und Validator-Klassen liegen im Preview-Paket
|
||
- alle zugehörigen Tests laufen weiterhin grün
|
||
- `grep -rn "de.gecheckt.asv.preview" src/main/java/de/gecheckt/asv/adapter src/main/java/de/gecheckt/asv/bootstrap src/main/java/de/gecheckt/asv/application` ist **leer** (keine Referenzen aus dem aktiven Code)
|
||
- `package-info.java` mit Warnhinweis in jedem Preview-Unterpaket
|
||
- README enthält Abschnitt „Preview-Code"
|
||
- keine Klasse wurde gelöscht (`git log --diff-filter=D` für diesen Commit zeigt nur Verschiebungen)
|
||
- `mvn clean verify` ist grün
|
||
- Abschlussbericht liegt vor
|
||
|
||
## Rest-Risiken und offene Punkte
|
||
|
||
- Bei Wiederaufnahme in M3 wird zu klären sein, wie der Preview-Code an das neue Befundmodell angebunden wird. Das ist explizit M3-Aufgabe, nicht M1.
|
||
- Falls die Preview-Tests beim Package-Umzug brechen (wegen relativer Ressourcenpfade o.ä.), müssen sie einmalig angepasst werden. Das ist kein Scope-Verstoß, sondern Teil des Umzugs.
|
||
|
||
## Bericht
|
||
|
||
`docs/arbeitspakete/m1/berichte/AP09-bericht.md` nach `templates/ap-bericht.md`.
|