From d9d8d4e38be49693987f09e483b5d94e04ec6d7e Mon Sep 17 00:00:00 2001 From: Robert Rapp Date: Tue, 13 Oct 2026 02:21:07 +0200 Subject: [PATCH] docs: KNOW-Befund B10 (Absender-Report liest eingefrorene Statistik aus contacts) Co-Authored-By: Claude Opus 5.5 --- docs/reference/KNOW-befunde.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/reference/KNOW-befunde.md b/docs/reference/KNOW-befunde.md index 73254d6..b254456 100644 --- a/docs/reference/KNOW-befunde.md +++ b/docs/reference/KNOW-befunde.md @@ -20,6 +20,7 @@ Status aller Befunde: **offen**. In n8n wurde nichts geändert. | B7 | Anhang-Extraktionen kommen nur von außen | niedrig | | B8 | KGW erlaubt externen Aufrufern eine Lösch-Operation | niedrig | | B9 | Keine Löschfristen für Klartext-Felder | mittel (Datenschutz) | +| B10 | Absender-Report zeigt eingefrorene Statistik | mittel | ## B1 – CANCEL protokolliert ins Leere - **Beleg:** `CANCEL - Unsubscribe Link` (aktiv) ruft in 4 Knoten (`KNOW: Log Erfolg`, `… Fehler`, `… Duplikat-Erfolg`, `… Dry Run`) `log_workflow_decision` auf. Diese Operation steht nicht in der Liste von KNOW, KNOW wirft `Nicht erlaubte KNOW operation`. Alle 4 Knoten haben „Continue on Fail“. @@ -97,3 +98,12 @@ Die Abfragen zu Ankaufsfällen über KGW (Hermes) liefern also nur Daten, die ei `purge_*` gibt es nur für Absender-Beobachtungen und Aliase. Bei `browser_sessions.session_data` ist am Schema nicht erkennbar, ob verschlüsselt wird. - **Vorschlag:** Aufbewahrungsfristen festlegen, z. B. `llm_jobs` nach Abschluss nach 30 Tagen leeren. `browser_sessions` im Code von BSB prüfen. + +## B10 – Absender-Report zeigt eingefrorene Statistik +- **Beleg:** + - `ASP - Absender-Profil Backfill` schreibt die Statistik eines Absenders (`mail_count`, `dominant_category`, `avg_confidence` …) per `upsert_contact` in `contacts.raw_evidence_json`. + - `upsert_contact` aktualisiert bei einem vorhandenen Kontakt nur `display_name`, `normalized_name`, `last_seen_at` und `updated_at`, **nicht** `raw_evidence_json`. + - `ASP - Absender-Report` liest Kategorie und Mail-Anzahl per eigenem SQL aus genau diesem Feld. +- **Folge:** Der Report zeigt für jeden Absender die Werte vom ersten Backfill, auch wenn sich die Lage seitdem geändert hat. Die aktuellen Werte stehen in `sender_observations`, dort schreibt derselbe Backfill per `upsert_sender_observation` mit. +- **Ursache (ontologisch):** Das Absender-Profil gehört zur Klasse *Absender*, der Kontakt ist das fachliche Gegenüber. Beide sind über die E-Mail-Adresse verbunden. Liegt die Statistik zusätzlich im Kontakt, entsteht eine zweite Quelle, und die veraltet. +- **Vorschlag:** Den Report auf `sender_observations` umstellen und den Kontakt nur noch über `email` dazuholen. Die Statistik aus `upsert_contact` herausnehmen.