From 891fc5bea02f30317d8c28e7f674157e9b3bbcde Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Wed, 29 Apr 2026 18:18:45 +0200 Subject: [PATCH] docs: add keyword-based checker problem to migration instruction MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mandatory_content_checker.py keywords break with alternative formulations. Solution: LLM-based check per mandatory field (9 calls, parallelizable). For other session to implement alongside Dict→Control migration. Co-Authored-By: Claude Opus 4.6 (1M context) --- ...STRUCTION-hardcoded-knowledge-migration.md | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/zeroclaw/INSTRUCTION-hardcoded-knowledge-migration.md b/zeroclaw/INSTRUCTION-hardcoded-knowledge-migration.md index 5e56d16..32da3a7 100644 --- a/zeroclaw/INSTRUCTION-hardcoded-knowledge-migration.md +++ b/zeroclaw/INSTRUCTION-hardcoded-knowledge-migration.md @@ -96,6 +96,58 @@ Alle betroffenen Dateien haben: - `Review-Datum: 2026-07-01` im Header - `logger.warning("... HARDCODED rules ...")` bei Nutzung +## Zusaetzliches Problem: Keyword-basierte Pflichtinhalte-Pruefung + +### Problem (identifiziert beim IHK Konstanz Test, 2026-04-29) + +Der `mandatory_content_checker.py` prueft ob DSE-Pflichtangaben vorhanden sind +per Keyword-Matching: `"zweck" in text.lower()`. Das bricht wenn: + +- Andere Formulierung: "Verarbeitungszwecke" statt "Zwecke" +- Andere Sprache: Englische DSE auf deutscher Website +- Umschreibung: "Wozu wir Ihre Daten nutzen" statt "Zwecke" + +Gleiches Problem bei `ECOMMERCE_INDICATORS` in der gleichen Datei — hartkodierte +Shop-Erkennung die neue Shop-Systeme nicht kennt. + +### Betroffene Stellen + +| Datei | Dict/Liste | Zeilen | +|-------|-----------|--------| +| `mandatory_content_checker.py` | `MANDATORY_DSE_CONTENT` keywords (9 Felder) | ~60 LOC | +| `mandatory_content_checker.py` | `MANDATORY_IMPRESSUM_CONTENT` keywords (5 Felder) | ~30 LOC | +| `mandatory_content_checker.py` | `ECOMMERCE_INDICATORS` | ~10 LOC | + +### Loesung: LLM-basierte Pflichtinhalte-Pruefung + +Statt hartkodierter Keywords → Qwen fragen: + +```python +# VORHER (hartkodiert, bricht bei neuer Formulierung): +found = any(kw in text_lower for kw in ["zweck", "purpose", "verarbeitungszweck"]) + +# NACHHER (LLM-basiert, sprachunabhaengig): +prompt = f""" +Pruefe ob der folgende Text Angaben zu den Zwecken der Datenverarbeitung +enthaelt (Art. 13 Abs. 1 lit. c DSGVO). +Antworte NUR mit: JA (mit kurzem Zitat) oder NEIN. +Text: {dse_text[:2000]} +""" +result = await query_qwen(prompt) +found = result.startswith("JA") +``` + +### Aufwand + +- 9 Pflichtfelder × 1 LLM-Call = 9 Calls (parallelisierbar) +- ~100 LOC Umbau +- Fallback auf Keywords wenn LLM nicht verfuegbar + +### Prioritaet + +MITTEL — die erweiterten Keywords funktionieren fuer 90% der Faelle. +LLM-Pruefung ist robuster aber langsamer (~30s statt <1s). + ## Memory-Datei Details: `/Users/benjaminadmin/.claude/projects/-Users-benjaminadmin-Projekte-breakpilot-lehrer/memory/hardcoded_knowledge_debt.md`