diff --git a/src/agents/analyzer.py b/src/agents/analyzer.py index 653731c..02613f0 100644 --- a/src/agents/analyzer.py +++ b/src/agents/analyzer.py @@ -35,6 +35,7 @@ REGELN: - KEINE Gedankenstriche (—, –) verwenden — stattdessen Kommas, Doppelpunkte oder neue Saetze - Nur gesicherte Informationen in die Zusammenfassung - Bei widersprüchlichen Angaben beide Seiten erwähnen +- Wenn eine Quelle eine erkennbare Ausrichtung hat (z.B. pro-russisch, pro-iranisch, staatsnah, rechtsextrem), muss dies im Fliesstext erwaehnt werden, damit der Leser die Information einordnen kann. Beispiel: "Laut dem pro-russischen Telegram-Kanal Rybar..." oder "Die iranische Nachrichtenagentur Fars meldete..." oder "Der rechtsextreme Kanal Compact behauptete..." - Quellen immer mit [Nr] referenzieren - Jede verwendete Quelle MUSS im sources-Array aufgelistet sein - Nummeriere die Quellen fortlaufend ab [1] @@ -87,6 +88,7 @@ REGELN: - KEINE Gedankenstriche (—, –) verwenden — stattdessen Kommas, Doppelpunkte oder neue Saetze - Nur gesicherte Informationen verwenden - Bei widersprüchlichen Angaben beide Seiten erwähnen +- Wenn eine Quelle eine erkennbare Ausrichtung hat (z.B. pro-russisch, pro-iranisch, staatsnah, rechtsextrem), muss dies im Fliesstext erwaehnt werden, damit der Leser die Information einordnen kann. Beispiel: "Laut dem pro-russischen Telegram-Kanal Rybar..." oder "Die iranische Nachrichtenagentur Fars meldete..." oder "Der rechtsextreme Kanal Compact behauptete..." - Quellen immer mit [Nr] referenzieren - Jede verwendete Quelle MUSS im sources-Array aufgelistet sein - Nummeriere die Quellen fortlaufend ab [1] @@ -134,6 +136,7 @@ REGELN: - Neutral und sachlich - keine Wertungen oder Spekulationen - KEINE Gedankenstriche (—, –) verwenden — stattdessen Kommas, Doppelpunkte oder neue Saetze - Bei widersprüchlichen Angaben beide Seiten erwähnen +- Wenn eine Quelle eine erkennbare Ausrichtung hat (z.B. pro-russisch, pro-iranisch, staatsnah, rechtsextrem), muss dies im Fliesstext erwaehnt werden, damit der Leser die Information einordnen kann. Beispiel: "Laut dem pro-russischen Telegram-Kanal Rybar..." oder "Die iranische Nachrichtenagentur Fars meldete..." oder "Der rechtsextreme Kanal Compact behauptete..." - Quellen immer mit [Nr] referenzieren - Ältere Quellen zeitlich einordnen @@ -178,6 +181,7 @@ REGELN: - KEINE Gedankenstriche (—, –) verwenden — stattdessen Kommas, Doppelpunkte oder neue Saetze - Neue Erkenntnisse einarbeiten - Veraltete Informationen aktualisieren +- Wenn eine Quelle eine erkennbare Ausrichtung hat (z.B. pro-russisch, pro-iranisch, staatsnah, rechtsextrem), muss dies im Fliesstext erwaehnt werden, damit der Leser die Information einordnen kann. Beispiel: "Laut dem pro-russischen Telegram-Kanal Rybar..." oder "Die iranische Nachrichtenagentur Fars meldete..." oder "Der rechtsextreme Kanal Compact behauptete..." - Quellen immer mit [Nr] referenzieren - Markdown-Überschriften (##) für die Abschnitte verwenden @@ -203,6 +207,9 @@ class AnalyzerAgent: if url: articles_text += f"URL: {url}\n" articles_text += f"Sprache: {article.get('language', 'de')}\n" + bias = article.get('source_bias', '') + if bias: + articles_text += f"Einordnung: {bias}\n" published = article.get('published_at', '') if published: articles_text += f"Veröffentlicht: {published}\n" diff --git a/src/agents/orchestrator.py b/src/agents/orchestrator.py index 8862636..d3731f2 100644 --- a/src/agents/orchestrator.py +++ b/src/agents/orchestrator.py @@ -884,6 +884,45 @@ class AgentOrchestrator: "data": {"status": "analyzing", "detail": "Analyse und Faktencheck laufen parallel...", "started_at": now_utc}, }, visibility, created_by, tenant_id) + # Quelleneinordnung (Bias) an Artikel anhaengen + try: + cursor = await db.execute( + "SELECT name, domain, bias FROM sources WHERE bias IS NOT NULL" + ) + _bias_rows = await cursor.fetchall() + _bias_by_domain = {} + _bias_by_name = {} + for br in _bias_rows: + brd = dict(br) + if brd.get("domain"): + _bias_by_domain[brd["domain"].lower()] = brd["bias"] + if brd.get("name"): + _bias_by_name[brd["name"].lower()] = brd["bias"] + + def _enrich_bias(articles_list): + if not articles_list: + return + for art in articles_list: + if art.get("source_bias"): + continue + src = (art.get("source") or "").lower() + url = (art.get("source_url") or "").lower() + # Match by name + bias = _bias_by_name.get(src) + if not bias: + # Match by domain in URL + for dom, b in _bias_by_domain.items(): + if dom and dom in url: + bias = b + break + if bias: + art["source_bias"] = bias + + _enrich_bias(new_articles_for_analysis) + _enrich_bias(all_articles_preloaded) + except Exception as e: + logger.warning("Bias-Anreicherung fehlgeschlagen (Pipeline laeuft weiter): %s", e) + # --- Analyse-Task --- async def _do_analysis(): analyzer = AnalyzerAgent()