1
0

Arbeitspakete für M3 überarbeitet

This commit is contained in:
2026-04-01 17:10:40 +02:00
parent 3656f665bb
commit d425815788

View File

@@ -8,13 +8,20 @@ Die Arbeitspakete sind so geschnitten, dass jedes Paket in **einem Durchgang** v
Die Meilensteine **M1** und **M2** werden als vollständig umgesetzt vorausgesetzt. Die Meilensteine **M1** und **M2** werden als vollständig umgesetzt vorausgesetzt.
## Konsistenz- und Schnittregeln ## Zusätzliche Schnittregeln für die KI-Bearbeitung
- Jedes Arbeitspaket liefert einen in sich geschlossenen, fehlerfreien Zwischenstand. - Jedes Arbeitspaket muss so eindeutig sein, dass daraus ein **einzelner Prompt** für eine umsetzende KI abgeleitet werden kann.
- Jedes Arbeitspaket beschreibt deshalb:
- den **konkreten Implementierungsumfang**,
- die **klaren Nicht-Ziele**,
- sowie **prüfbare Fertig-Kriterien**.
- Es dürfen innerhalb eines Arbeitspakets nur die **minimal notwendigen Querschnitte** durch Domain, Application, Adapter und Bootstrap geändert werden.
- Die Reihenfolge ist verbindlich, weil jedes Paket auf dem vorherigen Stand aufbaut. - Die Reihenfolge ist verbindlich, weil jedes Paket auf dem vorherigen Stand aufbaut.
- Der Fokus bleibt strikt auf **M3**. - Der Fokus bleibt strikt auf **M3**.
- Es erfolgt **kein Vorgriff auf spätere Meilensteine**. - Es erfolgt **kein Vorgriff auf spätere Meilensteine**.
- Insbesondere sind in M3 noch **nicht** enthalten:
## Explizit nicht Bestandteil von M3
- Fingerprint-Berechnung - Fingerprint-Berechnung
- SQLite-Persistenz - SQLite-Persistenz
- Idempotenzlogik über frühere Läufe - Idempotenzlogik über frühere Läufe
@@ -24,180 +31,288 @@ Die Meilensteine **M1** und **M2** werden als vollständig umgesetzt vorausgeset
- Dateinamensbildung - Dateinamensbildung
- Zielkopie in den Zielordner - Zielkopie in den Zielordner
- laufübergreifende Retry-Logik - laufübergreifende Retry-Logik
- manuelle Nachbearbeitung
--- ---
## AP-001 Dateikandidat-Modell und Ports für Quellzugriff und PDF-Auslese ## AP-001 M3-Kernobjekte und Outbound-Port-Verträge für Quellkandidaten und PDF-Auslese
### Ziel ### Ziel
Die für M3 nötigen fachnahen Kernobjekte sowie die neuen Outbound-Ports werden architekturtreu eingeführt. Die für M3 benötigten fachnahen Kernobjekte und Application-Verträge werden präzise eingeführt, ohne Infrastruktur in Domain oder Application hineinzuziehen.
### Inhalt ### Inhalt
- minimale Domain- bzw. Application-Typen für den M3-Kontext anlegen, insbesondere für: - neue M3-relevante Kernobjekte bzw. Application-nahe Typen anlegen, insbesondere für:
- Quelldokument bzw. Verarbeitungskandidat - Verarbeitungskandidat aus dem Quellordner,
- extrahierten Dokumenttext - Extraktionsergebnis eines einzelnen PDF-Dokuments,
- Seitenzahl - Seitenzahl,
- fachlich-technische Bewertung des Extraktionsergebnisses - dokumentbezogenes M3-Verarbeitungsergebnis bzw. M3-Entscheidung.
- Outbound-Ports für M3 definieren, insbesondere für: - Outbound-Ports definieren für:
- Quellordnerzugriff - Lesen der Verarbeitungskandidaten aus dem Quellordner,
- PDF-Text- und Seitenzahlextraktion - Extraktion von Text und Seitenzahl aus genau einem PDF-Kandidaten.
- Port-Signaturen so schneiden, dass Dateisystem und PDFBox weiterhin ausschließlich in Adapter-Out verbleiben - Port-Verträge so schneiden, dass **weder `Path`/`File` noch PDFBox-Typen** in Domain oder Application durchsickern.
- klare Abgrenzung sicherstellen: keine Persistenz, keine KI, keine Zielkopie und keine Dateinamensbildung in Domain oder Application - Rückgabemodelle so anlegen, dass spätere APs daraus sauber zwischen
- JavaDoc und `package-info` für neue Verantwortlichkeiten und Architekturgrenzen ergänzen - technisch erfolgreich extrahiert,
- fachlich nicht verarbeitbar,
- und technisch fehlgeschlagen
unterscheiden können.
- JavaDoc und `package-info` für Verantwortlichkeiten und Architekturgrenzen ergänzen.
### Explizit nicht Teil
- Dateisystem-Implementierung
- PDFBox-Implementierung
- fachliche Bewertung „brauchbarer Text"
- Seitenlimit-Prüfung
- Logging, Bootstrap oder CLI-Anpassungen
### Fertig wenn ### Fertig wenn
- die M3-relevanten Kernobjekte und Ports vorhanden sind - die M3-relevanten Typen und Port-Verträge vorhanden sind,
- die neuen Typen frei von Infrastrukturabhängigkeiten sind - die neuen Typen frei von Infrastrukturabhängigkeiten sind,
- der Build weiterhin fehlerfrei ist - der Build weiterhin fehlerfrei ist.
--- ---
## AP-002 Dateisystem-Adapter für Quellordnerzugriff und Kandidatenermittlung ## AP-002 Dateisystem-Adapter für Quellordnerzugriff und deterministische PDF-Kandidatenermittlung
### Ziel ### Ziel
Der Batch-Lauf kann den konfigurierten Quellordner technisch lesen und daraus PDF-Verarbeitungskandidaten bestimmen. Der Batch-Lauf kann den konfigurierten Quellordner lesen und daraus genau die PDFs als Verarbeitungskandidaten bereitstellen, die in M3 berücksichtigt werden dürfen.
### Inhalt ### Inhalt
- Dateisystem-Adapter für den Quellordnerzugriff implementieren - Dateisystem-Adapter für den Quellordnerzugriff implementieren.
- Kandidatenermittlung für PDF-Dateien gemäß fachlicher Regel umsetzen, dass PDFs im Quellordner Verarbeitungskandidaten sind - Kandidatenermittlung so umsetzen, dass **PDF-Dateien im Quellordner** als Verarbeitungskandidaten geliefert werden.
- die gelieferten Kandidaten in einer stabilen, für die Application nutzbaren Form bereitstellen - explizit sicherstellen:
- technische Fehler beim Quellordnerzugriff kontrolliert in den Portvertrag überführen - **Nicht-PDF-Dateien** sind keine Kandidaten,
- sicherstellen, dass noch keine Fingerprint-, Persistenz- oder KI-Logik in den Adapter einfließt - Verzeichnisse sind keine Kandidaten,
- JavaDoc für Quellordnerzugriff, Kandidatenermittlung und technische Grenzen ergänzen - eine zusätzliche Rekursion in Unterordnern ist **nicht** Bestandteil von M3.
- die Kandidaten in **deterministischer, stabiler Reihenfolge** an die Application liefern.
- technische Fehler beim Zugriff auf einzelne Dateisystemobjekte oder beim Lesen des Quellordners kontrolliert in den Port-Vertrag überführen.
- JavaDoc für Quellordnerzugriff, Kandidatenbegriff und technische Grenzen ergänzen.
### Explizit nicht Teil
- PDF-Textauslese
- Seitenzahlerkennung
- Persistenz, Fingerprint, KI, Zielkopie
- Bewertung „brauchbarer Text"
- Exit-Code-Logik
### Fertig wenn ### Fertig wenn
- der Quellordner technisch ausgelesen werden kann - der Quellordner technisch ausgelesen werden kann,
- PDF-Verarbeitungskandidaten über den definierten Port verfügbar sind - nur zulässige PDF-Kandidaten über den definierten Port verfügbar sind,
- der Stand ohne weitere M3-Funktionalität fehlerfrei buildbar bleibt - die Kandidatenreihenfolge deterministisch ist,
- der Stand fehlerfrei buildbar bleibt.
--- ---
## AP-003 PDFBox-Adapter für Textauslese und Seitenzahl ## AP-003 PDFBox-Adapter für Textauslese, Seitenzahlerkennung und technische Extraktionsfehler
### Ziel ### Ziel
Für einen einzelnen Verarbeitungskandidaten können Textinhalt und Seitenzahl technisch extrahiert werden. Für genau einen Verarbeitungskandidaten können Textinhalt und Seitenzahl technisch extrahiert werden; technische Extraktionsprobleme werden dabei kontrolliert abgebildet.
### Inhalt ### Inhalt
- PDFBox-basierten Adapter für die PDF-Auslese implementieren - PDFBox-basierten Adapter für die Auslese eines einzelnen PDF-Kandidaten implementieren.
- Extraktion von Text und Seitenzahl in einem konsistenten Rückgabemodell bereitstellen - Extraktion von
- technische Fehlerfälle aus PDF-Verarbeitung kontrolliert behandeln - vollständigem Textinhalt im M3-Sinne,
- keine fachliche Benennungslogik, keine KI-Vorbereitung und keine Persistenz in den Adapter aufnehmen - sowie Seitenzahl
- sicherstellen, dass der Adapter nur über den definierten Outbound-Port genutzt wird in einem konsistenten Rückgabemodell bereitstellen.
- JavaDoc für PDF-Auslese, Seitenzahl und Fehlerverhalten ergänzen - technische Extraktionsprobleme kontrolliert in den Port-Vertrag überführen, insbesondere für Fälle wie:
- PDF kann nicht gelesen werden,
- PDF ist defekt oder unbrauchbar,
- sonstige technische Fehler während der Auslese.
- sicherstellen, dass PDFBox ausschließlich im Adapter-Out verbleibt.
- JavaDoc für PDF-Auslese, Seitenzahl und technisches Fehlerverhalten ergänzen.
### Explizit nicht Teil
- fachliche Bewertung des extrahierten Texts
- Seitenlimit-Prüfung
- Batch-Orchestrierung
- Logging-Strategie auf Laufebene
- Bootstrap- und CLI-Anpassungen
### Fertig wenn ### Fertig wenn
- Text und Seitenzahl für ein PDF technisch extrahierbar sind - Text und Seitenzahl für ein PDF technisch extrahierbar sind,
- PDFBox ausschließlich im Adapter-Out verankert ist - technische Extraktionsfehler kontrolliert als Adapter-Ergebnis vorliegen,
- der Build weiterhin fehlerfrei bleibt - PDFBox ausschließlich im Adapter-Out verankert ist,
- der Build weiterhin fehlerfrei ist.
--- ---
## AP-004 Konfigurierbares Seitenlimit und Bewertung „brauchbarer Text“ ## AP-004 Konfigurierbares Seitenlimit und deterministische Bewertung „brauchbarer Text“
### Ziel ### Ziel
Die M3-relevanten Inhaltsvorprüfungen werden fachlich-technisch sauber im Kern modelliert. Die M3-Vorprüfungen werden fachnah und beobachtbar modelliert, sodass jedes Dokument nach der Extraktion eindeutig bewertet werden kann.
### Inhalt ### Inhalt
- M3-relevante Konfigurationswerte vervollständigen, insbesondere das Seitenlimit, soweit im bisherigen Stand noch nicht vollständig nutzbar - M3-relevante Konfigurationswerte vervollständigen, insbesondere das **konfigurierbare Seitenlimit**.
- Bewertungslogik für „brauchbaren Text“ im fachnahen Kern umsetzen - fachliche Bewertungslogik für **„brauchbaren Text“** im Kern umsetzen.
- Prüfung auf Seitenlimitüberschreitung umsetzen - für M3 den Begriff **deterministisch** schneiden:
- Ergebnis so modellieren, dass die Application zwischen verarbeitbaren und nicht verarbeitbaren Kandidaten unterscheiden kann - nach Normalisierung des extrahierten Texts bleibt **mindestens ein Buchstabe oder eine Ziffer** erhalten,
- festlegen und technisch absichern, dass bei fehlendem brauchbarem Text oder überschrittenem Seitenlimit die Verarbeitung dieses Dokuments an dieser Stelle endet - reiner Leerraum bzw. nur bedeutungslose Restzeichen gelten **nicht** als brauchbarer Text.
- keine KI-Schnittstelle und keine spätere Retry-/Persistenzlogik vorwegnehmen - Prüfung auf **Seitenlimitüberschreitung** umsetzen.
- JavaDoc für Bewertungsregeln, Grenzen und Nicht-Ziele von M3 ergänzen - das Ergebnis so modellieren, dass die Application pro Dokument eindeutig unterscheiden kann zwischen:
- M3-Vorprüfung bestanden,
- deterministischem Inhaltsfehler „kein brauchbarer Text",
- deterministischem Inhaltsfehler „Seitenlimit überschritten“.
- festlegen und technisch absichern, dass bei diesen beiden Inhaltsfehlern die Verarbeitung **dieses Dokuments** in M3 endet.
- JavaDoc für Bewertungsregeln, Grenzen und Nicht-Ziele von M3 ergänzen.
### Explizit nicht Teil
- technische PDF-Auslese
- Batch-Schleife über alle Kandidaten
- Persistenz- oder Retry-Logik
- KI-Schnittstelle oder KI-Aufruf
- Dateinamensbildung oder Zielkopie
### Fertig wenn ### Fertig wenn
- brauchbarer Text und Seitenlimit technisch bewertbar sind - brauchbarer Text und Seitenlimit technisch bewertbar sind,
- nicht verarbeitbare PDFs sauber erkannt werden - die beiden deterministischen Inhaltsfehler sauber erkannt werden,
- der Stand weiterhin ohne KI und Persistenz buildbar und startbar ist - die Bewertungsregeln eindeutig und testbar dokumentiert sind,
- der Stand weiterhin ohne KI und Persistenz buildbar ist.
--- ---
## AP-005 Integration in den Batch-Use-Case: Scannen, Extrahieren, Vorprüfen ## AP-005 Integration in den Batch-Use-Case: Scannen, Extrahieren, Vorprüfen und kontrolliertes Ende pro Dokument
### Ziel ### Ziel
Der M2-No-Op-Batch-Lauf wird zu einem echten M3-Verarbeitungslauf erweitert, jedoch noch ohne KI und ohne Ergebnisdatei. Der M2-No-Op-Batch-Lauf wird zu einem echten M3-Verarbeitungslauf erweitert, jedoch weiterhin ohne KI, ohne Persistenz und ohne Ergebnisdatei.
### Inhalt ### Inhalt
- bestehenden Batch-Use-Case so erweitern, dass er: - bestehenden Batch-Use-Case so erweitern, dass er:
- den Quellordner scannt - den Quellordner scannt,
- PDF-Kandidaten lädt - PDF-Kandidaten lädt,
- pro Kandidat Text und Seitenzahl extrahiert - pro Kandidat Text und Seitenzahl extrahiert,
- die M3-Vorprüfungen ausführt - die M3-Vorprüfungen ausführt,
- ersten Metadatenfluss für einzelne Dokumente zwischen Adapter-In, Application und Adapter-Out herstellen - pro Kandidat ein eindeutiges M3-Verarbeitungsergebnis erzeugt.
- verarbeitbare und nicht verarbeitbare Kandidaten im Ablauf sauber unterscheiden - sicherstellen, dass ein Dokument nach bestandener M3-Vorprüfung **kontrolliert endet**, ohne bereits M4+-Funktionalität anzustoßen.
- sicherstellen, dass der Lauf trotz fehlender Folge-Meilensteine kontrolliert endet - sicherstellen, dass Dokumente mit den Inhaltsfehlern
- keine Persistenz, keine Fingerprints, keine KI-Aufrufe und keine Zielkopie einführen - kein brauchbarer Text“ und
- JavaDoc für Ablaufgrenzen und den M3-Verarbeitungsrahmen ergänzen - „Seitenlimit überschritten
ebenfalls **pro Dokument kontrolliert enden**.
- ersten durchgängigen Metadatenfluss für einzelne Dokumente zwischen Adapter-In, Application und Adapter-Out herstellen.
- keinerlei künstliche Vorab-Schnittstelle für KI einführen, nur um M3 abzuschließen.
- JavaDoc für Ablaufgrenzen und den M3-Verarbeitungsrahmen ergänzen.
### Explizit nicht Teil
- Persistenz
- Fingerprints
- KI-Aufrufe
- Dateinamensbildung
- Zielkopie
- laufübergreifende Retry-Entscheidungen
### Fertig wenn ### Fertig wenn
- der Batch-Lauf den Quellordner tatsächlich verarbeitet - der Batch-Lauf den Quellordner tatsächlich verarbeitet,
- pro PDF ein kontrollierter M3-Ablauf stattfindet - pro PDF ein kontrollierter M3-Ablauf stattfindet,
- noch keine Funktionalität aus M4+ vorweggenommen wurde - auch der M3-Happy-Path ohne KI und ohne Ergebnisdatei sauber endet,
- noch keine Funktionalität aus M4+ vorweggenommen wurde.
--- ---
## AP-006 Fehlerklassifikation im M3-Lauf und kontrolliertes Logging ## AP-006 Dokumentbezogene Fehlerklassifikation und M3-Logging
### Ziel ### Ziel
Die in M3 bereits fachlich relevanten Fehlerfälle werden im Lauf sauber eingeordnet und nachvollziehbar protokolliert. Die in M3 bereits relevanten dokumentbezogenen Ergebnisse und Fehlerfälle werden eindeutig klassifiziert und nachvollziehbar protokolliert.
### Inhalt ### Inhalt
- Fehlerfall „kein brauchbarer Text“ als deterministischen Inhaltsfehler im M3-Kontext abbilden - folgende dokumentbezogenen M3-Fälle sauber unterscheiden und abbilden:
- Fehlerfall „Seitenlimit überschritten“ als deterministischen Inhaltsfehler im M3-Kontext abbilden - Vorprüfung bestanden,
- Logging für Kandidatenerkennung, Extraktionsergebnis und Vorprüfungsentscheidungen schärfen - deterministischer Inhaltsfehler „kein brauchbarer Text",
- sicherstellen, dass diese Fälle pro Dokument kontrolliert behandelt werden und den gesamten Lauf nicht unnötig abbrechen - deterministischer Inhaltsfehler „Seitenlimit überschritten",
- sicherstellen, dass aus diesen Fällen heraus keine Folgefunktionalität späterer Meilensteine angestoßen wird - technischer Dokumentfehler bei Kandidatenzugriff oder PDF-Extraktion.
- JavaDoc für Fehlersemantik und M3-spezifische Laufentscheidungen ergänzen - Logging für folgende Punkte schärfen:
- Kandidat erkannt,
- Extraktion erfolgreich oder technisch fehlgeschlagen,
- Vorprüfung bestanden oder mit konkretem Grund beendet.
- sicherstellen, dass **dokumentbezogene** Fehler den gesamten Lauf nicht unnötig abbrechen.
- sicherstellen, dass aus dokumentbezogenen M3-Fehlern keine Folgefunktionalität späterer Meilensteine ausgelöst wird.
- dokumentbezogene technische Fehler ausdrücklich **nicht** als deterministische Inhaltsfehler modellieren.
- JavaDoc für Fehlersemantik und M3-spezifische Laufentscheidungen ergänzen.
### Explizit nicht Teil
- Exit-Code-Neudefinition für den gesamten Prozess
- Persistenz einer Historie
- Retry-Logik
- KI, Dateinamensbildung oder Zielkopie
### Fertig wenn ### Fertig wenn
- die M3-Fehlerfälle nachvollziehbar behandelt und geloggt werden - die dokumentbezogenen M3-Ergebnisse und Fehlerfälle eindeutig unterscheidbar sind,
- der Batch-Lauf bei gemischten Kandidaten kontrolliert weiterlaufen kann - gemischte Läufe mit erfolgreichen Vorprüfungen, Inhaltsfehlern und technischen Dokumentfehlern kontrolliert weiterlaufen,
- weiterhin keine KI-Anbindung oder Persistenz enthalten ist - die Logs die Dokumententscheidung nachvollziehbar machen,
- weiterhin keine M4+-Funktionalität enthalten ist.
--- ---
## AP-007 Bootstrap- und CLI-Anpassungen für den M3-Stand ## AP-007 Bootstrap- und CLI-Anpassungen für M3-Konfiguration, Verdrahtung und Exit-Code-Semantik
### Ziel ### Ziel
Der Programmeinstieg ist an den erweiterten M3-Lauf angepasst und der Gesamtstand bleibt als Batch-Anwendung sauber ausführbar. Der Programmeinstieg ist sauber an den M3-Lauf angepasst; M2-Startschutz und M2-Grundverhalten bleiben erhalten, werden aber für die neuen M3-Fälle präzisiert.
### Inhalt ### Inhalt
- Bootstrap-Verdrahtung auf die neuen M3-Ports und Adapter erweitern - Bootstrap-Verdrahtung auf die neuen M3-Ports, Adapter und Bewertungsbausteine erweitern.
- CLI-/Batch-Startpfad auf den M3-Verarbeitungsablauf ausrichten - CLI-/Batch-Startpfad auf den realen M3-Verarbeitungsablauf ausrichten.
- Konfigurationsvalidierung für M3-relevante Parameter im Startpfad ergänzen, soweit für Quellordnerzugriff und Seitenlimit erforderlich - M3-relevante Startvalidierung ergänzen, insbesondere für:
- sicherstellen, dass Startschutz, Exit-Code-Grundverhalten und kontrollierte Laufbeendigung aus M2 intakt bleiben - Quellordner vorhanden,
- Smoke-Verhalten des Programms für den M3-Stand nachvollziehbar halten - Quellordner ist lesbares Verzeichnis,
- JavaDoc und `package-info` für aktualisierte Verdrahtung und Modulgrenzen ergänzen - Seitenlimit ist gültig und technisch nutzbar.
- Exit-Code-Semantik für M3 explizit absichern:
- **Exit-Code 0**, wenn der Lauf technisch ordnungsgemäß durchgeführt wurde, auch wenn einzelne Dokumente mit M3-Inhaltsfehlern oder technischen Dokumentfehlern enden,
- **Exit-Code 1** bei harten Start-, Bootstrap- oder Konfigurationsfehlern, insbesondere wenn der Lauf wegen ungültiger Startvoraussetzungen gar nicht sinnvoll beginnen kann.
- sicherstellen, dass der bestehende M2-Startschutz und die kontrollierte Laufbeendigung erhalten bleiben und nicht neu erfunden werden.
- JavaDoc und `package-info` für aktualisierte Verdrahtung, Konfiguration und Modulgrenzen ergänzen.
### Explizit nicht Teil
- neue fachliche Dokumentverarbeitung jenseits von M3
- Persistenz- oder KI-Verdrahtung
- spätere Retry- oder Idempotenzlogik
### Fertig wenn ### Fertig wenn
- das Programm im M3-Stand vollständig startbar ist - das Programm im M3-Stand vollständig startbar ist,
- die neuen Adapter korrekt verdrahtet sind - die neuen Adapter korrekt verdrahtet sind,
- der Batch-Lauf kontrolliert endet und der Build fehlerfrei bleibt - die M3-Startvalidierung greift,
- die Exit-Code-Semantik für dokumentbezogene Fehler versus harte Startfehler eindeutig umgesetzt ist,
- der Build fehlerfrei bleibt.
--- ---
## AP-008 Tests für Kandidatenermittlung, PDF-Auslese, Vorprüfungen und M3-Abschlussstand ## AP-008 Tests für Filterlogik, Extraktion, Vorprüfungen, M3-Happy-Path und Exit-Code-Verhalten
### Ziel ### Ziel
Der vollständige M3-Zielzustand wird automatisiert abgesichert und als konsistenter Übergabestand nachgewiesen. Der vollständige M3-Zielzustand wird automatisiert abgesichert und als konsistenter Übergabestand nachgewiesen.
### Inhalt ### Inhalt
- Unit-Tests für die Kandidatenermittlung von PDF-Dateien implementieren - Unit-Tests für die PDF-Kandidatenermittlung implementieren, insbesondere für:
- Tests für PDF-Textauslese und Seitenzahlerkennung implementieren - PDF-Datei wird erkannt,
- Tests für die Bewertung „brauchbarer Text“ implementieren - Nicht-PDF-Datei wird ignoriert,
- Tests für den Fehlerfall „Seitenlimit überschritten“ implementieren - Verzeichnis wird ignoriert,
- Tests ergänzen, die belegen, dass Dokumente mit fehlendem brauchbarem Text oder überschrittenem Seitenlimit im M3-Ablauf kontrolliert enden und keine Folgefunktionalität späterer Meilensteine auslösen - Reihenfolge ist deterministisch.
- Tests für Batch-Use-Case-Integration und Bootstrap-Verdrahtung ergänzen, soweit in M3 sinnvoll - Tests für PDF-Textauslese und Seitenzahlerkennung implementieren.
- den M3-Stand abschließend auf Konsistenz, Architekturtreue und Nicht-Vorgriff auf M4+ prüfen - Tests für technische Extraktionsfehler implementieren.
- Tests für die deterministische Bewertung „brauchbarer Text“ implementieren.
- Tests für den Fehlerfall „Seitenlimit überschritten“ implementieren.
- Tests ergänzen, die belegen, dass Dokumente mit
- fehlendem brauchbarem Text,
- überschrittenem Seitenlimit,
- oder technischem Dokumentfehler
im M3-Ablauf kontrolliert enden und den Gesamtbatch nicht unnötig abbrechen.
- explizite Tests für den **M3-Happy-Path** ergänzen: gültige PDF wird erkannt, extrahiert, vorgeprüft und endet kontrolliert **ohne** KI-Aufruf und **ohne** Zielkopie.
- Tests für Exit-Code-Verhalten ergänzen:
- `0` bei technisch ordnungsgemäßem Lauf trotz dokumentbezogener Fehler,
- `1` bei harten Start-/Bootstrap-/Konfigurationsfehlern.
- Tests für Bootstrap- und Use-Case-Verdrahtung ergänzen, soweit in M3 sinnvoll.
- den M3-Stand abschließend auf Konsistenz, Architekturtreue und Nicht-Vorgriff auf M4+ prüfen.
### Explizit nicht Teil
- Tests für KI, Persistenz, Fingerprint oder Zielkopie
- Tests für spätere Retry-Logik
### Fertig wenn ### Fertig wenn
- die Test-Suite für den M3-Umfang grün ist - die Test-Suite für den M3-Umfang grün ist,
- der definierte M3-Zielzustand vollständig erreicht ist - der definierte M3-Zielzustand vollständig erreicht ist,
- ein fehlerfreier, übergabefähiger Stand vorliegt - die wichtigsten M3-Randfälle einschließlich Happy-Path und Exit-Code-Semantik automatisiert abgesichert sind,
- ein fehlerfreier, übergabefähiger Stand vorliegt.
--- ---
## Abschlussbewertung ## Abschlussbewertung
Die Arbeitspakete sind inhaltlich konsistent, widerspruchsfrei und sauber auf den Meilenstein **M3** zugeschnitten. Sie decken den vollständigen Zielumfang von **„Dateisystemzugriff, Kandidatenermittlung und PDF-Textauslese“** ab, ohne Inhalte späterer Meilensteine wie Fingerprint, Persistenz, KI-Integration, Dateinamensbildung oder Zielkopie vorwegzunehmen. Die Arbeitspakete sind bewusst so nachgeschärft, dass sie für eine **zweistufige KI-Bearbeitung** geeignet sind: Eine KI kann aus jedem Arbeitspaket einen präzisen Prompt ableiten, und eine zweite KI kann das jeweilige Paket anschließend ohne implizite Annahmen vollständig umsetzen.
Der vollständige M3-Zielzustand aus `meilensteine.md` wird abgedeckt. Gleichzeitig bleiben die Grenzen zu M1, M2 und allen späteren Meilensteinen gewahrt.