nextcloud: # Vollständige WebDAV-URL des Benutzers, ohne abschließenden Slash: # https://cloud.example/remote.php/dav/files/USERNAME webdav_url: "https://cloud.example/remote.php/dav/files/USERNAME" username: "USERNAME" password_env: "NEXTCLOUD_PASSWORD" input_folder: "/Scanner/Eingang" output_folder: "/Scanner/Eingang/umbenannt" review_folder: "/Scanner/Eingang/manuell-pruefen" archive_folder: "/Scanner/Eingang/verarbeitet-originale" archive_originals: true verify_tls: true # Verhindert standardmäßig, dass interne Dokumentdaten über Umgebungs-Proxys laufen. trust_env: false timeout_seconds: 60 ollama: enabled: true base_url: "http://ollama.intern:11434" # Schnelles Primärmodell; das größere Modell wird nur bei Unsicherheit verwendet. model: "qwen3.5:4B" fallback_model: "qwen3.5:9b" think: false keep_alive: "10m" context_tokens: 8192 max_output_tokens: 700 timeout_seconds: 180 trust_env: false # Der Text bleibt lokal. Es wird keine Cloud-API verwendet. max_text_characters: 16000 processing: # Erst nach erfolgreichem Test auf false setzen. dry_run: true confidence_threshold: 0.85 max_pdf_pages: 30 state_directory: "./state" work_directory: "./work" excel_filename: "protokoll.xlsx" # Nur aktivieren, wenn Immobilien mit ihren Markern vollständig gepflegt sind. assume_unmatched_invoices_private: true assume_unmatched_correspondence_private: true unmatched_private_confidence: 0.86 # Einzige beabsichtigte Nextcloud-Schreiboperation im Dry-Run. upload_excel_in_dry_run: true filename_max_length: 180 # Kanonischer Firmenname und mögliche Schreibweisen im OCR-Text. companies: - name: "Stadtwerke-Musterstadt" aliases: - "Stadtwerke Musterstadt GmbH" - "Stadtwerke Musterstadt" default_scope: "unknown" default_property_id: null require_property_match: false - name: "Hausverwaltung-Muster" aliases: - "Hausverwaltung Muster GmbH" default_scope: "property" default_property_id: null require_property_match: true - name: "Private-Krankenversicherung" aliases: - "Beispiel Krankenversicherung AG" default_scope: "private" default_property_id: null require_property_match: false # Je mehr eindeutige Merkmale gepflegt sind, desto weniger KI ist nötig. properties: - id: "WH1" name: "Wohnhaus Musterstraße" markers: - "Musterstraße 12" - "47110815" - "DE000123456" # Wiederkehrende Themen umgehen das LLM, wenn Datum und Firma ebenfalls erkannt werden. topics: - name: "Eigentuemerversammlung" markers: - "Eigentümerversammlung" - "Einladung zur Eigentümerversammlung" - name: "Versicherungsvertrag" markers: - "Versicherungsschein" - "Beitragsanpassung" # Die normale Empfängeradresse ist nur eine Voraussetzung für den Privat-Fallback. recipient_markers: - "Eigene Privatstraße 1" # Ausschließlich private Kennzeichen; hier NICHT die normale Empfängeradresse eintragen. private_markers: - "Private Kundennummer 123456" - "Private Versicherungsnummer ABC123"