Täglicher Quellen-Health-Check + Haiku-Vorschläge

- Neue Tabellen: source_health_checks, source_suggestions
- source_health.py: Prüft Erreichbarkeit, Feed-Validität, Aktualität, Duplikate
- source_suggester.py: KI-gestützte Vorschläge via Claude Haiku
- APScheduler Job: Automatischer Check täglich um 04:00

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dieser Commit ist enthalten in:
claude-dev
2026-03-08 15:26:24 +01:00
Ursprung 6f2aac7313
Commit 40f2954811
4 geänderte Dateien mit 585 neuen und 0 gelöschten Zeilen

Datei anzeigen

@@ -19,6 +19,8 @@ from config import STATIC_DIR, LOG_DIR, DATA_DIR, TIMEZONE
from database import init_db, get_db
from auth import decode_token
from agents.orchestrator import orchestrator
from services.source_health import run_health_checks, get_health_summary
from services.source_suggester import generate_suggestions
# Logging
os.makedirs(LOG_DIR, exist_ok=True)
@@ -140,6 +142,21 @@ async def check_auto_refresh():
await db.close()
async def daily_source_health_check():
"""Täglicher Quellen-Health-Check + KI-Vorschläge."""
db = await get_db()
try:
result = await run_health_checks(db)
logger.info(f"Täglicher Health-Check: {result['checked']} geprüft, {result['issues']} Probleme")
suggestion_count = await generate_suggestions(db)
logger.info(f"Tägliche Vorschläge: {suggestion_count} neue Vorschläge")
except Exception as e:
logger.error(f"Täglicher Health-Check Fehler: {e}", exc_info=True)
finally:
await db.close()
async def cleanup_expired():
"""Bereinigt abgelaufene Lagen basierend auf retention_days."""
db = await get_db()
@@ -218,6 +235,7 @@ async def lifespan(app: FastAPI):
scheduler.add_job(check_auto_refresh, "interval", minutes=1, id="auto_refresh")
scheduler.add_job(cleanup_expired, "interval", hours=1, id="cleanup")
scheduler.add_job(daily_source_health_check, "cron", hour=4, minute=0, id="source_health")
scheduler.start()
logger.info("OSINT Lagemonitor gestartet")