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:
18
src/main.py
18
src/main.py
@@ -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")
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren