Journal

1. Wofuer ist diese Funktion

Das Journal ist das zentrale Aktivitaetsprotokoll von Octoserv. Es zeichnet saemtliche Vorgaenge im CRM-System auf und stellt sie in einer durchsuchbaren, filterbaren Zeitleiste dar. Jede Aenderung an Kontakten, Tags, Feldern, Aufgaben und E-Mails wird automatisch erfasst -- sowohl durch Octoserv-eigene Aktionen als auch durch das zugrunde liegende CRM-System (Groundhogg).

Das Journal existiert in zwei Auspraegungen:

Screenshot: Globale Journal-Uebersicht mit Statistik-Kacheln und Filtern
Wird in einer zukünftigen Version ergänzt

2. Ziel und Vorteil


3. Detaillierte Funktionsbeschreibung

3.1 Architektur: Zwei parallele Systeme

Das Journal-System besteht aus drei Komponenten:

  1. Octoserv Journal (Datenbank): Speichert Aktivitaeten in der MySQL-Tabelle wp_octo_journal. Optimiert fuer schnelle SQL-Abfragen und Timeline-Darstellung. Wird direkt durch Octoserv-Aktionen (Kampagnen-Toggles, Tasks, Owner-Aenderungen) und durch den Groundhogg-Tracker befuellt.
  2. DCS Logger (Logdatei): Ein eigenstaendiges Plugin, das ALLE Groundhogg-Aktivitaeten in Textdateien protokolliert (/wp-content/uploads/dcs-logs/contact-activity-YYYY-MM.log). Dient als unverfaelschbare Audit-Spur.
  3. Logger-Sync: Ein stuendlicher Cronjob importiert neue Eintraege aus den DCS-Logger-Dateien in die Octoserv-Journal-Datenbank. Dabei werden Duplikate ueber ein +/-5-Sekunden-Zeitfenster erkannt und uebersprungen.

3.2 Erfasste Aktivitaetstypen

Aktivitaetstyp Beschreibung Farbcode
field_change Standard-Feld geaendert (Name, E-Mail, etc.) Blau
custom_field_change Custom Field geaendert Violett
owner_change Verantwortlicher/Owner geaendert Lila
email_sent E-Mail an Kontakt versendet Gruen
task_created Neue Aufgabe erstellt Gelb
task_completed Aufgabe als erledigt markiert Hellgruen
tag_added Tag dem Kontakt hinzugefuegt Tuerkis
tag_removed Tag vom Kontakt entfernt Rot
note_added Notiz zum Kontakt hinzugefuegt Indigo
contact_created Neuer Kontakt angelegt Teal
contact_deleted Kontakt geloescht Rot

3.3 Datenbank-Schema

Die Tabelle wp_octo_journal speichert jeden Eintrag mit folgenden Feldern:

Indizes auf contact_id, activity_type und date_created sorgen fuer performante Abfragen.

3.4 Deduplizierung

Das System verwendet zwei Deduplizierungsmechanismen:

  1. Request-Hash: Innerhalb eines einzelnen PHP-Requests wird ueber einen Hash aus contact_id + activity_type + field_name sichergestellt, dass identische Eintraege nicht doppelt geschrieben werden.
  2. Zeitfenster-Pruefung beim Sync: Beim Import aus dem DCS Logger wird geprueft, ob innerhalb eines +/-5-Sekunden-Zeitfensters bereits ein identischer Eintrag existiert. Falls ja, wird der Import uebersprungen.
Screenshot: Journal-Timeline mit farbcodierten Aktivitaetstypen
Wird in einer zukünftigen Version ergänzt

3.5 Automatisches Cleanup und Archivierung

Ein taeglicher Cronjob (um 3 Uhr) fuehrt folgende Bereinigungen durch:

3.6 Timestamp-Formatierung

Unix-Timestamps in Journal-Beschreibungen werden automatisch in lesbares deutsches Datumsformat (DD.MM.YYYY HH:MM:SS) umgewandelt. Das betrifft Felder wie Last sent, last_login, date_created und date_optin_status_changed.

3.7 Irrelevante Eintraege

Die globale Journal-Suche filtert automatisch irrelevante Eintraege heraus, darunter:


4. Benutzerdokumentation / Anwendung

4.1 Globale Journal-Uebersicht aufrufen

  1. Klicken Sie in der Seitennavigation auf Journal.
  2. Die Seite zeigt vier Statistik-Kacheln: Gesamt-Eintraege, Heute, Letzte 7 Tage, Letzte 30 Tage.
  3. Darunter befindet sich der Bereich "Suche & Filter" mit den Ergebnissen.

4.2 Journal filtern

Im Filterbereich stehen folgende Moeglichkeiten zur Verfuegung:

Klicken Sie auf Suchen, um die Filter anzuwenden. Der Button Zuruecksetzen entfernt alle Filter.

4.3 CSV-Export

Klicken Sie auf den blauen Button CSV Export rechts neben den Filteroptionen. Der Export beruecksichtigt die aktuell gesetzten Filter und ist auf maximal 10.000 Eintraege begrenzt. Die CSV-Datei enthaelt die Spalten: Datum, Kontakt-ID, Kontakt Name, E-Mail, Aktivitaet, Beschreibung, Feld, Alt, Neu, Benutzer.

4.4 Kontakt-Journal (auf der Kontakt-Detailseite)

Auf der Detailseite jedes Kontakts befindet sich eine Journal-Box mit einer Timeline-Darstellung:

Screenshot: Kontakt-Journal mit Timeline und Filteroptionen
Wird in einer zukünftigen Version ergänzt

4.5 Paginierung

Die globale Ansicht zeigt 50 Eintraege pro Seite. Unterhalb der Tabelle werden die aktuelle Seite und die Gesamtzahl der Seiten angezeigt. Mit den Buttons "Zurueck" und "Weiter" navigieren Sie durch die Seiten.

4.6 Journal-Einstellungen

In den Systemeinstellungen koennen folgende Journal-Parameter konfiguriert werden:


5. Anwendungsbeispiele

Beispiel 1: "Wer hat den Status dieses Kontakts geaendert?"

  1. Oeffnen Sie die Kontakt-Detailseite des betreffenden Kontakts.
  2. Scrollen Sie zur Journal-Box.
  3. Setzen Sie den Filter auf Aktivitaetstyp "Feldaenderung".
  4. Suchen Sie nach dem Eintrag mit dem Feld "status". Dort sehen Sie den alten und neuen Wert sowie den Benutzer, der die Aenderung durchgefuehrt hat.

Beispiel 2: "Welche E-Mails wurden heute versendet?"

  1. Oeffnen Sie die globale Journal-Uebersicht.
  2. Setzen Sie den Aktivitaetstyp-Filter auf "email_sent".
  3. Setzen Sie "Von Datum" auf das heutige Datum.
  4. Klicken Sie auf "Suchen".
  5. Die Ergebnisliste zeigt alle heute versendeten E-Mails mit Kontakt, Beschreibung und Absender.

Beispiel 3: "Alle Aktivitaeten eines bestimmten Kontakts exportieren"

  1. Oeffnen Sie die globale Journal-Uebersicht.
  2. Geben Sie im Feld "Kontakt" den Namen oder die E-Mail-Adresse ein.
  3. Waehlen Sie den Kontakt aus der Vorschlagsliste.
  4. Optional: Schraenken Sie den Zeitraum ein.
  5. Klicken Sie auf "CSV Export". Die Datei enthaelt alle passenden Eintraege.

Beispiel 4: "Ueberblick ueber Tag-Aenderungen der letzten Woche"

  1. Oeffnen Sie die globale Journal-Uebersicht.
  2. Setzen Sie den Aktivitaetstyp-Filter auf "tag_added" oder "tag_removed".
  3. Setzen Sie "Von Datum" auf vor 7 Tagen.
  4. Die Statistik-Kachel "Letzte 7 Tage" zeigt zusaetzlich die Gesamtanzahl aller Aktivitaeten in diesem Zeitraum.
Screenshot: CSV-Export und Filteroptionen in der Journal-Uebersicht
Wird in einer zukünftigen Version ergänzt

Beispiel 5: "Journal fuer Compliance-Zwecke archivieren"

Das System archiviert automatisch: