feat(topic-filter): Pre-Topic-Headline-Übersetzung für fremdsprachige Quellen

Der Topic-Filter (Haiku) hat bisher fremdsprachige Headlines (CJK, Arabisch,
Hebräisch, Kyrillisch) konservativ verworfen, weil er die Sicherheitsregel
"im Zweifel NICHT relevant" auf jeden Text anwandte, den er nicht klar lesen
konnte. Bei Lage 96 (Verfassungsänderung Japan) landeten so 79 von 87
Kandidaten im Papierkorb, darunter alle ja-Quellen mit Kanji-Headlines.

Lösung: ein eigener kleiner Haiku-Batch-Call vor dem Topic-Filter übersetzt
die Headlines (+ erste 240 Zeichen Content) fremdsprachiger Artikel ins
Englische und hängt sie als article["headline_en_for_topic"] /
"content_en_for_topic" an. Der Topic-Filter zeigt sie zusätzlich zum Original
und beurteilt damit ja/zh/ko/ar/he/ru/fa-Artikel fair.

- agents/translator.py: neue Funktion translate_headlines_for_topic_filter,
  unabhängig vom TRANSLATOR_ENABLED-Flag (Pflicht für korrekten Topic-Filter).
- agents/analyzer.py: filter_relevant_articles zeigt Übersetzungen mit an;
  Prompt-Regel erweitert.
- agents/orchestrator.py: Aufruf direkt vor dem Topic-Filter-Schritt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
2026-05-21 01:43:27 +02:00
Ursprung 3345743aa5
Commit b4898614c4
3 geänderte Dateien mit 181 neuen und 1 gelöschten Zeilen

Datei anzeigen

@@ -1139,6 +1139,25 @@ class AgentOrchestrator:
await _pipe_start("relevance")
_candidates_before_topic = len(new_candidates)
# --- Pre-Topic-Übersetzung: fremdsprachige Headlines ins Englische ---
# Damit der nachgelagerte Topic-Filter (Haiku) auch CJK/Arabisch/
# Hebräisch/Kyrillisch-Headlines fair beurteilen kann statt sie aus
# Sicherheit zu verwerfen.
if new_candidates:
try:
from agents.translator import translate_headlines_for_topic_filter
_pt_count, _pt_usage = await translate_headlines_for_topic_filter(new_candidates)
if _pt_usage:
usage_acc.add(_pt_usage)
if _pt_count:
logger.info(
f"Pre-Topic-Translate: {_pt_count} fremdsprachige Headlines übersetzt"
)
except Exception as e:
logger.warning(
f"Pre-Topic-Translate fehlgeschlagen (Pipeline laeuft weiter): {e}"
)
# --- Semantischer Topic-Filter (Haiku) ---
# Wirft Artikel raus, die zwar Keyword-Treffer hatten, aber das Kernthema
# der Lage nicht inhaltlich behandeln. Bei Fehler Fallback auf alle Kandidaten.