integrity_scanner_fuer_stat.../scanner
Dieter Schlüter 125d80e7f9 feat: adaptiver Modell-Router (Circuit-Breaker) + parallele KI-Analyse
Der reale Erst-Scan dauerte ~10 min, weil pro Kandidat sequenziell erst die
rate-limited Free-Modelle (429) probiert wurden. Zwei Hebel beheben das:

1. ModelRouter: programmatische Telemetrie statt LLM-Orchestrator. Pro Modell
   Erfolg/Latenz; ausgefallene/rate-limited Modelle bekommen per Circuit-Breaker
   einen Cooldown und werden übersprungen, das schnellste gesunde Modell zuerst.
   Failsafe-Pruning toter Slugs über OpenRouter /models (24h-Cache). State
   persistent in data/ai_router_state.json.

2. Parallelisierung: ThreadPoolExecutor mit konfigurierbarer max_concurrency
   (Default 8, I/O-gebunden → an API-Rate-Limits gebunden, nicht an CPU-Kerne).
   Klassifikationen laufen nebenläufig, Merge im Hauptthread (keine Locks),
   findings deterministisch sortiert. Fingerprint-Gruppierung: identischer
   Inhalt wird nur einmal klassifiziert, Funde aber für alle URLs emittiert.

Realtest bredelar.info: Frisch-Scan von ~10 min auf 1:01 min; Breaker öffnete
14× (Free-Modelle übersprungen), alle Verdikte von gemini-2.5-flash-lite.

Config: max_concurrency, breaker_failure_threshold, breaker_cooldown_seconds,
refresh_models. Tests: 251 grün (+12: Router-Reihung/Breaker/Pruning-failsafe,
parallel==sequenziell, Dedup, deterministische Reihenfolge).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 02:51:30 +02:00
..
__init__.py feat: initial implementation of website integrity scanner 2026-06-12 00:51:41 +02:00
__main__.py feat: KI-Absicherung gegen Falsch-Negative bei Dienstausfall 2026-06-13 00:50:36 +02:00
ai_analyzer.py feat: adaptiver Modell-Router (Circuit-Breaker) + parallele KI-Analyse 2026-06-13 02:51:30 +02:00
alerter.py feat: KI-Absicherung gegen Falsch-Negative bei Dienstausfall 2026-06-13 00:50:36 +02:00
baseline.py feat: adaptiver Modell-Router (Circuit-Breaker) + parallele KI-Analyse 2026-06-13 02:51:30 +02:00
checker.py feat: single-line progress indicator during crawl and ext-link check 2026-06-12 17:17:37 +02:00
config.py feat: adaptiver Modell-Router (Circuit-Breaker) + parallele KI-Analyse 2026-06-13 02:51:30 +02:00
crawler.py feat: sitemap seeding — discover orphan pages not reachable via links 2026-06-12 17:58:52 +02:00
differ.py feat: exclude_paths — skip dynamic areas (RSS feeds, news archives) from scan 2026-06-12 13:14:06 +02:00
extractor.py fix: Bugfixes, toten Code entfernt, Cache-Normalisierung & Session 2026-06-12 03:20:32 +02:00
plain.py feat: KI-Absicherung gegen Falsch-Negative bei Dienstausfall 2026-06-13 00:50:36 +02:00