Dokumentation V3.2: Scheduler-Ausnahme, Betriebsdoku und GUI-Bedienanleitung
CLAUDE.md: - Unverrückbare Technikvorgaben: 'keine Dauerlauf-Anwendung' und 'kein interner Scheduler' mit Ausnahme-Hinweis auf GUI-Scheduler annotiert - Modulstruktur: pdf-umbenenner-adapter-in-scheduler ergänzt - Neuer Abschnitt 'Scheduler-Ausnahme (ab V3.2)' mit allen abweichenden Regeln - Aktiver Implementierungsstand: V3.2 als abgeschlossen dokumentiert - Konfigurationsparameter: scheduler.enabled und scheduler.interval.seconds ergänzt - Nicht-Ziele: 'keine interne Scheduler-Logik' mit GUI-Scheduler-Ausnahme annotiert docs/betrieb.md: - 'Umfang der GUI': von drei auf fünf Tabs aktualisiert (Scheduler + Verlauf ergänzt) - Neuer Abschnitt 'Automatischer Scheduler' mit Parametern, Autostart, Sperr- verhalten und Schließ-Verhalten - Optionale Parameter: scheduler.enabled und scheduler.interval.seconds ergänzt - Systemgrenzen: 'Kein interner Scheduler' auf headless-Kontext eingeschränkt docs/gui-bedienanleitung.md: - Abschnitt 1: fünf statt vier Tabs; Tab 3 Scheduler neu; Verlauf zu Tab 4, Prompt zu Tab 5; alle Abschnitt-Querverweise aktualisiert - Abschnitte 14-20 zu 15-21 umnummeriert - Neuer Abschnitt 14 'Tab Scheduler' mit Start/Stop, Statusanzeige, Countdown, letztem Lauf, Autostart-Fehler, Sperrbegründungen und Schließ-Dialog-Hinweis Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+103
-20
@@ -8,18 +8,20 @@ verwalten und technisch prüfen möchten.
|
||||
|
||||
## 1. Zweck und Scope der GUI
|
||||
|
||||
Die GUI gliedert sich in vier feste Tabs:
|
||||
Die GUI gliedert sich in fünf feste Tabs:
|
||||
|
||||
- **Tab 1 „Konfiguration"** – Editor, Validierungsoberfläche und technische
|
||||
Test-/Diagnoseoberfläche für die `.properties`-Datei.
|
||||
- **Tab 2 „Verarbeitungslauf"** – Start eines Batch-Laufs aus der GUI mit
|
||||
Live-Fortschritt, Ergebnisliste und KI-Begründung je Dokument (siehe Abschnitt 13).
|
||||
- **Tab 3 „Verlauf"** – Ansicht aller bisher verarbeiteten Dokumente mit Status
|
||||
und Verarbeitungsdetails aus der SQLite-Datenbank (siehe Abschnitt 16).
|
||||
- **Tab 4 „Prompt"** – Editor zum Lesen, Bearbeiten und Speichern der
|
||||
konfigurierten KI-Prompt-Datei (siehe Abschnitt 17).
|
||||
- **Tab 3 „Scheduler"** – Optionaler automatischer Scheduler für periodische
|
||||
Verarbeitungsläufe (siehe Abschnitt 14).
|
||||
- **Tab 4 „Verlauf"** – Ansicht aller bisher verarbeiteten Dokumente mit Status
|
||||
und Verarbeitungsdetails aus der SQLite-Datenbank (siehe Abschnitt 17).
|
||||
- **Tab 5 „Prompt"** – Editor zum Lesen, Bearbeiten und Speichern der
|
||||
konfigurierten KI-Prompt-Datei (siehe Abschnitt 18).
|
||||
|
||||
Am unteren Fensterrand ist permanent eine **Statuszeile** sichtbar (siehe Abschnitt 18).
|
||||
Am unteren Fensterrand ist permanent eine **Statuszeile** sichtbar (siehe Abschnitt 19).
|
||||
|
||||
Für unbeaufsichtigte, geplante Läufe (z. B. Windows Task Scheduler) bleibt
|
||||
`--headless` der empfohlene Weg.
|
||||
@@ -352,7 +354,7 @@ Konfiguration wird ein Snapshot des geladenen Zustands gespeichert. Erst wenn
|
||||
der aktuelle Formularinhalt vom Snapshot abweicht, erscheint der Dirty-Indikator.
|
||||
Programmgesteuertes Laden und Normalisieren von Feldinhalten lösen keinen
|
||||
Dirty-State aus. Auch ein DB-Pfad-Wechsel über „Neue Datenbank anlegen..."
|
||||
(Abschnitt 16a) versetzt den Konfigurations-Tab in den Dirty-State.
|
||||
(Abschnitt 17a) versetzt den Konfigurations-Tab in den Dirty-State.
|
||||
|
||||
Vor den Aktionen „Neu", „Öffnen" und beim Schließen des Fensters prüft die GUI,
|
||||
ob ungespeicherte Änderungen vorhanden sind. Ist dies der Fall, erscheint ein
|
||||
@@ -504,7 +506,7 @@ in den Lauf ein. Vor dem Start muss die Konfiguration daher gespeichert sein.
|
||||
|
||||
Farbe ist niemals das einzige Unterscheidungsmerkmal – Icon und Tooltip beschreiben
|
||||
den Status auch ohne Farbwahrnehmung eindeutig. Die vollständige Status-Mapping-Tabelle
|
||||
mit Tooltips ist in Abschnitt 19 beschrieben.
|
||||
mit Tooltips ist in Abschnitt 20 beschrieben.
|
||||
|
||||
- Ein Klick auf eine Zeile öffnet den Detailbereich rechts. Für `FAILED_*`-Einträge
|
||||
zeigt der Detailbereich eine übersetzte Fehlermeldung (Präfix `⚠`) anstelle des
|
||||
@@ -747,7 +749,88 @@ nicht gezählt – sie treten nach Laufabschluss nicht mehr auf.
|
||||
|
||||
---
|
||||
|
||||
## 14. Bekannte Einschränkungen
|
||||
## 14. Tab „Scheduler" (automatische Verarbeitungsläufe)
|
||||
|
||||
Der dritte Tab **„Scheduler"** ermöglicht den Betrieb eines optionalen, periodisch
|
||||
ausgeführten automatischen Schedulers. Er startet Verarbeitungsläufe in einem
|
||||
konfigurierten Intervall, ohne dass ein manueller Start erforderlich ist.
|
||||
|
||||
### Voraussetzung
|
||||
|
||||
Damit der Scheduler-Tab funktioniert, muss in der **gespeicherten** Konfigurationsdatei
|
||||
`scheduler.enabled=true` und ein gültiges `scheduler.interval.seconds` (Integer >= 30)
|
||||
eingetragen sein. Ungültige oder fehlende Werte werden im Tab als Fehler gemeldet; der
|
||||
Scheduler-Start ist in diesem Fall nicht möglich.
|
||||
|
||||
### Start und Stop
|
||||
|
||||
- **„Scheduler starten"** – Aktiviert den Scheduler. Der erste Lauf beginnt
|
||||
**unmittelbar** nach dem Start (kein initiales Warten auf das Intervall).
|
||||
- **„Scheduler stoppen"** – Stoppt den Scheduler. Ein laufender Verarbeitungslauf wird
|
||||
als Soft-Stop behandelt: die aktuell bearbeitete Datei wird fertig verarbeitet,
|
||||
danach hält der Scheduler an.
|
||||
|
||||
Beide Buttons wechseln je nach Zustand ihre Sichtbarkeit: Nur der zum aktuellen
|
||||
Zustand passende Button ist aktiv.
|
||||
|
||||
### Statusanzeige
|
||||
|
||||
Der Tab zeigt den aktuellen Scheduler-Zustand in Echtzeit (1-Sekunden-Takt):
|
||||
|
||||
| Zustand | Anzeige |
|
||||
|---------|---------|
|
||||
| `STOPPED` | Scheduler gestoppt |
|
||||
| `STARTING` | Scheduler wird gestartet … |
|
||||
| `RUNNING_IDLE` | Scheduler läuft – nächster Lauf in `HH:MM:SS` |
|
||||
| `RUNNING_BATCH_ACTIVE` | Scheduler läuft – Verarbeitungslauf aktiv |
|
||||
| `STOPPING_BATCH_ACTIVE` | Scheduler wird gestoppt – Lauf läuft noch … |
|
||||
|
||||
Im Zustand `RUNNING_IDLE` zeigt der Tab einen Countdown bis zum nächsten automatischen
|
||||
Verarbeitungslauf.
|
||||
|
||||
### Informationen zum letzten Lauf
|
||||
|
||||
Der Tab zeigt:
|
||||
- **Letzter Lauf beendet:** Zeitpunkt des letzten abgeschlossenen Verarbeitungslaufs
|
||||
(oder „–" wenn noch kein Lauf stattfand).
|
||||
- **Zusammenfassung:** Anzahl erfolgreich, wiederholt, fehlgeschlagen und übersprungen
|
||||
des letzten Laufs (falls verfügbar).
|
||||
- **Letzter Fehler:** Fehlermeldung des letzten nicht erfolgreichen Scheduler-Laufs,
|
||||
sofern vorhanden.
|
||||
|
||||
### Autostart-Fehler
|
||||
|
||||
Ist `scheduler.enabled=true` in der Konfiguration, versucht die GUI den Scheduler
|
||||
beim Start automatisch zu aktivieren. Schlägt dies fehl (z. B. ungültige Konfiguration,
|
||||
Intervall < 30 Sekunden), wird der Fehler im Tab angezeigt. Der Benutzer kann dann die
|
||||
Konfiguration korrigieren und den Scheduler manuell starten.
|
||||
|
||||
### Warum sind manuelle Läufe während eines aktiven Schedulers gesperrt?
|
||||
|
||||
Manuelle Läufe (Tab „Verarbeitungslauf") sind während eines aktiven Schedulers
|
||||
deaktiviert. Dadurch werden parallele Läufe auf dieselbe Datenmenge vermieden, die
|
||||
zu inkonsistenten Datenbankzuständen führen könnten. Der Start-Button im Tab
|
||||
„Verarbeitungslauf" ist während eines aktiven Schedulers deaktiviert und zeigt einen
|
||||
erklärenden Tooltip.
|
||||
|
||||
### Warum ist Tab 1 „Konfiguration" während eines aktiven Schedulers gesperrt?
|
||||
|
||||
Um sicherzustellen, dass der Scheduler mit einer konsistenten Konfiguration läuft,
|
||||
ist der Konfigurations-Editor während eines aktiven Schedulers gesperrt. Ein
|
||||
Hinweisbanner erklärt die Sperre. Konfigurationsänderungen können nach dem Stoppen
|
||||
des Schedulers vorgenommen werden.
|
||||
|
||||
### Schließen der Anwendung
|
||||
|
||||
Versucht der Benutzer das Fenster zu schließen oder die Anwendung über das
|
||||
Tray-Menü zu beenden, während der Scheduler aktiv ist oder ein Lauf läuft, erscheint
|
||||
ein Informationsdialog mit dem Hinweis, den Scheduler zunächst zu stoppen bzw. den
|
||||
laufenden Verarbeitungslauf abzuwarten. Das Schließen wird blockiert, bis der Scheduler
|
||||
gestoppt und kein Lauf mehr aktiv ist.
|
||||
|
||||
---
|
||||
|
||||
## 15. Bekannte Einschränkungen
|
||||
|
||||
| Einschränkung | Erläuterung |
|
||||
|---|---|
|
||||
@@ -755,13 +838,13 @@ nicht gezählt – sie treten nach Laufabschluss nicht mehr auf.
|
||||
| Keine Erkennung externer Änderungen | Wird die `.properties`-Datei während einer GUI-Sitzung von außen geändert, erkennt die GUI dies nicht. Die GUI arbeitet weiterhin auf dem zuletzt geladenen Stand |
|
||||
| Keine Koordination mit parallelen headless Läufen | Ein gleichzeitiger externer headless Lauf wird nicht technisch geblockt. Schreibkonflikte sind nicht ausgeschlossen, wenn dieselbe `.properties`-Datei parallel genutzt wird |
|
||||
| GUI nur für Windows | Die GUI wird offiziell nur unter Windows unterstützt; der headless Betrieb ist für Windows Server geeignet |
|
||||
| Ergebnisliste nicht persistent | Die Ergebnisliste im Verarbeitungslauf-Tab existiert nur für den aktuellen Programmstart; nach Neustart ist die Liste leer. Die dauerhaften Ergebnisse sind im Verlauf-Tab (Abschnitt 16) einsehbar. |
|
||||
| Ergebnisliste nicht persistent | Die Ergebnisliste im Verarbeitungslauf-Tab existiert nur für den aktuellen Programmstart; nach Neustart ist die Liste leer. Die dauerhaften Ergebnisse sind im Verlauf-Tab (Abschnitt 17) einsehbar. |
|
||||
| Einzelinstanz-Schutz | Wird die Anwendung ein zweites Mal gestartet, während bereits eine Instanz läuft (auch wenn diese im System-Tray minimiert ist), beendet sich die neue Instanz sofort ohne Hinweisfenster |
|
||||
| Prompt-Editor: kein automatisches Reload | Wird die Prompt-Datei während einer Bearbeitung extern geändert, erkennt die GUI dies nicht. Beim Speichern gilt Last-write-wins. |
|
||||
|
||||
---
|
||||
|
||||
## 15. System-Tray
|
||||
## 16. System-Tray
|
||||
|
||||
Wird das Hauptfenster über das Schließen-Symbol (oder Alt+F4) geschlossen, ohne dass
|
||||
ungespeicherte Änderungen oder ein aktiver Verarbeitungslauf vorliegen, **minimiert
|
||||
@@ -789,7 +872,7 @@ Ein **Doppelklick** auf das Tray-Icon hat denselben Effekt wie „Öffnen".
|
||||
|
||||
---
|
||||
|
||||
## 16. Tab „Verlauf" (Historien-Tab)
|
||||
## 17. Tab „Verlauf" (Historien-Tab)
|
||||
|
||||
Der dritte Tab **„Verlauf"** zeigt alle jemals verarbeiteten Dokumente mit Status,
|
||||
Dateinamen und Verarbeitungsdetails. Die Daten stammen direkt aus der SQLite-Datenbank,
|
||||
@@ -808,7 +891,7 @@ Die Tabelle zeigt folgende Spalten:
|
||||
|
||||
| Spalte | Inhalt |
|
||||
|--------|--------|
|
||||
| Status-Icon | Symbol und Farbe gemäß Status-Mapping-Tabelle (Abschnitt 19) |
|
||||
| Status-Icon | Symbol und Farbe gemäß Status-Mapping-Tabelle (Abschnitt 20) |
|
||||
| Quelldateiname | Ursprünglicher Dateiname der PDF-Datei |
|
||||
| Zieldateiname | Zuletzt vergebener Dateiname nach Umbenennung |
|
||||
| Quellpfad | Letzter bekannter Quellordner |
|
||||
@@ -926,7 +1009,7 @@ ohne dass der Benutzer die Auswahl erneuern muss.
|
||||
|
||||
---
|
||||
|
||||
## 16a. Neue Datenbank anlegen
|
||||
## 17a. Neue Datenbank anlegen
|
||||
|
||||
Über **Datenbank → Neue Datenbank anlegen...** in der Menüleiste kann eine neue,
|
||||
leere SQLite-Datenbank erstellt und sofort als aktive Datenbank der Anwendung
|
||||
@@ -974,7 +1057,7 @@ Der Dirty-State im Konfig-Tab und der Hinweis im Meldungsbereich erinnern daran.
|
||||
|
||||
---
|
||||
|
||||
## 17. Tab „Prompt" (Prompt-Editor)
|
||||
## 18. Tab „Prompt" (Prompt-Editor)
|
||||
|
||||
Der vierte Tab **„Prompt"** ermöglicht das Lesen, Bearbeiten und Speichern der
|
||||
KI-Prompt-Datei direkt in der GUI – ohne externen Editor.
|
||||
@@ -1019,7 +1102,7 @@ Ein Klick legt eine Prompt-Datei mit dem deutschen Standard-Template an
|
||||
|
||||
---
|
||||
|
||||
## 18. Statuszeile
|
||||
## 19. Statuszeile
|
||||
|
||||
Am unteren Rand des Hauptfensters ist permanent eine **Statuszeile** (`GuiStatusBar`)
|
||||
sichtbar. Sie ist auf allen Tabs sichtbar und zeigt drei Segmente:
|
||||
@@ -1040,7 +1123,7 @@ sichtbar. Sie ist auf allen Tabs sichtbar und zeigt drei Segmente:
|
||||
|
||||
---
|
||||
|
||||
## 19. Fehlerstatus – Bedeutung und Unterscheidung
|
||||
## 20. Fehlerstatus – Bedeutung und Unterscheidung
|
||||
|
||||
Zwei Fehlerstatus werden in der GUI klar unterschieden. Die Unterscheidung ist wichtig,
|
||||
um zu entscheiden, ob eine erneute Verarbeitung sinnvoll ist.
|
||||
@@ -1070,7 +1153,7 @@ werden nicht mehr unternommen.
|
||||
**Was passiert:** Das Dokument wird in späteren Läufen übersprungen.
|
||||
|
||||
**Mögliche Abhilfe:** Wenn die Ursache behoben wurde (z. B. OCR wurde nachträglich
|
||||
durchgeführt), kann der Status im **Verlauf-Tab** (Abschnitt 16) manuell zurückgesetzt
|
||||
durchgeführt), kann der Status im **Verlauf-Tab** (Abschnitt 17) manuell zurückgesetzt
|
||||
werden. Das Dokument wird dann beim nächsten Lauf erneut verarbeitet. Alternativ kann
|
||||
der Eintrag vollständig gelöscht werden, damit die Datei als neu erkannt wird.
|
||||
|
||||
@@ -1094,7 +1177,7 @@ beschreiben den Status auch ohne Farbwahrnehmung eindeutig.
|
||||
|
||||
---
|
||||
|
||||
## 20. Tooltips
|
||||
## 21. Tooltips
|
||||
|
||||
Auf den meisten interaktiven Elementen der GUI sind Tooltips gesetzt, die beim Hover über
|
||||
ein Element erscheinen. Sie erklären kurz den Zweck des Elements.
|
||||
@@ -1106,7 +1189,7 @@ Tooltips sind unter anderem vorhanden auf:
|
||||
- **Toolbar-Buttons** – Neu, Öffnen, Speichern, Speichern unter, Validieren,
|
||||
Technische Tests ausführen
|
||||
- **Status-Icons** im Verarbeitungslauf-Tab – Text gemäß Status-Mapping-Tabelle
|
||||
(Abschnitt 19)
|
||||
(Abschnitt 20)
|
||||
- **Buttons „Dateiname übernehmen"** und **„Zurücksetzen auf KI-Vorschlag"** im
|
||||
Dateiname-Editor (Abschnitt 13b)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user