feat(topic-filter): jeden verworfenen Artikel einzeln loggen + Pre-Topic-Content auf 500 Zeichen erhöhen
Beim Aktualisieren von Lage 96 (Verfassungsänderung Japan) ist der Topic-Filter in den letzten Refreshes auf 2/15, 4/26 bzw. 7/23 zurückgefallen. Die jp-RSS- Treffer aus Asahi-Politik, NHK-Politik und Mainichi werden offenbar verworfen, aber ohne Detail-Log lässt sich nicht beurteilen, ob das gerechtfertigt ist. - analyzer.filter_relevant_articles: pro verworfenem Artikel eine INFO-Zeile mit laufendem Index, Quelle, Original-Headline und (falls vorhanden) der englischen Pre-Topic-Übersetzung. Ohne zusätzlichen Claude-Call, nur Logging des bereits vorhandenen Materials. - translator._TOPIC_TRANSLATE_CONTENT_MAX von 240 auf 500 erhöht. Bei dichten Kanji- oder kyrillischen Headlines reichten 240 Zeichen oft nicht aus, um dem nachgelagerten Topic-Filter den thematischen Kontext zu vermitteln. Mehrkosten pro Refresh: vernachlässigbar (Haiku, einmal pro Refresh). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -566,7 +566,10 @@ class AnalyzerAgent:
|
||||
}
|
||||
filtered = [a for i, a in enumerate(articles, 1) if i in relevant_set]
|
||||
|
||||
rejected = len(articles) - len(filtered)
|
||||
rejected_articles = [
|
||||
(idx, a) for idx, a in enumerate(articles, 1) if idx not in relevant_set
|
||||
]
|
||||
rejected = len(rejected_articles)
|
||||
if not filtered and articles:
|
||||
logger.warning(
|
||||
f"Topic-Filter hat ALLE {len(articles)} Artikel verworfen — "
|
||||
@@ -578,6 +581,14 @@ class AnalyzerAgent:
|
||||
f"Topic-Filter: {len(filtered)}/{len(articles)} Artikel thematisch relevant "
|
||||
f"({rejected} verworfen)"
|
||||
)
|
||||
for idx, a in rejected_articles:
|
||||
src = a.get("source", "Unbekannt")
|
||||
hl = (a.get("headline_de") or a.get("headline") or "").strip()
|
||||
hl_en = (a.get("headline_en_for_topic") or "").strip()
|
||||
if hl_en and hl_en.lower() != hl.lower():
|
||||
logger.info("Topic-Filter REJECT [%d] %s | %s | EN: %s", idx, src, hl[:120], hl_en[:120])
|
||||
else:
|
||||
logger.info("Topic-Filter REJECT [%d] %s | %s", idx, src, hl[:120])
|
||||
return filtered, usage
|
||||
|
||||
async def generate_latest_developments(
|
||||
|
||||
@@ -233,7 +233,7 @@ async def translate_articles_batch(
|
||||
# sie wird auch dann gemacht, wenn der nachgelagerte Volltext-Translator
|
||||
# deaktiviert ist (Pflicht für korrektes Topic-Filtering, sehr kleine Kosten).
|
||||
|
||||
_TOPIC_TRANSLATE_CONTENT_MAX = 240
|
||||
_TOPIC_TRANSLATE_CONTENT_MAX = 500
|
||||
|
||||
|
||||
def _needs_pretopic_translate(article: dict) -> bool:
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren