17 KiB
M9 - Arbeitspakete
Geltungsbereich
Dieses Dokument beschreibt ausschließlich die Arbeitspakete für den definierten Meilenstein M9 – GUI-Grundgerüst, neues Betriebsmodell und Packaging-Basis.
Die Meilensteine M1 bis M8 sowie der dokumentierte Ist-Stand V1.1 werden als vollständig umgesetzt und freigegeben vorausgesetzt.
Die Arbeitspakete sind bewusst so geschnitten, dass:
- KI 1 daraus je Arbeitspaket einen klaren Einzel-Prompt ableiten kann,
- KI 2 genau dieses eine Arbeitspaket in einem Durchgang vollständig umsetzen kann,
- nach jedem Arbeitspaket wieder ein fehlerfreier, buildbarer Stand vorliegt.
Die Reihenfolge der Arbeitspakete ist verbindlich.
Zusätzliche Schnittregeln für die KI-Bearbeitung
- Pro Arbeitspaket nur die minimal notwendigen Querschnitte durch Domain, Application, Adapter, Bootstrap, Build und Tests ändern.
- Keine Annahmen treffen, die nicht durch die bestehenden Spezifikationen, den dokumentierten V1.1-Ist-Stand oder dieses Dokument gedeckt sind.
- Kein Vorgriff auf M10+.
- Kein Umbau bestehender M1–M8-Strukturen ohne direkten M9-Bezug.
- Die neue GUI wird als eigener Inbound-Adapter umgesetzt und nicht in Bootstrap vermischt.
- Der bestehende headless Batch-Betrieb darf weder technisch noch verhaltensseitig still gebrochen werden.
- Änderungen klein, fokussiert und architekturtreu halten.
- Neue Typen, CLI-Optionen, Startpfade, Packaging-Anpassungen und Tests so schneiden, dass sie aus einem einzelnen Arbeitspaket heraus klar benennbar, testbar und reviewbar sind.
- Ein Arbeitspaket darf nur dann auf GUI-Verhalten aufbauen, wenn das technische Startfundament im unmittelbar vorhergehenden Arbeitspaket bereits hergestellt wurde.
Explizit nicht Bestandteil von M9
- GUI-Konfigurationseditor
- Willkommenstext und vollständige GUI-Benutzerführung aus M10
- Öffnen/Speichern/Speichern unter in der GUI
- Bearbeitung der
.properties-Inhalte in der GUI - Datei-/Ordnerdialoge
- Provider-ComboBox, Modellabruf oder Modellfeldlogik
- sofortige Validierung im Editor
- zentraler Meldungsbereich und feldnahe Fehlermeldungen
- technische Tests und Korrekturhilfen in der GUI
- automatische Prompt-Erzeugung
- DB-/Historienanzeige
- manueller Verarbeitungslauf aus der GUI
- EXE
- Installer
- offizieller plattformübergreifender GUI-Support
- neues Konfigurationsformat
- Änderungen an fachlicher Benennungslogik, Statussemantik, Retry-Regeln oder Persistenz-Wahrheiten
Verbindliche M9-Regeln für alle Arbeitspakete
1. Betriebsmodell
Ab M9 gilt verbindlich:
- GUI ist der neue Standardstart.
- Über
--headlessstartet weiterhin der bestehende Batch-/Scheduler-Betrieb. - Die Anwendung bleibt ein einziges ausführbares JAR.
- Es gibt in M9 keine EXE und keinen Installer.
2. CLI-Option --config <pfad>
Ab M9 gilt verbindlich:
--config <pfad>steht für GUI und headless zur Verfügung.- Wird headless ohne
--configgestartet, bleibt das bisherige Default-Verhalten der Konfigurationsauflösung erhalten. - Zeigt
--config <pfad>im GUI-Start auf eine nicht existente Datei:- erscheint eine klare Fehlermeldung,
- danach verhält sich die GUI so, als wäre
--confignicht angegeben worden.
- Zeigt
--config <pfad>im headless Start auf eine nicht existente Datei, ist das ein harter Startfehler; ein stiller Fallback auf das Default-Verhalten ist in diesem Fall unzulässig.
3. Modul- und Architekturregel
Ab M9 gilt verbindlich:
- Die Modulstruktur wird um genau ein neues Modul erweitert:
pdf-umbenenner-adapter-in-gui
- Die GUI ist ein Inbound-Adapter.
- Bootstrap bleibt verantwortlich für:
- Startmoduswahl,
- Konfigurationsauflösung,
- Objektgraph,
- kontrollierten Start des passenden Adapters,
- Exit-Code-Ableitung bei harten Startfehlern.
- Domain und Application bleiben frei von JavaFX-Typen.
4. JavaFX- und Headless-Isolation
Ab M9 gilt verbindlich:
- JavaFX wird für den GUI-Betrieb mit dem ausführbaren JAR ausgeliefert.
- Der headless Start darf keine externe JavaFX-Installation voraussetzen.
- GUI-Code und JavaFX dürfen im headless Pfad nicht unnötig früh initialisiert oder geladen werden.
- Fehlen GUI-Voraussetzungen beim tatsächlichen GUI-Start, ist das ein kontrollierter GUI-Startfehler mit klarer Rückmeldung.
5. Logging-Basis und bestehender Log4j2-Stack
Ab M9 gilt verbindlich:
- Der GUI-Adapter nutzt denselben bestehenden Log4j2-Stack wie der headless Pfad.
- Es wird keine zweite Logging-Konfiguration für die GUI eingeführt.
- Logformat und Log-Pfad bleiben gegenüber dem bestehenden headless Betrieb unverändert.
6. Plattformziel
Ab M9 gilt verbindlich:
- Die GUI wird offiziell nur für Windows vorgesehen.
- Der headless Betrieb bleibt für Windows Server / Task Scheduler kompatibel.
- M9 führt noch keine GUI-Funktionalität ein, die gemappte Laufwerke oder Datei-Dialoge fachlich ausreizt; die technische Grundlage darf dem späteren Windows-zentrierten Pfadverhalten jedoch nicht widersprechen.
7. Exit-Code-Semantik
Ab M9 gilt verbindlich:
0für die normale erfolgreiche Beendigung eines headless Laufs sowie für das reguläre Beenden der GUI.1für harte Start-, Bootstrap-, Verdrahtungs-, Konfigurations- oder Initialisierungsfehler, einschließlich ungültiger CLI-Verwendung, nicht existenter--config-Datei im headless Start und GUI-Startfehlern vor erfolgreicher Anzeige der Oberfläche.- Dokumentbezogene Verarbeitungsfehler des bestehenden headless Laufs verändern dieses Exit-Code-Modell nicht.
8. GUI-Zielstand innerhalb von M9
M9 liefert kein vollständiges GUI-Produkt, sondern nur ein technisch lauffähiges Grundgerüst.
Daraus folgt:
- Es ist eine minimale JavaFX-GUI-Shell zulässig und zweckmäßig.
- Diese Shell dient nur dem Nachweis des GUI-Startpfads.
- Ein echter Konfigurationseditor ist ausdrücklich erst Gegenstand von M10.
AP-001 Neues GUI-Modul und Maven-/Reactor-Basis einführen
Voraussetzung
Keine. Dieses Arbeitspaket ist der M9-Startpunkt.
Ziel
Die Projektstruktur wird um ein eigenständiges GUI-Modul erweitert, ohne die bestehende Architektur oder den bisherigen headless Stand zu beschädigen.
Muss umgesetzt werden
- Neues Modul
pdf-umbenenner-adapter-in-guianlegen. - Modul korrekt in Parent-POM und Reactor aufnehmen.
- Abhängigkeiten so schneiden, dass das GUI-Modul als Inbound-Adapter auf die bestehenden inneren Schichten aufsetzen kann.
- JavaFX-Grundabhängigkeiten nur dort einführen, wo sie für das GUI-Modul technisch erforderlich sind.
- Sicherstellen, dass Domain, Application, Adapter-Out und CLI-Adapter frei von JavaFX-Abhängigkeiten bleiben.
- Sicherstellen, dass das GUI-Modul den vorhandenen Log4j2-Stack des Projekts ohne neue Logging-Konfiguration mitbenutzt.
- Erste neutrale Paket- und Klassenstruktur im neuen Modul anlegen, soweit für einen buildbaren Stand nötig.
- JavaDoc und
package-infofür die neue Modulverantwortung ergänzen.
Explizit nicht Teil
- tatsächlicher GUI-Start
- CLI-Parsing für neue Optionen
- Bootstrap-Anpassungen
- Packaging des gemeinsamen JARs
- GUI-Inhalt jenseits einer neutralen Modulbasis
Fertig wenn
- das neue GUI-Modul im Reactor vorhanden ist,
- die Abhängigkeitsrichtung architekturtreu bleibt,
- der Gesamtbuild weiterhin fehlerfrei ist,
- noch kein M10+-Verhalten vorweggenommen wurde.
AP-002 Startmodus- und CLI-Optionsmodell für GUI, --headless und --config einführen
Voraussetzung
AP-001 ist abgeschlossen.
Ziel
Die Anwendung kann Startmodus und Konfigurationspfad formal eindeutig interpretieren, ohne den bestehenden headless Betrieb zu verlieren.
Muss umgesetzt werden
- Technisches Modell für die Startmodi einführen:
- GUI-Standardstart,
- expliziter
--headless-Start.
- Neue CLI-Option
--config <pfad>für beide Startarten einführen. - Parsing und Validierung der relevanten Optionen im Startpfad modellieren.
- Bestehendes Default-Verhalten für headless Starts ohne
--configausdrücklich erhalten. - Klare Behandlung für fehlerhafte CLI-Verwendungen modellieren, insbesondere für:
--configohne Wert,- unbekannte oder widersprüchliche Startparameter, soweit für M9 erforderlich.
- Rückgabemodell so schneiden, dass Bootstrap daraus kontrolliert GUI-Start, headless Start oder harten Startfehler ableiten kann.
- JavaDoc für Startmodussemantik und Konfigurationspfadbezug ergänzen.
Explizit nicht Teil
- tatsächliches Laden einer GUI-Oberfläche
- konkrete Behandlung nicht existenter Konfigurationsdateien im fertigen Startfluss
- Packaging
- GUI-Benutzerführung
Fertig wenn
- Startmodus und Konfigurationspfad technisch eindeutig interpretierbar sind,
- headless ohne
--configweiterhin anschlussfähig bleibt, - der Build weiterhin fehlerfrei ist.
AP-003 Bootstrap-Verdrahtung für zwei Startpfade und kontrollierte Fehlerableitung erweitern
Voraussetzung
AP-001 und AP-002 sind abgeschlossen.
Ziel
Bootstrap kann zwischen GUI und headless sauber umschalten, ohne seine Verantwortung zu überschreiten.
Muss umgesetzt werden
- Bootstrap so erweitern, dass es abhängig vom geparsten Startmodus den passenden Inbound-Adapter startet.
- Sicherstellen, dass der bestehende headless Pfad fachlich und technisch erhalten bleibt.
- Kontrollierte Fehlerableitung für harte Startfehler ergänzen, soweit M9 dies bereits erfordert.
- Exit-Code-Modell für V2.0 an die bestehende V1.1-/M7-Semantik anschließen:
0für normale erfolgreiche GUI-/headless-Beendigung,1für harte Start-, Bootstrap-, Konfigurations- oder Initialisierungsfehler. - Behandlung des Konfigurationspfadbezugs im Bootstrap vervollständigen.
- Sicherstellen, dass Bootstrap keine GUI-Fachlogik oder M10-Editorlogik aufnimmt.
- JavaDoc und
package-infofür aktualisierte Bootstrap-Verantwortung ergänzen.
Explizit nicht Teil
- minimale GUI-Shell selbst
- JavaFX-Packaging
- GUI-Benutzerführung
- Dateieditor oder Validierungslogik
Fertig wenn
- Bootstrap technisch zwischen GUI und headless umschalten kann,
- der headless Pfad weiterhin fehlerfrei und anschlussfähig bleibt,
- harte Startfehler kontrolliert ableitbar sind,
- der Build weiterhin fehlerfrei ist.
AP-004 Minimale JavaFX-GUI-Shell als Standardstartpfad bereitstellen
Voraussetzung
AP-001 bis AP-003 sind abgeschlossen.
Ziel
Der neue Standardstartpfad führt in eine minimale, technisch saubere JavaFX-GUI-Shell, ohne bereits Editorlogik aus M10 vorzuziehen.
Muss umgesetzt werden
- Minimale JavaFX-Einstiegsklasse im GUI-Modul implementieren.
- Neutrale GUI-Shell bereitstellen, die den erfolgreichen GUI-Start technisch sichtbar macht.
- Die GUI-Shell so schneiden, dass sie später ohne Architekturbruch zum Konfigurationseditor ausgebaut werden kann.
- Sicherstellen, dass beim tatsächlichen GUI-Start klare Rückmeldungen für GUI-bezogene Startfehler möglich sind.
- Sicherstellen, dass die GUI-Shell keine M10-Funktionalität vorwegnimmt, insbesondere:
- kein Konfigurationseditor,
- keine Dateioperationen,
- keine Validierung,
- keine Providerbedienung.
- JavaDoc für Zweck und klare Nicht-Ziele der minimalen GUI-Shell ergänzen.
Explizit nicht Teil
- Willkommenstext im finalen V2.0-Sinne
- bearbeitbare Eingabefelder
- Buttons Neu, Öffnen, Speichern usw.
- Meldungsbereich
- technische Tests
Fertig wenn
- die Anwendung im Standardstart in eine minimale GUI-Shell startet,
- die Shell technisch sauber vom headless Pfad getrennt ist,
- noch kein M10+-Verhalten implementiert wurde,
- der Build weiterhin fehlerfrei ist.
AP-005 Konfigurationspfad-Semantik für GUI und headless vervollständigen
Voraussetzung
AP-001 bis AP-004 sind abgeschlossen.
Ziel
Das Verhalten von --config <pfad> ist für beide Startarten vollständig, abwärtskompatibel und kontrolliert umgesetzt.
Muss umgesetzt werden
- Verhalten für existierende Konfigurationsdateien in GUI und headless vervollständigen.
- Verhalten für nicht existente Konfigurationsdateien explizit umsetzen:
- GUI: Fehlermeldung, danach GUI-Start wie ohne
--config - headless: harter Startfehler
- GUI: Fehlermeldung, danach GUI-Start wie ohne
- Sicherstellen, dass das bestehende Default-Verhalten für headless ohne
--configunangetastet bleibt. - Kontrollierte Rückmeldungen für problematische Konfigurationspfade ergänzen.
- Keine GUI-Editorlogik oder Dateibearbeitung einführen; es geht ausschließlich um Startsemantik.
- JavaDoc für die endgültige M9-Semantik von
--configergänzen.
Explizit nicht Teil
- Bearbeiten oder Speichern der Konfiguration in der GUI
- Datei-Dialoge
- neue Konfigurationswerte
- inhaltliche Validierung der
.properties
Fertig wenn
--configfür GUI und headless kontrolliert funktioniert,- die unterschiedlichen Fehlerpfade wie festgelegt umgesetzt sind,
- headless ohne
--configweiterhin kompatibel bleibt, - der Build weiterhin fehlerfrei ist.
AP-006 Packaging-Basis für gemeinsames JAR mit integrierter JavaFX-Laufzeit herstellen
Voraussetzung
AP-001 bis AP-005 sind abgeschlossen.
Ziel
Das Projekt erzeugt weiterhin genau ein ausführbares Artefakt, das den GUI-Standardstart technisch ermöglicht und den headless Pfad nicht unnötig belastet.
Muss umgesetzt werden
- Build-/Packaging-Konfiguration so erweitern, dass weiterhin ein gemeinsames ausführbares JAR entsteht.
- JavaFX-Laufzeit und erforderliche GUI-Bestandteile in das Artefakt integrieren, soweit für den Windows-GUI-Start von M9 erforderlich.
- Sicherstellen, dass der headless Startpfad keine unnötig frühe JavaFX-Initialisierung erzwingt.
- Konkret absichern, dass der headless Startpfad ohne Initialisierung der JavaFX-Application-Klasse durchlaufen kann.
- Packaging so schneiden, dass keine EXE und kein Installer eingeführt werden.
- Bestehende Artefakterzeugung aus V1.1 nicht still zerstören.
- Dokumentierende Build-Hinweise ergänzen, soweit für M9 zwingend nötig.
Explizit nicht Teil
- vollständige Enddokumentation von V2.0
- M10-GUI-Funktionalität
- plattformübergreifendes Packaging
- EXE-/Installer-Bau
Fertig wenn
- weiterhin genau ein ausführbares JAR erzeugt wird,
- dieses JAR den M9-GUI-Start technisch tragen kann,
- der headless Startpfad weiterhin anschlussfähig ist und ohne JavaFX-Application-Initialisierung nachweisbar bleibt,
- der Build weiterhin fehlerfrei ist.
AP-007 Start-, Fehler- und Packaging-Tests für den vollständigen M9-Zielstand vervollständigen
Voraussetzung
AP-001 bis AP-006 sind abgeschlossen.
Ziel
Der vollständige M9-Zielzustand wird automatisiert abgesichert und als konsistenter Übergabestand nachgewiesen.
Muss umgesetzt werden
- Tests für den GUI-Standardstart ergänzen, soweit im Projekt technisch sinnvoll automatisierbar.
- Tests für
--headlessergänzen. - Automatisierten Nachweis ergänzen, dass der headless Start ohne Initialisierung der JavaFX-Application-Klasse durchlaufen kann.
- Tests für
--config <pfad>in beiden Startarten ergänzen. - Negativtests für ungültige oder fehlende Konfigurationspfade ergänzen, insbesondere:
- GUI mit nicht existenter Konfigurationsdatei,
- headless mit nicht existenter Konfigurationsdatei,
--configohne Wert.
- Tests ergänzen, die belegen, dass headless ohne
--configweiterhin das bisherige Default-Verhalten nutzt. - Smoke-Tests für die Artefakterzeugung und Packaging-Basis ergänzen.
- Mindestens einen technischen Test ergänzen, der das GUI-Threadingmodell belegt, z. B. den Nachweis, dass der UI-Thread während eines simulierten langen Hintergrundvorgangs nicht blockiert.
- Tests für das verbindliche Exit-Code-Modell von GUI- und headless Startpfad ergänzen, soweit im Projekt stabil automatisierbar.
- Sicherstellen, dass dokumentbezogene Batch-Funktionalität nicht versehentlich regressiert ist.
- Den M9-Stand abschließend auf Architekturtreue, Abwärtskompatibilität und Nicht-Vorgriff auf M10+ prüfen.
Explizit nicht Teil
- GUI-Editor-Tests aus M10
- Validierungs- und Modellabruf-Tests aus M11
- technische Test- und Korrekturhilfe-Tests aus M12
- Abschlussdokumentation aus M13
Fertig wenn
- der vollständige M9-Zielstand automatisiert abgesichert ist,
- GUI- und headless Startpfade kontrolliert nachgewiesen sind,
- das gemeinsame JAR reproduzierbar gebaut wird,
- der definierte M9-Zielzustand vollständig erreicht ist,
- ein fehlerfreier, übergabefähiger Stand vorliegt.
Abschlussbewertung
Die Arbeitspakete decken den vollständigen Zielumfang von M9 – GUI-Grundgerüst, neues Betriebsmodell und Packaging-Basis ab:
- neues GUI-Modul als eigener Inbound-Adapter
- GUI als Standardstart
--headlessals erhaltener Batch-/Scheduler-Pfad- neue CLI-Option
--config <pfad>für beide Startarten - kontrollierte, unterschiedliche Fehlersemantik für GUI und headless bei nicht existenter Konfigurationsdatei
- saubere Bootstrap-Umschaltung zwischen zwei Startpfaden
- minimale JavaFX-GUI-Shell als technischer Nachweis des GUI-Starts
- ein gemeinsames ausführbares JAR mit integrierter JavaFX-Basis
- Absicherung, dass headless ohne unnötige GUI-Initialisierung weiter nutzbar bleibt
- Tests für Startverhalten, Fehlerpfade und Packaging
Damit ist M9 bewusst klar von den späteren GUI-Funktionalitäten aus M10 bis M13 getrennt und liefert dennoch einen eigenständig lauffähigen, architekturtreuen und reviewbaren Zwischenstand.