1
0

M8 komplett umgesetzt

This commit is contained in:
2026-04-08 16:30:13 +02:00
parent a3f47ba560
commit d61316c699
21 changed files with 2377 additions and 89 deletions

View File

@@ -1,21 +1,70 @@
# PDF Umbenenner Local Configuration Example
# AP-005: Copy this file to config/application.properties and adjust values for local development
# PDF Umbenenner Konfigurationsbeispiel für lokale Entwicklung
# Kopiere diese Datei nach config/application.properties und passe die Werte an.
# Mandatory M1 properties
# ---------------------------------------------------------------------------
# Pflichtparameter
# ---------------------------------------------------------------------------
# Quellordner: Ordner, aus dem OCR-verarbeitete PDF-Dateien gelesen werden.
# Der Ordner muss vorhanden und lesbar sein.
source.folder=./work/local/source
target.folder=./work/local/target
sqlite.file=./work/local/pdf-umbenenner.db
api.baseUrl=http://localhost:8080/api
api.model=gpt-4o-mini
api.timeoutSeconds=30
max.retries.transient=3
max.pages=10
max.text.characters=5000
prompt.template.file=./config/prompts/local-template.txt
# Optional properties
runtime.lock.file=./work/local/lock.pid
# Zielordner: Ordner, in den die umbenannten Kopien abgelegt werden.
# Wird automatisch angelegt, wenn er noch nicht existiert.
target.folder=./work/local/target
# SQLite-Datenbankdatei für Bearbeitungsstatus und Versuchshistorie.
# Das übergeordnete Verzeichnis muss vorhanden sein.
sqlite.file=./work/local/pdf-umbenenner.db
# Basis-URL des OpenAI-kompatiblen KI-Dienstes (ohne Pfadsuffix wie /chat/completions).
api.baseUrl=https://api.openai.com/v1
# Modellname des KI-Dienstes.
api.model=gpt-4o-mini
# HTTP-Timeout für KI-Anfragen in Sekunden (muss > 0 sein).
api.timeoutSeconds=30
# Maximale Anzahl historisierter transienter Fehlversuche pro Dokument.
# Muss eine ganze Zahl >= 1 sein. Bei Erreichen des Grenzwerts wird der
# Dokumentstatus auf FAILED_FINAL gesetzt.
max.retries.transient=3
# Maximale Seitenzahl pro Dokument. Dokumente mit mehr Seiten werden als
# deterministischer Inhaltsfehler behandelt (kein KI-Aufruf).
max.pages=10
# Maximale Zeichenanzahl des Dokumenttexts, der an die KI gesendet wird.
max.text.characters=5000
# Pfad zur externen Prompt-Datei. Der Dateiname dient als Prompt-Identifikator
# in der Versuchshistorie.
prompt.template.file=./config/prompts/template.txt
# ---------------------------------------------------------------------------
# API-Schlüssel
# ---------------------------------------------------------------------------
# Der API-Schlüssel kann wahlweise über diese Property oder über die
# Umgebungsvariable PDF_UMBENENNER_API_KEY gesetzt werden.
# Die Umgebungsvariable hat Vorrang.
api.key=your-local-api-key-here
# ---------------------------------------------------------------------------
# Optionale Parameter
# ---------------------------------------------------------------------------
# Pfad zur Lock-Datei für den Startschutz (verhindert parallele Instanzen).
# Wird weggelassen, verwendet die Anwendung pdf-umbenenner.lock im Arbeitsverzeichnis.
runtime.lock.file=./work/local/pdf-umbenenner.lock
# Log-Verzeichnis. Wird weggelassen, schreibt Log4j2 in ./logs/.
log.directory=./work/local/logs
# Log-Level (DEBUG, INFO, WARN, ERROR). Standard ist INFO.
log.level=INFO
# api.key can also be set via environment variable PDF_UMBENENNER_API_KEY
api.key=your-local-api-key-here
# Sensible KI-Inhalte (vollständige Rohantwort und Reasoning) ins Log schreiben.
# Erlaubte Werte: true oder false. Standard ist false (geschützt).
# Nur für Diagnosezwecke auf true setzen.
log.ai.sensitive=false

View File

@@ -1,21 +1,71 @@
# PDF Umbenenner Test Configuration Example
# AP-005: Copy this file to config/application.properties and adjust values for testing
# PDF Umbenenner Konfigurationsbeispiel für Testläufe
# Kopiere diese Datei nach config/application.properties und passe die Werte an.
# Diese Vorlage enthält kürzere Timeouts und niedrigere Limits für Testläufe.
# Mandatory M1 properties
# ---------------------------------------------------------------------------
# Pflichtparameter
# ---------------------------------------------------------------------------
# Quellordner: Ordner, aus dem OCR-verarbeitete PDF-Dateien gelesen werden.
# Der Ordner muss vorhanden und lesbar sein.
source.folder=./work/test/source
target.folder=./work/test/target
sqlite.file=./work/test/pdf-umbenenner-test.db
api.baseUrl=http://localhost:8081/api
api.model=gpt-4o-mini-test
api.timeoutSeconds=10
max.retries.transient=1
max.pages=5
max.text.characters=2000
prompt.template.file=./config/prompts/test-template.txt
# Optional properties
runtime.lock.file=./work/test/lock.pid
# Zielordner: Ordner, in den die umbenannten Kopien abgelegt werden.
# Wird automatisch angelegt, wenn er noch nicht existiert.
target.folder=./work/test/target
# SQLite-Datenbankdatei für Bearbeitungsstatus und Versuchshistorie.
# Das übergeordnete Verzeichnis muss vorhanden sein.
sqlite.file=./work/test/pdf-umbenenner-test.db
# Basis-URL des OpenAI-kompatiblen KI-Dienstes (ohne Pfadsuffix wie /chat/completions).
api.baseUrl=https://api.openai.com/v1
# Modellname des KI-Dienstes.
api.model=gpt-4o-mini
# HTTP-Timeout für KI-Anfragen in Sekunden (muss > 0 sein).
api.timeoutSeconds=10
# Maximale Anzahl historisierter transienter Fehlversuche pro Dokument.
# Muss eine ganze Zahl >= 1 sein. Bei Erreichen des Grenzwerts wird der
# Dokumentstatus auf FAILED_FINAL gesetzt.
max.retries.transient=1
# Maximale Seitenzahl pro Dokument. Dokumente mit mehr Seiten werden als
# deterministischer Inhaltsfehler behandelt (kein KI-Aufruf).
max.pages=5
# Maximale Zeichenanzahl des Dokumenttexts, der an die KI gesendet wird.
max.text.characters=2000
# Pfad zur externen Prompt-Datei. Der Dateiname dient als Prompt-Identifikator
# in der Versuchshistorie.
prompt.template.file=./config/prompts/template.txt
# ---------------------------------------------------------------------------
# API-Schlüssel
# ---------------------------------------------------------------------------
# Der API-Schlüssel kann wahlweise über diese Property oder über die
# Umgebungsvariable PDF_UMBENENNER_API_KEY gesetzt werden.
# Die Umgebungsvariable hat Vorrang.
api.key=test-api-key-placeholder
# ---------------------------------------------------------------------------
# Optionale Parameter
# ---------------------------------------------------------------------------
# Pfad zur Lock-Datei für den Startschutz (verhindert parallele Instanzen).
# Wird weggelassen, verwendet die Anwendung pdf-umbenenner.lock im Arbeitsverzeichnis.
runtime.lock.file=./work/test/pdf-umbenenner.lock
# Log-Verzeichnis. Wird weggelassen, schreibt Log4j2 in ./logs/.
log.directory=./work/test/logs
# Log-Level (DEBUG, INFO, WARN, ERROR). Standard ist INFO.
log.level=DEBUG
# api.key can also be set via environment variable PDF_UMBENENNER_API_KEY
api.key=test-api-key-placeholder
# Sensible KI-Inhalte (vollständige Rohantwort und Reasoning) ins Log schreiben.
# Erlaubte Werte: true oder false. Standard ist false (geschützt).
# Nur für Diagnosezwecke auf true setzen.
log.ai.sensitive=false

View File

@@ -1 +1,22 @@
This is a test prompt template for AP-006 validation.
Du bist ein Assistent zur automatischen Benennung gescannter PDF-Dokumente.
Analysiere den folgenden Dokumenttext und ermittle:
1. Einen inhaltlich passenden deutschen Titel (maximal 20 Zeichen, nur Buchstaben und Leerzeichen, keine Abkürzungen, keine generischen Bezeichnungen wie "Dokument", "Datei", "Scan" oder "PDF")
2. Das relevanteste Datum des Dokuments
Datumsermittlung nach Priorität:
- Rechnungsdatum
- Dokumentdatum
- Ausstellungsdatum oder Bescheiddatum
- Schreibdatum oder Ende eines Leistungszeitraums
- Kein Datum angeben, wenn kein belastbares Datum eindeutig ableitbar ist
Titelregeln:
- Titel auf Deutsch formulieren
- Eigennamen (Personen, Firmen, Orte) unverändert übernehmen
- Maximal 20 Zeichen (nur der Basistitel, ohne Datumspräfix)
- Keine Sonderzeichen außer Leerzeichen
- Eindeutig und verständlich, nicht generisch
Wenn das Dokument nicht eindeutig interpretierbar ist, beschreibe dies im Reasoning.