docs: add keyword-based checker problem to migration instruction
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) <noreply@anthropic.com>
This commit is contained in:
@@ -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`
|
||||
|
||||
Reference in New Issue
Block a user