# PDF Umbenenner – vollstaendiges Konfigurationsbeispiel (V2.0)
#
# Diese Datei zeigt alle unterstuetzten Konfigurationsparameter mit realistischen
# Windows-Pfaden und erklaerenden Kommentaren.
#
# Fuer den produktiven Einsatz: Datei nach config/application.properties kopieren
# und Werte anpassen. Der headless Batch-Betrieb liest standardmaessig
# config/application.properties relativ zum Arbeitsverzeichnis.
#
# Die GUI schlaegt beim "Speichern unter" denselben Pfad vor.

# ---------------------------------------------------------------------------
# Pfade
# ---------------------------------------------------------------------------

# Quellordner: Ordner, aus dem OCR-verarbeitete PDF-Dateien gelesen werden.
# Der Ordner muss vorhanden und lesbar sein.
# Beispiel: gemapptes Netzlaufwerk (wird ausdruecklich unterstuetzt)
source.folder=S:\\Eingang

# Zielordner: Ordner, in den die umbenannten Kopien abgelegt werden.
# Wird automatisch angelegt, wenn er noch nicht existiert (Schreibzugriff erforderlich).
target.folder=S:\\Archiv

# SQLite-Datenbankdatei fuer Bearbeitungsstatus und Versuchshistorie.
# Das uebergeordnete Verzeichnis muss vorhanden sein.
sqlite.file=S:\\Archiv\\pdf-umbenenner.db

# Pfad zur externen Prompt-Datei. Der Dateiname dient als Prompt-Identifikator
# in der Versuchshistorie und ermoeg licht die Nachvollziehbarkeit der verwendeten
# Prompt-Version. Fehlt die Datei, kann die GUI sie automatisch anlegen (deutsche
# Standardvorlage). Ein Beispiel der Standardvorlage liegt unter docs/examples/prompt.txt.
prompt.template.file=S:\\Archiv\\prompt.txt

# ---------------------------------------------------------------------------
# Aktiver KI-Provider
# ---------------------------------------------------------------------------
# Genau ein Provider ist aktiv. Kein automatischer Fallback, keine parallele Nutzung.
# Erlaubte Werte: claude, openai-compatible
#
# Hinweis: Die GUI-Standardvorlage ("Neu") setzt standardmaessig "claude" als aktiven
# Provider, weil Claude alphabetisch der erste unterstuetzte Provider ist.
ai.provider.active=claude

# ---------------------------------------------------------------------------
# Provider: Anthropic Claude
# ---------------------------------------------------------------------------
# Wird verwendet, wenn ai.provider.active=claude gesetzt ist.

# Basis-URL des Anthropic-Dienstes (Standard: https://api.anthropic.com)
ai.provider.claude.baseUrl=https://api.anthropic.com

# Modellname (z. B. claude-3-5-sonnet-20241022)
ai.provider.claude.model=claude-3-5-sonnet-20241022

# HTTP-Timeout fuer KI-Anfragen in Sekunden (muss > 0 sein).
ai.provider.claude.timeoutSeconds=60

# API-Schluessel fuer Anthropic.
# Vorrangreihenfolge: Umgebungsvariable ANTHROPIC_API_KEY > dieser Wert.
# Das Feld darf leer bleiben, wenn die Umgebungsvariable gesetzt ist.
ai.provider.claude.apiKey=

# ---------------------------------------------------------------------------
# Provider: OpenAI-kompatibel
# ---------------------------------------------------------------------------
# Wird verwendet, wenn ai.provider.active=openai-compatible gesetzt ist.
# Geeignet fuer OpenAI selbst und jeden API-kompatiblen Drittanbieter.

# Basis-URL des KI-Dienstes (ohne Pfadsuffix wie /chat/completions).
ai.provider.openai-compatible.baseUrl=https://api.openai.com/v1

# Modellname (z. B. gpt-4o-mini)
ai.provider.openai-compatible.model=gpt-4o-mini

# HTTP-Timeout fuer KI-Anfragen in Sekunden (muss > 0 sein).
ai.provider.openai-compatible.timeoutSeconds=30

# API-Schluessel fuer OpenAI-kompatible Dienste.
# Vorrangreihenfolge: OPENAI_COMPATIBLE_API_KEY (Umgebungsvariable) >
#                    PDF_UMBENENNER_API_KEY (veraltete Umgebungsvariable, weiterhin akzeptiert) >
#                    ai.provider.openai-compatible.apiKey (dieser Wert)
# Das Feld darf leer bleiben, wenn die Umgebungsvariable gesetzt ist.
ai.provider.openai-compatible.apiKey=

# ---------------------------------------------------------------------------
# Verarbeitungslimits
# ---------------------------------------------------------------------------

# Maximale Anzahl historisierter transienter Fehlversuche pro Dokument.
# Muss eine ganze Zahl >= 1 sein. Wert 0 ist ungueltige Konfiguration.
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.
# Werte bis 1000: unkritisch.
# Werte 1001-3000: erhoehte KI-Kosten moeglich (Warnung in der GUI).
# Werte ab 3001: deutlich erhoehte KI-Kosten moeglich (starke Warnung in der GUI).
# Standardvorlage der GUI: 1000.
max.text.characters=1000

# Maximale Länge des Basistitels in Zeichen (10..120). Default 60.
# Werte unter 10 oder ueber 120 verhindern den Start.
# Werte 10-19: Warnung (fuer die meisten Dokumente nicht empfohlen).
# Werte 100-120: Warnung (Dateiname wird sehr lang, Kompatibilitaet mit verschluesselten Volumes pruefen).
max.title.length=60

# ---------------------------------------------------------------------------
# Optionale Parameter
# ---------------------------------------------------------------------------

# Lock-Datei fuer den Startschutz (verhindert parallele Instanzen).
# Ohne Konfiguration: pdf-umbenenner.lock im Arbeitsverzeichnis.
runtime.lock.file=S:\\Archiv\\pdf-umbenenner.lock

# Log-Verzeichnis. Ohne Konfiguration: ./logs/ im Arbeitsverzeichnis.
log.directory=S:\\Archiv\\logs

# Log-Level (DEBUG, INFO, WARN, ERROR). Standard: INFO.
log.level=INFO

# Sensible KI-Inhalte (vollstaendige Rohantwort und Reasoning) ins Log schreiben.
# Erlaubte Werte: true oder false. Standard: false (geschuetzt).
# Die KI-Rohantwort wird unabhaengig davon immer in der SQLite-Datenbank gespeichert.
log.ai.sensitive=false
