# V2.8 – Selektive Wiederverarbeitung und Status-Reset in der Ergebnisliste **Status:** Freigegeben **Erstellt:** 2026-04-23 **Überarbeitet:** 2026-04-23 (nach zwei Reviews, finale Version) **Autor:** Marcus (mit Claude als Mentor) --- ## Ziel V2.8 erweitert den Tab „Verarbeitungslauf" um die Möglichkeit, einzelne oder mehrere Dateien aus der Ergebnisliste gezielt erneut verarbeiten zu lassen oder deren DB-Status zurückzusetzen – ohne die gesamte Datenbank löschen zu müssen. --- ## Hintergrund ### Bisheriger Zustand - Nach einem abgeschlossenen Lauf sind alle Ergebnisse in der Ergebnisliste sichtbar - Dateien mit Status `FAILED_FINAL` oder `DONE` können nur durch manuelles Löschen der SQLite-Datenbank erneut verarbeitet werden - Es gibt keine Möglichkeit, einzelne Dateien selektiv zurückzusetzen oder neu zu starten ### Motivation - Nach Anpassung des Prompts oder Wechsel des KI-Modells sollen bereits verarbeitete Dateien erneut verarbeitet werden können – ohne Datenverlust für andere Dokumente - Permanent fehlgeschlagene Dateien sollen nach Behebung der Ursache gezielt neu gestartet werden können - Zwei klar getrennte Aktionen decken unterschiedliche Anwendungsfälle ab: sofortige Wiederverarbeitung vs. Reset für den nächsten regulären Lauf --- ## Zielbild Nach Abschluss von V2.8 kann der Benutzer: 1. Eine oder mehrere Dateien in der Ergebnisliste selektieren 2. Per „Erneut verarbeiten" einen sofortigen Mini-Lauf nur für die selektierten Dateien starten 3. Per „Status zurücksetzen" den DB-Status zurücksetzen ohne sofortige Verarbeitung – die Dateien werden beim nächsten regulären Lauf automatisch mitgenommen --- ## Fachliche Anforderungen ### Selektion in der Ergebnisliste - Es gibt genau **eine fachliche Selektion** je Ergebniszeile - Checkbox, Zeilenklick, Shift/Strg und „Alle auswählen" wirken immer auf **dieselbe Selektionsmenge** - Jede Zeile erhält eine **Checkbox** am linken Rand - **Shift/Strg-Mehrfachselektion** wie im Windows Explorer ist möglich - Eine Checkbox **„Alle auswählen"** oberhalb der Liste selektiert/deselektiert alle Einträge - Alle Status sind selektierbar: ✔ erfolgreich, ⚠ retryable, ✘ permanent, ► übersprungen - Die Selektion bleibt erhalten bis ein neuer Lauf gestartet wird - Während eines laufenden Mini-Laufs ist die Selektion **gesperrt** – Änderungen der Selektion nach Laufstart haben keinen Einfluss auf den laufenden Batch --- ### Button „Erneut verarbeiten" - **Aktion:** DB-Status der selektierten Dateien zurücksetzen + sofortiger Mini-Lauf nur für diese Dateien - **Aktiv wenn:** Kein Lauf aktiv UND mindestens 1 Eintrag selektiert - **Inaktiv wenn:** Lauf läuft ODER keine Selektion - **Verhalten:** - Der Mini-Lauf arbeitet auf einem **Snapshot** der beim Klick selektierten Einträge - DB-Status aller selektierten Einträge wird zurückgesetzt - Sofort danach startet ein Mini-Lauf ausschließlich für diese Dateien - Die Ergebnisliste wird für die selektierten Einträge live aktualisiert - Nicht selektierte Einträge bleiben unverändert in der Liste - Der Mini-Lauf verhält sich fachlich wie ein regulärer Lauf – gleiche Anwendungslogik, gleicher Use Case, nur eingeschränkte Dateimenge --- ### Button „Status zurücksetzen" - **Aktion:** Nur DB-Status der selektierten Dateien zurücksetzen, keine sofortige Verarbeitung - **Aktiv wenn:** Kein Lauf aktiv UND mindestens 1 Eintrag selektiert - **Inaktiv wenn:** Lauf läuft ODER keine Selektion - **Verhalten:** - DB-Status aller selektierten Einträge wird zurückgesetzt - Kein sofortiger Lauf - Betroffene Zeilen bleiben in der Ergebnisliste sichtbar und erhalten die Kennzeichnung **„Zurückgesetzt – wartet auf nächsten Lauf"** - Beim nächsten regulären Lauf werden die zurückgesetzten Dateien automatisch mitgenommen - **Fehlerbehandlung:** Reset läuft nach **Best-effort**-Prinzip – erfolgreich zurückgesetzte Einträge werden zurückgesetzt, fehlgeschlagene bleiben im alten Status; der Meldungs- und Zusammenfassungsbereich zeigt: - Anzahl ausgewählter Einträge - Anzahl erfolgreich zurückgesetzt - Anzahl fehlgeschlagen - Bei Fehlern: betroffene Dateinamen im Meldungsbereich --- ### Welche Status können zurückgesetzt werden Alle Status sind zurücksetzbar: | UI-Status | DB-Status | Zurücksetzbar | Verhalten im nächsten regulären Lauf | |---|---|---|---| | ✔ Erfolgreich | `DONE` | Ja | Wird erneut verarbeitet | | ⚠ Fehlgeschlagen retryable | `FAILED_RETRYABLE` | Ja | Wird erneut verarbeitet | | ✘ Fehlgeschlagen permanent | `FAILED_FINAL` | Ja | Wird erneut verarbeitet | | ► Übersprungen | `DONE` | Ja | DB-Eintrag `DONE` wird zurückgesetzt, wird erneut verarbeitet | --- ### Verhalten bei vorhandener Zieldatei (Re-Run von DONE) Wird eine bereits erfolgreich verarbeitete Datei erneut verarbeitet: - **KI schlägt identischen Zieldateinamen vor** und Zieldatei ist bereits vorhanden: Datei gilt als **✔ erfolgreich** – kein neuer Eintrag im Zielordner, kein Fehler - **KI schlägt anderen Namen vor:** Normale Verarbeitung – Dubletten-Suffix `(1)`, `(2)` wie im regulären Betrieb wenn nötig --- ### Verhalten bei fehlender oder verschobener Quelldatei Ist die Quelldatei zum Zeitpunkt des Mini-Laufs nicht mehr vorhanden: - Eintrag erhält Status **✘ permanent fehlgeschlagen** - Meldung: „Quelldatei nicht gefunden: {Dateiname}" - Kein weiterer Retry --- ### Verhalten während eines Mini-Laufs - Der **Abbrechen-Button** (Soft-Stop aus V2.7) gilt auch für den Mini-Lauf - Bei Soft-Stop: - Bereits erfolgreich verarbeitete Einträge behalten ihren neuen Endstatus - Noch nicht gestartete, aber bereits zurückgesetzte Einträge behalten den Status „Zurückgesetzt – wartet auf nächsten Lauf" und werden beim nächsten regulären Lauf mitgenommen - Der Mini-Lauf endet im UI-Zustand „abgebrochen" mit Zusammenfassung - Tab 1 „Konfiguration" wird während des Mini-Laufs gesperrt - Fortschrittsbalken zeigt den Fortschritt des Mini-Laufs – Nenner entspricht der Anzahl der selektierten Dateien - Während eines Mini-Laufs sind „Erneut verarbeiten" und „Status zurücksetzen" deaktiviert - Kein zweiter paralleler Lauf ist startbar --- ### Scope dieser Funktion Die Funktion gilt ausschließlich für Einträge der **sichtbaren Ergebnisliste der aktuellen Sitzung**. Beim Programmstart erfolgt keine Rekonstruktion der Ergebnisliste aus der DB. --- ## Nicht in V2.8 enthalten - Historien-Tab / SQLite-Ansicht (V3.0) - Bearbeitung des KI-Titels in der GUI - Manuelles Überschreiben eines Ergebnisses - Massenoperationen außerhalb der Ergebnisliste - Automatischer Re-Run nach Konfigurationsänderung - Rekonstruktion der Ergebnisliste beim Programmstart --- ## Abnahmekriterien - [ ] Jede Zeile der Ergebnisliste hat eine Checkbox - [ ] Checkbox und Zeilenklick repräsentieren dieselbe Selektionsmenge - [ ] Shift/Strg-Mehrfachselektion funktioniert wie im Windows Explorer - [ ] „Alle auswählen"-Checkbox selektiert/deselektiert alle Einträge - [ ] Alle vier Status sind selektierbar - [ ] Während eines laufenden Mini-Laufs kann die Selektion nicht verändert werden - [ ] Button „Erneut verarbeiten" ist nur aktiv wenn kein Lauf läuft und mindestens 1 Eintrag selektiert ist - [ ] Button „Status zurücksetzen" ist nur aktiv wenn kein Lauf läuft und mindestens 1 Eintrag selektiert ist - [ ] „Erneut verarbeiten" setzt DB-Status zurück und startet sofortigen Mini-Lauf nur für selektierte Dateien - [ ] Der Mini-Lauf verarbeitet genau die beim Start selektierten Einträge – spätere Selektionsänderungen haben keinen Einfluss - [ ] „Status zurücksetzen" setzt nur den DB-Status zurück, betroffene Zeilen erhalten Kennzeichnung „Zurückgesetzt – wartet auf nächsten Lauf" - [ ] Reset-Ergebnis zeigt Anzahl ausgewählter, erfolgreich zurückgesetzter und fehlgeschlagener Einträge - [ ] Bei identischem Zieldateinamen gilt der Eintrag nach Re-Run als ✔ erfolgreich - [ ] Fehlende Quelldatei führt zu ✘ permanent fehlgeschlagen mit Meldung - [ ] Mini-Lauf zeigt korrekten Fortschrittsbalken für die selektierte Dateimenge - [ ] Abbrechen-Button (Soft-Stop) funktioniert auch während eines Mini-Laufs - [ ] Nach Soft-Stop: bereits verarbeitete Einträge behalten neuen Status, nicht gestartete bleiben „Zurückgesetzt" - [ ] Tab 1 ist während des Mini-Laufs gesperrt - [ ] Nicht selektierte Einträge bleiben nach „Erneut verarbeiten" unverändert in der Liste - [ ] Beim nächsten regulären Lauf nach „Status zurücksetzen" werden zurückgesetzte Dateien mitgenommen - [ ] Während eines Mini-Laufs sind beide Buttons deaktiviert - [ ] headless-Betrieb ist unverändert funktionsfähig - [ ] `mvn clean verify` ist grün