CORS-Origin und Magic-Link-URL von osint.intelsight.de auf monitor.aegis-sight.de
umgestellt. Claude CLI Pfad auf /usr/bin/claude aktualisiert.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- DEV_MODE flag in config.py (env var, default true for dev server)
- Log rotation: 5 MB max, 5 backups (RotatingFileHandler)
- DEBUG level in dev mode, INFO in production
- HTTP request logging middleware (dev mode only, skips static files)
- External library log levels suppressed (httpx, httpcore, uvicorn)
- Customer version: set DEV_MODE=false to disable verbose logging
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- researcher.py/factchecker.py: TimeoutError wird nach oben durchgereicht
statt vom breiten except Exception geschluckt zu werden
- orchestrator.py: Built-in TimeoutError zu TRANSIENT_ERRORS hinzugefuegt
(war nur asyncio.TimeoutError, aber claude_client wirft TimeoutError)
- config.py: CLAUDE_TIMEOUT von 300s auf 420s erhoeht
Vorher: Timeout fuehrte zu "0 Artikel" ohne Retry (8 Timeouts seit 28.02.)
Nachher: Timeout loest bis zu 3 Retries aus (sofort, +2min, +5min)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- config.py: MAX_FEEDS_PER_DOMAIN=3, MAX_ARTICLES_PER_DOMAIN_RSS=10
- rss_parser.py: _apply_domain_cap() begrenzt Artikel pro Domain nach RSS-Fetch
- orchestrator.py: Domain-Balance vor Feed-Selektion (max 3 Feeds/Domain),
Domain-Cap in Background-Discovery
- source_rules.py: article_count in get_feeds_with_metadata(), Content-Hash
in _validate_feed() für Duplikat-Erkennung bei Discovery
- researcher.py: QUELLENVIELFALT-Regel im Haiku Feed-Selektions-Prompt
- DB: 52 WordPress-Redirect-Duplikate deaktiviert (netzpolitik.org, bashinho.de)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>