- Bei fehlgeschlagener veraPDF-Validierung wurde das Original bisher
bedingungslos geloescht. Es folgt jetzt derselben
[output].original_on_success-Regel wie im Erfolgsfall, damit "archive"
das Original nicht ausgerechnet im Fehlerfall verliert.
- Das nie benutzte Logverzeichnis /var/log/pdf-ocr-hotfolder/ wird nicht
mehr angelegt; der Dienst loggt ausschliesslich nach journald.
README und Briefing nennen stattdessen die journalctl-Kommandos.
- 3 neue Tests (95 gesamt)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- [ocr].timeout wird als tesseract_timeout (pro Seite) an ocrmypdf
durchgereicht; Default 1800 -> 300, 0 = ocrmypdf-Default
- Exceptions nach dem OCR zaehlen als Fehler, Datei wird nach error/ gerettet
- Fehlgeschlagene Uploads zaehlen als Fehler und loesen Fehler-Mail aus
- name_mode wird im Preflight geprueft, nicht erst pro Datei
- Fehlende [paths]-Sektion -> ConfigError mit klarer Meldung statt KeyError
- Stabilitaets-Timeout zaehlt als Fehler (--once liefert Exit 1)
- upload_folder nutzt shutil.copyfile statt read_bytes/write_bytes
- OcrConfig.pdfa_level Default "2" -> "" (Ghostscript-Bug, Issue #3)
- 35 neue Tests (92 gesamt), pytest.ini
- AI_AGENT_BRIEFING.md auf Stand 0.4.0 gebracht
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- #4: LXC/Container Drop-in (lxc-compat.conf) deaktiviert systemd-Hardening;
Installer erkennt Container automatisch und bietet Drop-in an
- #5: WorkingDirectory=/opt/pdf-ocr-hotfolder in Template-Unit ergänzt
- #6: Installer bietet auf Debian 12 bei betroffenen GS-Versionen
automatisch bookworm-backports Upgrade an (statt nur Warnung)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- config.example.toml: pdfa_level="" als sicherer Default
- check_preflight(pdfa_level) erkennt betroffene GS-Versionen und bricht ab
- install.sh warnt bei betroffenen GS-Versionen
- 19 neue Tests (parametrisiert über Versions-Matrix)
Closes#3
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- #1: check_preflight() prüft beim Start tesseract + gs, wirft
PreflightError. CLI endet mit Exit 2 statt grün zu bleiben.
- #2: run_once() gibt Anzahl fehlgeschlagener PDFs zurück, CLI
endet mit Exit 1 wenn mindestens eine Datei scheiterte.
- pytest-Suite mit 11 Tests für beide Szenarien
- ocrmypdf-Import lazy in processor.py (Tests ohne ocrmypdf möglich)
Closes#1, #2
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Komplettes Rewrite des alten Bash-Tools `pdf-tool` in Python.
- ocrmypdf als Library, watchdog für Hotfolder, ThreadPool für Parallelität
- Upload-Targets: folder, Nextcloud (WebDAV), SFTP
- E-Mail-Notify, optional veraPDF
- Interaktiver Installer mit Service-User-Support (lokal + AD via SSSD)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>