Files
pdf-umbenenner/docs/freigabe-v3_1.md
T

8.7 KiB
Raw Permalink Blame History

Freigabedokument V3.1 PDF-Umbenenner

Geprüfter Stand

  • Git-Branch: main
  • Versionsnummer: 3.1.267
  • Freigabedatum: 2026-05-06
  • Status: freigegeben

Zielsetzung von V3.1

V3.1 ist der konsequente Nachschlag zu V3.0: Was der Produkttest aufgedeckt hat, wird bereinigt. Kein großes Architektur-Feature, kein neues Maven-Modul gezielter UX-Schliff und Robustheit in drei Schwerpunkten:

  1. UX-Polishing sichtbare Schwächen aus dem V3.0-Produkttest behoben (#77, #80, #81, #83, #84, #88, #91)
  2. Verlauf-Tab reifen lassen Suche, Mehrfachauswahl, DB-Neuanlage (#82, #86, #87)
  3. Quick Win Mausrad-Zoom im PDF-Viewer als wertvoller Gebrauchskomfort (#32)

Die fachliche Kernverarbeitung des PDF-Umbenenners bleibt vollständig unverändert. Hexagonale Architektur, Modulstruktur, headless-Betrieb, .properties- Konfigurationswahrheit und Flyway-DB-Evolution bleiben unangetastet.


Umgesetzte Issues

# Kategorie Beschreibung
#32 GUI Strg+Mausrad-Zoom in der PDF-Vorschau: Delta-Akkumulation für Trackpad-Kompatibilität, ScrollEvent bei Strg immer konsumiert, Zoom 10500 %, Viewport-Mitte bleibt beim Zoom stabil, Fit-to-Width-Modus nach manuellem Zoom verlassen; Grab & Pan mit Handcursor im vergrößerten Zustand
#77 UX Vollständige Bestandsaufnahme aller interaktiven Elemente auf allen Tabs; fehlende Tooltips auf allen vier Tabs ergänzt; neue Konstanten ausschließlich in GuiTooltipTexts; TableColumn-Header über Column-Graphic-Pattern mit Label und Tooltip (kein Skin-/Lookup-Hack)
#80 UX Dirty-Indikator für den Konfigurations-Tab: Asterisk im Tab-Titel bei echter Nutzeränderung gegenüber Baseline-Snapshot; loadingInProgress-Flag verhindert unechte Dirty-State-Auslösung durch programmgesteuertes Laden; Bestätigungsdialog beim Verlassen mit ungespeicherten Änderungen; Kopplung mit DB-Pfad-Wechsel aus #87
#81 UX Status-ComboBox und Versuche-Tabelle zeigen lesbare deutsche Anzeigetexte statt Enum-Rohnamen; alle acht Statuswerte über ProcessingStatusPresentation abgebildet; Status-ComboBox mit „Alle Status" als GUI-internem Null-Filter; DB-Queries intern weiterhin mit Enum-Namen
#82 GUI Live-Filter im Verlauf-Tab: 300 ms Debounce-Timer, Generation-Counter für Race-Condition-Schutz, veraltete Worker-Ergebnisse werden verworfen; Such-Button und Enter starten Suche sofort; Auswahl nach jeder neuen Suche vollständig geleert
#83 UX Leere KI-Begründung im Detailbereich zeigt promptText-Platzhalter statt leerem Feld; kein Vermischen von Nutzdaten und UI-Platzhaltertext; TextArea bleibt sichtbar
#84 Bug Aktionsbuttons im Verlauf-Tab werden nach Laufende ereignisgetrieben reaktiviert unabhängig vom Terminierungsgrund (Erfolg, Fehlerabbruch, Nutzerabbruch, Leerlauf); kein manueller Workaround notwendig
#86 GUI Mehrfachauswahl im Verlauf-Tab: SelectionMode.MULTIPLE, Strg+A nur bei Tabellenfokus (kein Konflikt mit Suchfeld), Schlüssel-Snapshot vor Worker-Thread-Start, Bulk-Reset und Bulk-Delete mit Bestätigungsdialog und Partial-Success-Zusammenfassung; Detailbereich zeigt Platzhalter bei Mehrfachauswahl
#87 GUI Neuer Menüpunkt „Datenbank → Neue Datenbank anlegen...": atomarer Ablauf via Temp-Datei, Flyway auf neuesten Schema-Stand, Verbindungstest, atomarer Move mit ATOMIC_MOVE + REPLACE_EXISTING; normalisierter case-insensitiver Pfadvergleich; DB-Busy-Sperre; Konfig-Tab wechselt in Dirty-State; Hinweismeldung nach Wechsel
#88 UX Fehlerursache für FAILED_FINAL, FAILED_RETRYABLE und SKIPPED_FINAL_FAILURE im Verlauf-Tab sichtbar; Flyway-Migration ergänzt Spalte failure_details in processing_attempt; Begrenzung auf 1000 Zeichen mit „…"-Kürzung vor Persistierung; keine rohen Provider-Meldungen oder API-Schlüssel persistiert; NULL-Einträge zeigen promptText-Platzhalter
#91 Robustheit Lock-File-Pfadauflösung: absoluter Pfad direkt ohne Fallback (Abbruch bei Fehler); relativer oder unkonfigurierter Pfad zweistufig (JAR-Verzeichnis → user.home → Abbruch); fehlende Parent-Verzeichnisse automatisch angelegt; tatsächlich verwendeter absoluter Pfad beim Start auf INFO-Level geloggt; gilt für GUI- und headless Start

Nachbesserung aus dem Produkttest

# Beschreibung
#93 Produkttest-Nachbesserung: Korrekturen und Feinabstimmungen nach abgeschlossenem manuellem GUI-Produkttest gegen echte KI-Provider und echte PDFs

Architektur-Bilanz

Neu Anzahl Bemerkung
Inbound-Port-Interfaces 1 CreateNewDatabaseUseCase
Application-Use-Cases 1 DefaultCreateNewDatabaseUseCase
Outbound-Ports 2 DatabaseCreationPort, ActiveDatabaseContextPort
Outbound-Adapter 2 SqliteDatabaseCreationAdapter, SqliteActiveDatabaseContextAdapter
GUI-Bridge-Interfaces 1 GuiCreateNewDatabasePort
Flyway-Migration 1 failure_details TEXT in processing_attempt (nächste freie Versionsnummer)

Geänderte Komponenten (ausschließlich adapter-in-gui): GuiHistoryTab, GuiConfigTab, GuiTooltipTexts, Verlauf-Detailbereich, Status-ComboBox, PDF-Vorschau-Komponente, Lauf-Abschluss-Signalkette.

Nicht geändert: pdf-umbenenner-domain (außer ggf. minimaler Erweiterung für #88), pdf-umbenenner-adapter-in-cli, headless-Verarbeitungslogik, fachliche Kernverarbeitung.


Verbindlich verifizierte Spec-Punkte

  • Kein Enum-Rohname in der GUI sichtbar alle acht Statuswerte tragen Displaytext
  • promptText für leere Felder: kein Vermischen von Nutzdaten und Platzhaltertext
  • Dirty-State Konfig-Tab: programmgesteuertes Laden löst kein Dirty-Flag aus
  • Live-Filter: 300 ms Debounce, Generation-Counter, Auswahl nach Suche geleert
  • Strg+A im Verlauf-Tab: nur bei Tabellenfokus (kein Konflikt mit Suchfeld)
  • Schlüssel-Snapshot vor Bulk-Worker-Thread-Start
  • DB-Anlage: normalisierter Pfadvergleich (case-insensitive, toRealPath/Parent-Normalisierung)
  • DB-Anlage: ATOMIC_MOVE + REPLACE_EXISTING; kein halb-atomarer Fallback
  • DB-Anlage: aktive DB bleibt bei Fehler vollständig unverändert
  • Lock-File: absoluter Pfad direkt; relativer Pfad zweistufig; Pfad geloggt (INFO)
  • Strg+Mausrad: ScrollEvent immer konsumiert; Delta-Akkumulation; 10500 %
  • failure_details: max. 1000 Zeichen vor Persistierung; keine rohen Provider-Meldungen
  • Aktionsbuttons nach Laufende ereignisgetrieben reaktiviert (alle Terminierungsgründe)
  • Flyway ist die einzige Schema-Evolutionsquelle kein manuelles DDL im Code
  • Code-Kommentare auf Deutsch; Logging auf Deutsch
  • JavaDoc auf allen neuen öffentlichen Ports, Use-Cases und Adapter-Methoden

Headless-Kompatibilität

Der bestehende Batch-Betrieb über --headless bleibt vollständig erhalten. Die .properties-Datei bleibt die einzige Konfigurationswahrheit. GUI-Code initialisiert den headless Pfad nicht. Keine stillen Änderungen an Retry-Semantik, Status-Persistenz oder fachlicher Verarbeitungslogik.

Von V3.1-Änderungen betroffener headless-Pfad: Lock-File-Pfadauflösung (#91) und Flyway-Schemamigration für failure_details (#88) beide wirken beim Programmstart unabhängig von GUI oder CLI.


Datenbank-Migration

Flyway ergänzt die Tabelle processing_attempt um die Spalte failure_details:

ALTER TABLE processing_attempt ADD COLUMN failure_details TEXT;
  • Bestehende Zeilen erhalten automatisch NULL kein Datenverlust.
  • Ältere Einträge ohne Fehlerdetails zeigen in der GUI einen promptText-Platzhalter.
  • Kein SQL-CHECK-Constraint (um Importdaten nicht zu blockieren).
  • Begrenzung auf 1000 Zeichen wird ausschließlich vor Persistierung im Adapter erzwungen.

Produkttest

Produkttest: bestanden

Manueller GUI-Produkttest gegen echte KI-Provider mit echten PDFs abgeschlossen. Alle elf Issues und die Nachbesserung #93 wurden end-to-end verifiziert.


Bekannte Einschränkungen

Keine.


Nicht in V3.1

  • Automatischer Scheduler / Quellordner-Überwachung (#22) → V3.x
  • PDF-Viewer Render-DPI (#23) → V3.2
  • F1-Hilfe (#69) → V3.2
  • Dark Mode (#70) → V3.x
  • Log-Viewer in der GUI (#72) → V3.2
  • Token- und Kosten-Tracking (#74) → V3.2
  • Excel-Export (#75) → V3.2
  • Automatische Update-Prüfung (#76) → V3.2
  • Neue Maven-Module, neue KI-Provider, Architekturbrüche
  • Änderung der fachlichen Kernverarbeitung des PDF-Umbenenners

Nächste Version

V3.2 geplante Schwerpunkte: PDF-Viewer Render-DPI, F1-Hilfe, Log-Viewer, Token- und Kosten-Tracking, Excel-Export, automatische Update-Prüfung.


Freigabeaussage

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