Fehlerhafte Anylysen werden nicht mehr als erledigt behandelt und Signal Notification stabiler gemacht

This commit is contained in:
2026-04-03 15:17:26 +02:00
parent 3c0960ad76
commit e7b2d605d4

View File

@@ -21,7 +21,7 @@ SIGNAL_NUMBER = os.getenv("SIGNAL_NUMBER")
SIGNAL_GROUPE_ID = os.getenv("SIGNAL_GROUPE_ID")
DEBUG_LOG = os.getenv("DEBUG_LOG", "false").lower() == "true"
MIN_RELEVANZ_SCORE = int(os.getenv("MIN_RELEVANZ_SCORE", "30"))
GEMINI_MODEL = "gemini-3-flash-preview"
GEMINI_MODEL = "gemini-2.5-flash-lite"
GEMINI_SESSION = "1"
NTFY = "true"
SIGNAL = "true"
@@ -108,7 +108,7 @@ def analysiere_mit_gemini(text):
}
def sende_signal(titel, nachricht, signal_number, signal_group_id):
def sende_signal(titel, nachricht, klick_url, signal_number, signal_group_id):
"""Sendet eine Benachrichtigung über Signal direkt vom lokalen System."""
if not signal_number or not signal_group_id:
print(
@@ -117,7 +117,7 @@ def sende_signal(titel, nachricht, signal_number, signal_group_id):
return
# Nachricht formatieren: Titel in der ersten Zeile, Nachricht in der nächsten
message_content = f"{titel}\n{nachricht}"
message_content = f"{titel}\n{nachricht}\n{(klick_url,)}"
# Befehl für die direkte Ausführung lokal
# Der Config-Pfad muss hier dem Pfad entsprechen, den Sie bei der Registrierung verwendet haben
@@ -283,6 +283,26 @@ def verarbeite_website(url):
artikel_inhalt = hole_artikel_text(link)
analyse = analysiere_mit_gemini(artikel_inhalt)
# Prüfen, ob die KI-Analyse einen kritischen Fehler meldet
# Ein Fehler wird angenommen, wenn 'begruendung_score' mit "Fehler:" beginnt
# oder wenn der Score 0 ist und eine Fehlermeldung im 'begruendung_score' vorhanden ist.
is_analysis_error = analyse.get("begruendung_score", "").startswith(
"Fehler:"
) or (
analyse.get("relevanz_score", 0) == 0
and "Fehler:" in analyse.get("begruendung_score", "")
)
if is_analysis_error:
print(
f" [!] Analyse fehlgeschlagen für {link}: {analyse.get('begruendung_score')}"
)
debug(
f"Skipping article processing and not marking as processed due to analysis error: {link}"
)
continue # Nächsten Artikel im Loop bearbeiten, diesen nicht als erledigt markieren
# Wenn die Analyse erfolgreich war (auch wenn der Score niedrig ist):
score = analyse.get("relevanz_score", 0)
begruendung = analyse.get(
"begruendung_score", "Keine Begründung vorhanden"
@@ -309,6 +329,7 @@ def verarbeite_website(url):
sende_signal(
titel=analyse.get("titel", "Polit-Update"),
nachricht=analyse.get("nachricht", "Neu auf der Seite"),
klick_url=link,
signal_number=SIGNAL_NUMBER,
signal_group_id=SIGNAL_GROUPE_ID,
)
@@ -349,6 +370,24 @@ def verarbeite_website(url):
else:
analyse = analysiere_mit_gemini(line)
# Prüfen, ob die KI-Analyse einen kritischen Fehler meldet
is_analysis_error = analyse.get(
"begruendung_score", ""
).startswith("Fehler:") or (
analyse.get("relevanz_score", 0) == 0
and "Fehler:" in analyse.get("begruendung_score", "")
)
if is_analysis_error:
print(
f" [!] Analyse fehlgeschlagen für {target_url}: {analyse.get('begruendung_score')}"
)
debug(
f"Skipping article processing and not marking as processed due to analysis error: {target_url}"
)
continue # Nächste Zeile im Diff bearbeiten, diesen nicht als erledigt markieren
# Wenn die Analyse erfolgreich war (auch wenn der Score niedrig ist):
score = analyse.get("relevanz_score", 0)
begruendung = analyse.get(
"begruendung_score", "Keine Begründung vorhanden"
@@ -382,6 +421,7 @@ def verarbeite_website(url):
nachricht=analyse.get(
"nachricht", "Neu auf der Seite"
),
klick_url=link,
signal_number=SIGNAL_NUMBER,
signal_group_id=SIGNAL_GROUPE_ID,
)