From 14da7ee789cd25593c9ffde26634cf18ce457f67 Mon Sep 17 00:00:00 2001 From: Marcus van Elst Date: Wed, 6 May 2026 17:04:23 +0200 Subject: [PATCH] Dokumentation V3.2: Scheduler-Ausnahme, Betriebsdoku und GUI-Bedienanleitung MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- CLAUDE.md | 29 ++++++++- docs/betrieb.md | 45 ++++++++++++- docs/gui-bedienanleitung.md | 123 ++++++++++++++++++++++++++++++------ 3 files changed, 172 insertions(+), 25 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 0f6fba9..f67439f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -56,8 +56,8 @@ Wenn Dokumente fehlen, unklar sind oder sich widersprechen, nicht raten und kein - `--config ` steht für GUI und headless zur Verfügung - kein Webserver - kein Applikationsserver -- keine Dauerlauf-Anwendung -- kein interner Scheduler +- keine Dauerlauf-Anwendung (Ausnahme: GUI-Modus mit aktivem Scheduler, s. Scheduler-Ausnahme) +- kein interner Scheduler (Ausnahme: optionaler GUI-Scheduler ab V3.2, s. Scheduler-Ausnahme) - das Shade-JAR bleibt das primäre Distributionsartefakt - zusätzlicher nativer Windows-Installer (MSI) ab V3.0 via Maven-Profil `release` (jpackage, WiX Toolset 3.x im PATH erforderlich); der Normalbuild `mvn clean verify` bleibt vom Profil unberührt und benötigt kein WiX - Log4j2 für Logging @@ -77,9 +77,28 @@ Wenn Dokumente fehlen, unklar sind oder sich widersprechen, nicht raten und kein - `pdf-umbenenner-application` - `pdf-umbenenner-adapter-in-cli` - `pdf-umbenenner-adapter-in-gui` +- `pdf-umbenenner-adapter-in-scheduler` - `pdf-umbenenner-adapter-out` - `pdf-umbenenner-bootstrap` +## Scheduler-Ausnahme (ab V3.2) + +Ab V3.2 enthält der GUI-Modus einen optionalen internen Scheduler, der periodisch +automatische Verarbeitungsläufe anstößt. Die folgenden Regeln gelten abweichend von +den allgemeinen Leitplanken: + +- Der Scheduler ist **ausschließlich im GUI-Modus** verfügbar. Im headless Betrieb werden + `scheduler.enabled` und `scheduler.interval.seconds` vollständig ignoriert. +- Das Modul `pdf-umbenenner-adapter-in-scheduler` erfüllt eine gemischte Rolle als + technischer Treiber und Adapter. Dies ist ein bewusster Architekturkompromiss, kein + Architekturbruch. +- `pdf-umbenenner-adapter-in-scheduler` enthält **kein JavaFX**. +- **Kein WatchService:** Der Scheduler löst reguläre Verarbeitungsläufe periodisch aus; + er nutzt keinen Dateisystem-Event-Mechanismus. +- Das bestehende Datenbankschema bleibt in V3.2 unverändert; keine + Scheduler-spezifische Schemaerweiterung. +- Token- und Kostentracking sind nicht Bestandteil von V3.2. + ## Architekturregeln - Strikte **hexagonale Architektur / Ports and Adapters** - Abhängigkeiten zeigen immer **nach innen** @@ -151,6 +170,8 @@ Der Basisstand V2.0 (JavaFX-GUI als Standardstart, Konfigurationseditor, technis Verhaltensänderungen seit V2.9: Die GUI startet maximiert, und die zuletzt geladene Konfigurationsdatei wird beim Start automatisch wieder geladen; existiert sie nicht mehr, startet die GUI ohne Fehlermeldung mit dem Willkommenstext. +**V3.2 ist abgeschlossen.** Der GUI-Modus wurde um einen optionalen automatischen Scheduler erweitert (neuer Tab „Scheduler"). Der Scheduler startet periodisch Verarbeitungsläufe; Intervall und Autostart sind konfigurierbar. Während der Scheduler aktiv ist, sind der Konfigurations-Tab und das manuelle Starten von Läufen gesperrt. Im headless Betrieb werden Scheduler-Parameter vollständig ignoriert. + Die fachliche Kernverarbeitung des PDF-Umbenenners bleibt unverändert. ## Statussemantik @@ -301,6 +322,8 @@ Verbindlich zweckmäßige Parameter: - `log.ai.sensitive` – sensible KI-Logausgabe freischalten (Boolean, Default: `false`) - `runtime.lock.file` – Lock-Datei (optional) - `log.directory` – Log-Verzeichnis (optional) +- `scheduler.enabled` – Scheduler im GUI-Modus aktivieren (Boolean, Default: `false`; wird im headless Betrieb vollständig ignoriert) +- `scheduler.interval.seconds` – Intervall zwischen automatischen Läufen in Sekunden (Integer >= 30, Pflicht wenn `scheduler.enabled=true`; wird im headless Betrieb vollständig ignoriert) Pro Provider-Familie existiert ein eigener Parameter-Namensraum: @@ -339,7 +362,7 @@ Verbindlicher Ablauf: - keine OCR innerhalb der Java-Anwendung - keine DMS-Funktionalität - kein menschlicher Review-Workflow in der Anwendung -- keine interne Scheduler-Logik +- keine interne Scheduler-Logik außerhalb des optionalen GUI-Schedulers (s. Scheduler-Ausnahme) - keine Architekturbrüche - keine neuen Bibliotheken oder Frameworks ohne klare Notwendigkeit und Begründung - **keine** automatische Fallback-Umschaltung zwischen KI-Providern diff --git a/docs/betrieb.md b/docs/betrieb.md index af5fe58..b43c586 100644 --- a/docs/betrieb.md +++ b/docs/betrieb.md @@ -63,7 +63,7 @@ mehr, startet die GUI ohne Fehlermeldung mit dem Willkommenstext. ### Umfang der GUI -Die GUI enthält drei Tabs: +Die GUI enthält fünf Tabs: - **Tab „Konfiguration"** – Editor, Validierungs- und technische Testoberfläche für die `.properties`-Datei (Erreichbarkeit des Providers, Pfade, SQLite-Datei, @@ -75,6 +75,14 @@ Die GUI enthält drei Tabs: ungespeicherte Änderungen im Editor fließen nicht in den Lauf ein. Ein **Soft-Stop** über den Abbrechen-Knopf beendet den Lauf nach Abschluss der gerade bearbeiteten Datei. Während eines laufenden Batches ist Tab 1 gesperrt; ein Hinweis weist darauf hin. +- **Tab „Scheduler"** – Optionaler automatischer Scheduler für periodische Verarbeitungsläufe. + Kann gestartet, gestoppt und mit einem konfigurierten Intervall betrieben werden. Während + der Scheduler aktiv ist, sind Tab 1 „Konfiguration" und der manuelle Lauf gesperrt. + Erfordert `scheduler.enabled=true` und ein gültiges `scheduler.interval.seconds` in der + gespeicherten Konfiguration. +- **Tab „Verlauf"** – Ansicht aller bisher verarbeiteten Dokumente mit Status, Dateinamen + und Verarbeitungsdetails direkt aus der SQLite-Datenbank. Ermöglicht Status-Reset und + Löschung einzelner Einträge. - **Tab „Prompt"** – Lädt, bearbeitet und speichert die konfigurierte Prompt-Datei direkt aus der Oberfläche. Bearbeitungen erzeugen einen Dirty-State (Asterisk im Tab-Titel). Speichern erfolgt **atomar** (Temp-Datei im selben Verzeichnis + `ATOMIC_MOVE`). @@ -88,6 +96,37 @@ kann weiterhin für automatisierte Läufe genutzt werden. Pro Anwendungsinstanz ein Verarbeitungslauf gleichzeitig zulässig; ein gleichzeitiger externer headless Lauf wird jedoch nicht technisch erkannt oder blockiert. +### Automatischer Scheduler + +Der GUI-Tab „Scheduler" ermöglicht den Betrieb eines optionalen, periodisch laufenden +Schedulers, der automatisch Verarbeitungsläufe anstößt. + +**Konfigurationsparameter:** + +| Parameter | Beschreibung | Standard | +|---|---|---| +| `scheduler.enabled` | Scheduler im GUI-Modus aktivieren (`true`/`false`); wird im headless Betrieb ignoriert | `false` | +| `scheduler.interval.seconds` | Intervall zwischen automatischen Läufen in Sekunden (Integer >= 30; Pflicht wenn `scheduler.enabled=true`); wird im headless Betrieb ignoriert | – | + +Ungültige Werte (kein Integer, < 30 oder leer bei `scheduler.enabled=true`) verhindern den +Scheduler-Start und werden im GUI-Tab als Fehler gemeldet. + +**Autostart:** Ist `scheduler.enabled=true` in der gespeicherten Konfiguration, startet der +Scheduler automatisch, wenn die Konfiguration beim GUI-Start geladen wird. Der erste +Verarbeitungslauf beginnt **unmittelbar** nach dem Scheduler-Start (kein initiales Warten). + +**Headless-Betrieb:** Im headless Betrieb werden `scheduler.enabled` und +`scheduler.interval.seconds` vollständig ignoriert. Der Scheduler ist ausschließlich im +GUI-Modus verfügbar. + +**Sperrverhalten:** Solange der Scheduler aktiv ist, ist Tab 1 „Konfiguration" gesperrt +(Bearbeitungssperre mit Hinweisbanner). Manuelles Starten eines Laufs ist ebenfalls nicht +möglich. Nach dem Stoppen des Schedulers werden beide Sperren automatisch aufgehoben. + +**Schließen der Anwendung:** Versucht der Benutzer das Fenster zu schließen, während der +Scheduler aktiv ist oder ein Lauf läuft, erscheint ein Informationsdialog. Das Schließen +wird blockiert, bis der Scheduler gestoppt und kein Lauf mehr aktiv ist. + --- ## Voraussetzungen @@ -229,6 +268,8 @@ Nur der **aktive** Provider muss vollständig konfiguriert sein. Der inaktive Pr | `log.directory` | Log-Verzeichnis | `./logs/` | | `log.level` | Log-Level (`DEBUG`, `INFO`, `WARN`, `ERROR`) | `INFO` | | `log.ai.sensitive` | KI-Rohantwort und Reasoning ins Log schreiben (`true`/`false`) | `false` | +| `scheduler.enabled` | Scheduler im GUI-Modus aktivieren (`true`/`false`); wird im headless Betrieb ignoriert | `false` | +| `scheduler.interval.seconds` | Intervall in Sekunden (Integer >= 30; Pflicht wenn `scheduler.enabled=true`); wird im headless Betrieb ignoriert | – | ### API-Schlüssel @@ -773,7 +814,7 @@ Die Bedienung der GUI ist in [`gui-bedienanleitung.md`](gui-bedienanleitung.md) - Keine eingebaute OCR-Funktion - Kein Web-UI, keine REST-API - Die GUI ermöglicht Konfiguration, Validierung, technische Diagnose und die Ausführung von Verarbeitungsläufen mit integrierter PDF-Vorschau und editierbarem Dateiname -- Kein interner Scheduler – der Batch-Betrieb wird extern angestoßen (z. B. Windows Task Scheduler, `--headless`) +- Kein interner Scheduler im headless Betrieb – der Batch-Betrieb wird extern angestoßen (z. B. Windows Task Scheduler, `--headless`); im GUI-Modus steht optional ein interner Scheduler zur Verfügung (Tab „Scheduler") - Quelldateien werden nie überschrieben, verschoben oder gelöscht - Die Identifikation erfolgt über SHA-256-Fingerprint des Dateiinhalts, nicht über Dateinamen - Die GUI wird offiziell nur unter Windows unterstützt; der headless Betrieb ist für Windows Server geeignet diff --git a/docs/gui-bedienanleitung.md b/docs/gui-bedienanleitung.md index fea3167..8746a68 100644 --- a/docs/gui-bedienanleitung.md +++ b/docs/gui-bedienanleitung.md @@ -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)