fix(source_suggester): Strategie-Eskalation vor Karteileichen ausfuehren
Live-Test heute zeigte: Strategie-Eskalations-Heuristik hat keine Vorschlaege erzeugt, obwohl Verfassungsschutz und Rheinische Post beide fetch_strategy= googlebot UND status=error haben. Grund: die Karteileichen-Heuristik lief zuerst und fing diese Sources schon ein (article_count=0, weil googlebot- Workaround blockiert), sodass die Doppel-Vermeidung der Strategie- Eskalations-Stufe alles uebersprungen hat. Fix: Reihenfolge in generate_suggestions umgekehrt. Strategie-Eskalation zuerst (spezifischere Diagnose mit Begruendung "Workaround greift nicht: HTTP 403"), Karteileichen danach (generische Auffanglogik).
Dieser Commit ist enthalten in:
@@ -179,19 +179,22 @@ async def generate_strategy_escalation_suggestions(db: aiosqlite.Connection) ->
|
|||||||
async def generate_suggestions(db: aiosqlite.Connection) -> int:
|
async def generate_suggestions(db: aiosqlite.Connection) -> int:
|
||||||
"""Generiert Quellen-Vorschläge basierend auf Health-Checks und Lückenanalyse.
|
"""Generiert Quellen-Vorschläge basierend auf Health-Checks und Lückenanalyse.
|
||||||
|
|
||||||
Drei Stufen:
|
Drei Stufen, in dieser Reihenfolge ausgeführt (spezifisch -> generisch -> KI):
|
||||||
1. Deterministisch: Karteileichen-Heuristik (article_count=0 oder >60d stumm)
|
1. Deterministisch: Strategie-Eskalations-Heuristik (fetch_strategy=googlebot
|
||||||
erzeugt sofort deactivate_source-Vorschläge ohne KI-Aufruf.
|
|
||||||
2. Deterministisch: Strategie-Eskalations-Heuristik (fetch_strategy=googlebot
|
|
||||||
oder paywall, aber Reachability weiter error) erzeugt deactivate_source-
|
oder paywall, aber Reachability weiter error) erzeugt deactivate_source-
|
||||||
Vorschläge mit Priorität 'high'.
|
Vorschläge mit Priorität 'high'. Spezifischste Diagnose: "Workaround
|
||||||
|
greift nicht". Läuft ZUERST, damit diese Sources nicht von der
|
||||||
|
generischeren Karteileichen-Stufe weggefangen werden.
|
||||||
|
2. Deterministisch: Karteileichen-Heuristik (article_count=0 oder >60d stumm)
|
||||||
|
erzeugt sofort deactivate_source-Vorschläge für alle übrigen toten
|
||||||
|
Quellen ohne KI-Aufruf.
|
||||||
3. KI-basiert: Haiku schaut sich Quellensammlung + Health-Probleme an
|
3. KI-basiert: Haiku schaut sich Quellensammlung + Health-Probleme an
|
||||||
und schlägt weitere Verbesserungen vor (add_source, deactivate_source,
|
und schlägt weitere Verbesserungen vor (add_source, deactivate_source,
|
||||||
fix_url, ...).
|
fix_url, ...).
|
||||||
Rückgabe ist die Gesamtzahl neu erzeugter Vorschläge aller Stufen.
|
Rückgabe ist die Gesamtzahl neu erzeugter Vorschläge aller Stufen.
|
||||||
"""
|
"""
|
||||||
stale_count = await generate_stale_deactivation_suggestions(db)
|
|
||||||
strategy_count = await generate_strategy_escalation_suggestions(db)
|
strategy_count = await generate_strategy_escalation_suggestions(db)
|
||||||
|
stale_count = await generate_stale_deactivation_suggestions(db)
|
||||||
|
|
||||||
logger.info("Starte Quellen-Vorschläge via Haiku...")
|
logger.info("Starte Quellen-Vorschläge via Haiku...")
|
||||||
|
|
||||||
|
|||||||
In neuem Issue referenzieren
Einen Benutzer sperren