fix: KI-Analyse deckt standardmäßig ALLE Inhalte ab (kein Limit-Risiko)

Das per-Scan-Limit (max_pages/images_per_scan) war ein Sicherheitsrisiko:
Inhalte jenseits des Fensters blieben über viele Scans ungeprüft. Eine
KI-Bildanalyse ist aber nur sinnvoll, wenn ALLE Bilder geprüft werden.

Neu, sauber getrennt:
- Geänderte/neue/geflaggte Inhalte werden IMMER sofort geprüft (Echtzeit-
  Schutz), ungeachtet jeder Drossel — auch wenn das Limit klein ist.
- Die Limits drosseln NUR den historischen Altbestand und sind per Default
  0 = unbegrenzt → der erste Scan deckt den kompletten Bestand ab. Dank
  Hash-Cache eine einmalige Ausgabe; Folge-Scans prüfen nur noch Neues.
- Positiver Wert bleibt als optionale Drossel nur für sehr große Sites.

Tests: 257 grün (+2: geänderte Seite trotz Drossel=1 geprüft; image-Bestand
backlog=0 deckt alle Bilder in einem Scan ab). Default-Werte 20/15 → 0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-06-13 04:12:11 +02:00
commit 369a3b8774
5 changed files with 83 additions and 31 deletions

View file

@ -119,7 +119,9 @@ DEFAULT_CONFIG: dict = {
"google/gemini-2.5-flash-lite", # Stufe 3: günstig bezahlt, zuverlässig
],
"min_chars": 200, # nur Seitentexte ab dieser Größe prüfen
"max_pages_per_scan": 20, # Kostendeckel pro Lauf
# Drossel NUR für den historischen Bestand; 0 = unbegrenzt (volle Abdeckung im
# ersten Scan). Geänderte/neue Seiten werden IMMER geprüft, ungeachtet dieses Werts.
"max_pages_per_scan": 0,
},
"image": {
"enabled": True,
@ -128,7 +130,9 @@ DEFAULT_CONFIG: dict = {
"nvidia/nemotron-nano-12b-v2-vl:free", # Stufe 2: free, Vision
"google/gemini-2.5-flash-lite", # Stufe 3: günstig bezahlt, Vision
],
"max_images_per_scan": 15,
# Drossel NUR für den Bild-Altbestand; 0 = unbegrenzt (volle Abdeckung im ersten
# Scan). Geänderte/neue/geflaggte Bilder werden IMMER geprüft, ungeachtet des Werts.
"max_images_per_scan": 0,
},
# Vorbereitet, default aus — Medien sind auf statischen Heimat-Seiten selten.
"audio": {