Skip to content

feat: Paperless-NGX Sync bidirektional #1

Description

@commanderphu

Beschreibung

Der aktuelle Paperless-NGX Sync ist nur einseitig (Paperless → Workmate). Ziel ist ein vollständig bidirektionaler Sync.

Was bereits funktioniert

  • ✅ Paperless → Workmate: Neue Dokumente werden alle 30 Min importiert und per KI analysiert
  • ✅ Nach KI-Analyse: Tags + Notizen werden einmalig nach Paperless zurückgeschrieben (_write_to_paperless)

Was fehlt (Workmate → Paperless)

Metadaten-Sync

  • Task-Status: Wenn ein Task in Workmate als erledigt markiert wird → Tag erledigt / offen in Paperless setzen
  • Korrigierter Dokumenttyp: Wenn der Nutzer den Typ in Workmate ändert → Paperless-Tag aktualisieren
  • Geänderte Metadaten: Fälligkeitsdatum, Betrag, Titel — Änderungen in Workmate zurückschreiben
  • Periodic Write-back: paperless_sync Task soll nach dem Import-Durchlauf auch einen Write-back-Durchlauf für alle verknüpften Dokumente machen

Datei-Upload (Workmate → Paperless)

  • Dokumente die direkt in Workmate hochgeladen werden, sollen automatisch auch in Paperless-NGX landen
  • ❌ Paperless-ID nach erfolgreichem Upload im doc_metadata speichern, damit spätere Syncs das Dokument korrekt verknüpfen
  • ❌ Dateiname, KI-erkannter Typ und Tags direkt beim Upload mitschicken

Implementierungsplan

  1. PaperlessSyncService.push_workmate_changes() — prüft alle Dokumente mit paperless_id, schreibt Änderungen zurück
  2. PaperlessSyncService.upload_to_paperless(document_id) — lädt Originaldatei + Metadaten per Paperless Upload-API hoch
  3. In document_processing.py: nach erfolgreicher Analyse upload_to_paperless als Celery-Task queuen (nur wenn Paperless konfiguriert)
  4. paperless_sync Celery-Task um Write-back-Durchlauf erweitern
  5. Tracking via doc_metadata["last_synced_to_paperless"] um nur tatsächlich geänderte Dokumente zu übertragen

Relevante Dateien

  • backend/app/services/paperless_service.py
  • backend/app/tasks/paperless_sync.py
  • backend/app/tasks/paperless_analyze.py
  • backend/app/tasks/document_processing.py

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions