E-Mail-Aufgaben: Konfiguration, Verarbeitungs-Engine und Zeitplanung

Datenmodell der E-Mail-Aufgaben, Quellen und Verarbeitungsadapter, Validierung beim Speichern, Abgleich des Zeitplans, manuelle und Hintergrundläufe sowie Lücken bei Berechtigung und Inhaltsbereich.

Eine E-Mail-Aufgabe ist ein konfigurationsgesteuerter, ordnerbasierter Dokumentverarbeiter: Quelle (Gmail API, Gmail IMAP, MS365), Verarbeitungsadapter, Zielspeicher (Drive, Ordner der Dokumentenzentrale, Firmenordner oder lokales Verzeichnis) und Zeitplan. Ausgeführt wird sie von der E-Mail-Aufgaben-Engine, manuell oder durch den Zeitplaner-Job email_task.

Datenmodell

Die Tabellennamen tragen in der Datenbank das eigene Präfix der Installation.

TabelleRolleBeziehung
emailtaskAufgabe: Code, Name, Quelle und Zugang, Filter, Handler, params_json, Ordner, Ziel, Zeitplan, StatusZielfirma
company_folderDrive-Ordner der Firma nach TypFirma
cron_queueZeitplanvorlage der AufgabeNutzlast email_task_id

Verarbeitungsadapter (Positivliste): store_only, link_invoice, nemzetiutdij, rackforest, otpkelfo, googlews, anthropic, foxpost, github, ingatlancom.

Speichern und Ausführen

  1. Validierung: Code [a-z0-9_-]{2,32}, eindeutig (leer = Handlername); Name; quellabhängige Pflichtfelder (IMAP-Passwort und MS365-Secret nur beim Anlegen, nur schreibbar); Handler aus der Positivliste; gültiges JSON; Pflicht-Ordner für Verarbeitetes; Zielspeicher (lokaler Pfad oder Ordner der Dokumentenzentrale/Firmenordner; bei ingatlancom nicht nötig); gemeinsamer Zeitgeber (5–1440 Minuten, Wochentag, monatlich 1–28).
  2. Nach dem Speichern legt syncSchedule die Cron-Vorlage an, aktualisiert oder deaktiviert sie (deaktiviert bei inaktiver Aufgabe, fehlender Zielfirma oder falschem Intervall). Bei einer neuen Zeile wird die ID zurückgeschrieben.
  3. runnow: Die Engine läuft sofort im Zeitbudget (job_sync_budget, Standard 8 s) und reiht den Rest zur Fortsetzung ein; Fehler bei inaktiver Aufgabe.
  4. delete: löscht die Aufgaben und ihre Cron-Vorlagen.
  5. Helfer: folders (Postfachordner mit dem angegebenen Zugang), companyfolders, drivefolders (höchstens 20 Treffer), addfolder, companyaccount (schlanke Weiterleitung an den Speicher-Endpunkt der Dokumentenzentrale mit ctx=emailtask).
  6. Hintergrund: Job email_task → Catalog task/emailtask::processForCronqueue; email_task_id der Nutzlast beschränkt auf eine Aufgabe, Firma und Zeitpunkt kommen aus der Aufgabe.

Fehlerschlüssel

error_code, error_code_exists, error_gmail_account, error_imap*, error_ms365*, error_handler, error_params_json, error_processed_required, error_storage_configuration, error_v2_migration, error_task_inactive, error_schedule_missing, error_interval.

Berechtigungen

  • list (nicht eingestuft); add hat keine Katalogzeile, daher entscheidet edit (canSave); edit auf allen übrigen Endpunkten; delete; debug. Der BASE-Schlüssel statusdelete hat keinen Endpunkt; sein Verhalten ist nicht feststellbar.
  • Inhaltsbereich (companyInScope) nur auf companyfolders, drivefolders und addfolder. Die Listenabfrage engt nicht auf erlaubte Firmen ein.

Bekannte Einschränkungen

Die Liste zeigt ohne Inhaltsbereich die Aufgaben aller Firmen; Speichern und Ausführen prüfen den Inhaltsbereich der Zielfirma nicht.