Perf: Executive Summary nach Refresh im Hintergrund vorberechnen

Statt beim PDF-Export 30+ Sekunden auf die KI-Zusammenfassung zu
warten, wird sie jetzt automatisch nach jedem Refresh generiert.
Beim Export ist sie dann sofort verfuegbar (gecacht in DB).
Summary-Aenderungen invalidieren den Cache automatisch.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
claude-dev
2026-04-10 17:31:20 +00:00
Ursprung d15afdd2af
Commit e2e6a1ed7e

Datei anzeigen

@@ -1174,7 +1174,7 @@ class AgentOrchestrator:
sources_json = json.dumps(sources, ensure_ascii=False) if sources else previous_sources_json
await db.execute(
"UPDATE incidents SET summary = ?, sources_json = ?, updated_at = ? WHERE id = ?",
"UPDATE incidents SET summary = ?, sources_json = ?, executive_summary = NULL, updated_at = ? WHERE id = ?",
(new_summary, sources_json, now, incident_id),
)
@@ -1470,6 +1470,33 @@ class AgentOrchestrator:
logger.info(f"Refresh für Lage {incident_id} abgeschlossen: {new_count} neue Artikel")
# Executive Summary im Hintergrund vorab generieren (fuer schnelleren Export)
if new_count > 0:
async def _pregenerate_exec_summary():
try:
from report_generator import generate_executive_summary
from database import get_db
_db = await get_db()
try:
cursor = await _db.execute(
"SELECT summary, executive_summary FROM incidents WHERE id = ?",
(incident_id,),
)
_row = await cursor.fetchone()
if _row and _row["summary"] and not _row["executive_summary"]:
es = await generate_executive_summary(_row["summary"])
await _db.execute(
"UPDATE incidents SET executive_summary = ? WHERE id = ?",
(es, incident_id),
)
await _db.commit()
logger.info(f"Executive Summary fuer Lage {incident_id} vorberechnet")
finally:
await _db.close()
except Exception as e:
logger.warning(f"Executive Summary Vorberechnung fehlgeschlagen: {e}")
asyncio.create_task(_pregenerate_exec_summary())
finally:
await db.close()