# V2.9-Freigabe

## Geprüfter Stand

- Git-Branch: `main`
- Git-Commit (HEAD, zum Zeitpunkt der Prüfung): `6ff463b7efd935960c246dd48f9c55906699a82d`
- Datum der Prüfung: 2026-04-28

---

## Umfang gegenüber V2.0

V2.9 ist die erste umfangreiche Funktionserweiterung nach dem V2.0-Abschluss.
Der Schwerpunkt liegt auf dem neuen Tab „Verarbeitungslauf", der PDF-Vorschau,
dem editierbaren Dateinamen-Bereich und der Kommunikation von Verarbeitungsergebnissen
an den Benutzer.

### Neu in V2.9

| Thema | Issues | Beschreibung |
|---|---|---|
| Tab „Verarbeitungslauf" (Grundstruktur) | #20, #21 | Zweiter Tab mit Ergebnistabelle, Detailbereich und PDF-Vorschau; Anwendungs-Icon und System-Tray |
| PDF-Vorschau (PDFBox-Migration) | #27, #29 | Direktes Rendering via `PDFRenderer.renderImageWithDPI`; Lazy Rendering mit In-Memory-Cache; Mausrad-Navigation |
| Vollbild-Start | #28 | `stage.setMaximized(true)` beim GUI-Start |
| Letzte Konfiguration automatisch laden | #33 | `java.util.prefs.Preferences` (`lastConfigPath`) |
| Historischer Dateiname für SKIPPED-Dokumente | #41 | Spalte „Neuer Dateiname" zeigt historischen KI-Vorschlag für übersprungene Einträge |
| Detailbereich für SKIPPED-Zeilen | #30 | `GuiHistoricalDocumentContextPort` liefert historischen Kontext; Detailbereich zeigt Datum, Name und Reasoning aus früherem Lauf |
| Manuelle Dateinamen-Eingabe (nicht verarbeitete Dateien) | #31 | Dateiname-Editor für `FAILED_RETRYABLE`, `FAILED_PERMANENT`, `SKIPPED_FINAL_FAILURE` zur manuellen Kopie |
| Benutzerfreundliche Fehlermeldungen | #43 | `AiFailureMessageTranslator` übersetzt technische Fehler für `FAILED`-Einträge ins Deutsche |
| Differenzierte Status-Icons mit Farben | #44 | Unicode-Symbole `✓ ↻ × ≡ ⊘ ⟳` mit farbiger CSS-Darstellung statt Emoji |
| Einzelinstanz-Schutz | #35 | Loopback-ServerSocket verhindert parallele Instanzen; zweite Instanz beendet sich sofort |
| UX-Fixes im Detailbereich | #39, #40, #45, #46, #47 | Abstände, Button-Deaktivierung, Hinweisbereich |
| Konfigurationsbereich kompakter | #24 | Layout-Optimierungen im Konfigurationstab |
| Legacy-Datumsformat-Behandlung | #48 | `stringToInstant()`-Fehlerbehandlung; korrekte Abschlussmeldung bei SKIPPED-only-Läufen |
| Prompt-Optimierung bei Zeichenlimit | #42 | Prompt weist KI explizit zur Kürzung auf konfiguriertes Zeichenlimit an |

---

## Ausgeführte Prüfungen

| Prüfung | Ergebnis |
|---|---|
| Vollständiger Maven-Reactor-Build (`clean verify`, alle 6 Module, `-DskipPitest=true`) | **ERFOLGREICH** |
| Unit-Tests gesamt | **siehe Tabelle** |
| Shaded-JAR erzeugt unter `pdf-umbenenner-bootstrap/target/` | **ja** |
| Architekturkonsistenz (kein JavaFX in Domain/Application, keine Adapter-zu-Adapter-Abhängigkeiten) | **ja** |
| Naming-Regel (keine M/AP/V-Bezeichner in Code) | **ja** |
| Dokumentation (`gui-bedienanleitung.md`, `betrieb.md`) auf Konsistenz mit Implementierung geprüft | **ja** |

---

## Build- und Test-Ergebnisse

Ausgeführtes Kommando:
```
.\mvnw.cmd clean verify -pl pdf-umbenenner-domain,pdf-umbenenner-application,pdf-umbenenner-adapter-out,pdf-umbenenner-adapter-in-cli,pdf-umbenenner-adapter-in-gui,pdf-umbenenner-bootstrap --also-make -DskipPitest=true
```

**Gesamtergebnis: BUILD SUCCESS**

| Modul | Tests | Failures | Errors | Skipped |
|---|---|---|---|---|
| `pdf-umbenenner-domain` | 227 | 0 | 0 | 0 |
| `pdf-umbenenner-application` | 455 | 0 | 0 | 0 |
| `pdf-umbenenner-adapter-in-cli` | 8 | 0 | 0 | 0 |
| `pdf-umbenenner-adapter-in-gui` | 190 | 0 | 0 | 0 |
| `pdf-umbenenner-adapter-out` | 371 | 0 | 0 | 0 |
| `pdf-umbenenner-bootstrap` | 147 | 0 | 0 | 0 |
| **Gesamt** | **1.398** | **0** | **0** | **0** |

---

## Bekannte Einschränkungen

### #42 – Prompt-Kürzungsverhalten modellabhängig

Der Prompt weist die KI explizit an, bei Überschreitung des konfigurierten Zeichenlimits
den Titel auf die zulässige Länge zu kürzen. Ob das Modell dieser Anweisung zuverlässig
folgt, hängt vom eingesetzten Modell ab. Modelle mit schwacher Instruction-Following-Fähigkeit
können das Limit ignorieren; in diesem Fall greift die bestehende serverseitige
Validierung und der Versuch wird als Fehler klassifiziert.

---

## Offene Punkte (für nachfolgende Stufen)

Die folgenden Issues sind bekannt, aber nicht Release-Blocker für V2.9:

| Issue | Thema |
|---|---|
| #7 | Persistenz-Browser / Historienansicht in der GUI |
| #22 | Kosten-Tracking und Token-Anzeige |
| #23 | Weitere KI-Provider jenseits Claude / OpenAI-kompatibel |
| #32 | Platzhalterbild in PDF-Vorschau bei fehlendem/ungültigem PDF |
| #34 | Dokumentation des Tab-„Verarbeitungslauf"-Bedienkonzepts vervollständigen |
| #44 | Icon-Farben unter bestimmten Windows-Systemthemen prüfen |
| #49 | Abbruch eines laufenden Verarbeitungslaufs aus der GUI |
| #50 | Fortschrittsanzeige während des Verarbeitungslaufs |
| #51 | Filter- und Sortierfunktion in der Ergebnistabelle |

---

## Freigabeaussage

V2.9 ist nach Prüfung fehlerfrei buildbar. Alle Kernanforderungen der hexagonalen
Architektur sind eingehalten. Die fachliche Kernverarbeitung des PDF-Umbenenners
bleibt unverändert gegenüber V2.0. Keine Release-Blocker.

Der vollständige Maven-Reactor-Build ist grün (1.398 Tests, 0 Failures, 0 Errors,
0 Skipped). Die Dokumentation (`gui-bedienanleitung.md`, `betrieb.md`) ist auf
den V2.9-Stand gebracht. Die bekannte Einschränkung (#42) ist dokumentiert
und kein funktionaler Defekt.
