1
0
Files
pdf-umbenenner/docs/workpackages/M2 - Arbeitspakete.md

199 lines
8.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# M2 - Arbeitspakete
## Geltungsbereich
Dieses Dokument beschreibt ausschließlich die Arbeitspakete für den definierten Meilenstein **M2 Hexagonaler Kern, Batch-Startfall und Startschutz**.
Die Arbeitspakete sind so geschnitten, dass jedes Paket in **einem Durchgang** von einer KI umgesetzt werden kann und danach wieder ein **fehlerfreier, buildbarer Stand** vorliegt.
## Konsistenz- und Schnittregeln
- Jedes Arbeitspaket liefert einen in sich geschlossenen, fehlerfreien Zwischenstand.
- Die Reihenfolge ist verbindlich, weil jedes Paket auf dem vorherigen Stand aufbaut.
- Der Fokus bleibt strikt auf **M2**.
- Es erfolgt **kein Vorgriff auf spätere Meilensteine**.
- Insbesondere sind in M2 noch **nicht** enthalten:
- Dateisystemscan des Quellordners
- PDF-Filterung oder PDF-Textauslese
- Fingerprint-Berechnung
- SQLite-Persistenz
- KI-Anbindung
- Prompt-Verarbeitung
- Dateinamensbildung
- Zielkopie
- fachliche Retry-Logik
- Verarbeitung einzelner Dokumente
---
## AP-001 Domain-Grundobjekte und Statusmodell
### Ziel
Der hexagonale Kern für den Batch-Lauf wird fachlich und technisch sauber vorbereitet.
### Inhalt
- minimale, für M2 erforderliche Domain-Grundobjekte anlegen
- Statusmodell für den Batch-Kontext anlegen, insbesondere die in M2 bereits relevanten Statuswerte
- zentrale Value Objects für den Laufkontext vorbereiten, soweit für M2 erforderlich
- klare Abgrenzung sicherstellen: keine Infrastrukturklassen, keine Adapterdetails, keine Dateisystem- oder Lock-Implementierungen in der Domain
- erste JavaDoc- und `package-info`-Beschreibungen für Domain-Verantwortung und Architekturgrenzen ergänzen
### Fertig wenn
- die Domain enthält die für M2 nötigen Kernobjekte und Statuswerte
- die Typen sind frei von Infrastrukturabhängigkeiten
- der Reactor-Build bleibt fehlerfrei
---
## AP-002 Zentrale Ports und Inbound-Vertrag für den Batch-Lauf
### Ziel
Die Anwendungsgrenzen des M2-Stands werden explizit und architektonisch sauber definiert.
### Inhalt
- zentralen Inbound-Port für den Batch-Startfall anlegen, insbesondere `RunBatchProcessingUseCase`
- für M2 erforderliche Outbound-Ports definieren, insbesondere für:
- Run-Lock
- Clock bzw. Zeitbezug, soweit für Laufkontext sinnvoll
- saubere Port-Signaturen für den Batch-Lauf modellieren
- Rückgabemodell für den Batch-Lauf so schneiden, dass Bootstrap und CLI später Exit-Codes kontrolliert ableiten können
- JavaDoc für Port-Zweck, Verantwortlichkeiten und erlaubte Abhängigkeitsrichtungen ergänzen
### Fertig wenn
- die Ports vollständig im Application-Kern definiert sind
- Inbound- und Outbound-Rollen klar getrennt sind
- noch keine technische Implementierung in Ports oder Domain eingebracht wurde
---
## AP-003 Lauf-ID-Konzept und Batch-Laufkontext
### Ziel
Jeder Programmlauf erhält einen konsistenten technischen Kontext, ohne bereits in fachliche Dokumentverarbeitung einzusteigen.
### Inhalt
- Lauf-ID-Konzept einführen
- technische Repräsentation eines Batch-Laufs bzw. Laufkontexts modellieren
- Start- und Endbezug des Laufs für M2 vorbereiten
- Schnittstelle zwischen Use Case, CLI-Adapter und Bootstrap für Übergabe bzw. Erzeugung des Laufkontexts festlegen
- sicherstellen, dass das Laufkonzept unabhängig von späterer PDF-Verarbeitung nutzbar bleibt
### Fertig wenn
- ein konsistenter Laufkontext vorhanden ist
- eine Lauf-ID je Programmlauf eindeutig bereitgestellt werden kann
- der Stand weiterhin ohne Dokumentverarbeitung buildbar und startbar ist
---
## AP-004 No-Op-Implementierung des Batch-Use-Cases
### Ziel
Der zentrale Batch-Startfall wird erstmals ausführbar, jedoch noch ohne echte Dokumentverarbeitung.
### Inhalt
- Application-Implementierung für den Inbound-Use-Case anlegen
- kontrollierten No-Op-Batch-Ablauf implementieren
- Ablaufrahmen für M2 herstellen:
- Batch-Lauf initialisieren
- Laufkontext übernehmen
- Startschutz einbinden
- sauber beenden
- noch keine Quellordnerverarbeitung, keine PDF-Verarbeitung und keine Persistenz einführen
- JavaDoc für Use-Case-Verantwortung und explizite Nicht-Ziele von M2 ergänzen
### Fertig wenn
- der Batch-Use-Case technisch aufrufbar ist
- der Ablauf kontrolliert startet und kontrolliert endet
- noch keine fachliche Dokumentverarbeitung stattfindet
---
## AP-005 CLI-/Batch-Adapter und Bootstrap-Verdrahtung
### Ziel
Der Batch-Lauf wird über einen klaren Inbound-Adapter gestartet und sauber aus dem Bootstrap verdrahtet.
### Inhalt
- CLI-/Batch-Adapter für den Programmeinstieg implementieren
- Adapter so anbinden, dass der Inbound-Use-Case ausschließlich über seine Schnittstelle aufgerufen wird
- Bootstrap-Verdrahtung für M2 vervollständigen
- Objektgraph für den M2-Stand ohne Framework-Magie und ohne Architekturbruch aufbauen
- Startpfad so strukturieren, dass spätere Meilensteine anschlussfähig bleiben
- JavaDoc und `package-info` für Adapter-In, Bootstrap und Verantwortungsgrenzen ergänzen
### Fertig wenn
- das Programm als Batch-Prozess über den CLI-Adapter startet
- der Inbound-Use-Case aus dem Bootstrap korrekt erreicht wird
- die Abhängigkeitsrichtung technisch sichtbar nach innen zeigt
---
## AP-006 Run-Lock-Port und Dateibasiertes Startschutz-Adapter
### Ziel
Der technische Startschutz wird eingeführt, damit parallele Instanzen kontrolliert verhindert werden.
### Inhalt
- Run-Lock-Port konkret für M2 ausmodellieren, falls noch nicht vollständig geschehen
- erste technische Run-Lock-Implementierung im Adapter-Out anlegen
- exklusive Lock-Datei als technische Umsetzung einführen
- Lock-Erwerb, Lock-Freigabe und sauberes Ressourcenhandling umsetzen
- Verhalten für bereits laufende Instanz definieren und in den Batch-Ablauf integrieren
- sicherstellen, dass keine Lock-Implementierungsdetails in Domain oder Application durchsickern
- JavaDoc für Startschutz, Lock-Lebensdauer und technische Grenzen ergänzen
### Fertig wenn
- eine Instanz den Lock korrekt setzt und wieder freigibt
- eine zweite parallele Instanz kontrolliert sofort beendet wird
- der Build und der normale Einzelstart weiterhin fehlerfrei funktionieren
---
## AP-007 Exit-Code-Grundverhalten und kontrollierte Laufbeendigung
### Ziel
Der M2-Stand beendet sich in allen bereits relevanten Start- und Startschutzsituationen kontrolliert und technisch eindeutig.
### Inhalt
- Exit-Code-Grundverhalten für M2 umsetzen:
- `0` für technisch ordnungsgemäß ausgeführten Lauf
- `1` für harte Start-/Bootstrap-Fehler
- Startschutz-Fall sauber in die Exit-Code-Ableitung integrieren
- kontrollierte Fehlerbehandlung zwischen Bootstrap, CLI-Adapter und Use Case vervollständigen
- M2-relevante Start- und End-Logs schärfen
- sicherstellen, dass die Exit-Code-Logik ohne spätere Fachlogik bereits stabil nutzbar ist
### Fertig wenn
- der M2-Stand in normalen und fehlerhaften Startsituationen kontrolliert endet
- Exit-Codes für M2 konsistent gesetzt werden
- der Stand weiterhin keine fachliche Dokumentverarbeitung enthält
---
## AP-008 Tests für Statusmodell, Startschutz, Verdrahtung und M2-Abschlussstand
### Ziel
Der vollständige M2-Zielzustand wird automatisiert abgesichert und als konsistenter Übergabestand nachgewiesen.
### Inhalt
- Unit-Tests für Domain-Grundobjekte und Statusmodell implementieren
- Tests für Lauf-ID- und Laufkontext-Grundverhalten implementieren
- Tests für Lock-Verhalten implementieren, insbesondere:
- Lock wird gesetzt
- Lock wird freigegeben
- zweite Instanz scheitert kontrolliert
- Tests für Bootstrap- und Use-Case-Verdrahtung ergänzen, soweit in M2 sinnvoll
- Tests für Exit-Code-Verhalten bei Startschutz- und Bootstrap-Fehlern ergänzen
- den M2-Stand abschließend auf Konsistenz, Architekturtreue und Nicht-Vorgriff auf M3+ prüfen
### Fertig wenn
- die Test-Suite für den M2-Umfang grün ist
- der definierte M2-Zielzustand vollständig erreicht ist
- ein fehlerfreier, übergabefähiger Stand vorliegt
---
## Abschlussbewertung
Die Arbeitspakete sind inhaltlich konsistent, widerspruchsfrei und sauber auf den Meilenstein **M2** zugeschnitten. Sie decken den vollständigen Zielumfang von **„Hexagonaler Kern, Batch-Startfall und Startschutz“** ab, ohne Inhalte späterer Meilensteine wie PDF-Verarbeitung, Persistenz, KI-Integration oder Dateinamensbildung vorwegzunehmen.