diff --git a/src/agents/orchestrator.py b/src/agents/orchestrator.py index b4d909d..884e114 100644 --- a/src/agents/orchestrator.py +++ b/src/agents/orchestrator.py @@ -480,12 +480,13 @@ class AgentOrchestrator: last_error = None try: - # Research-Lagen: Automatisch 3 Durchläufe - incident_type = await self._get_incident_type(incident_id) + # Research-Lagen: Automatisch 3 Durchläufe nur beim ersten Refresh + incident_type, has_summary = await self._get_incident_info(incident_id) + use_multi_pass = incident_type == "research" and not has_summary for attempt in range(3): try: - if incident_type == "research": + if use_multi_pass: await self._run_research_multi_pass(incident_id, trigger_type=trigger_type, user_id=user_id) else: await self._run_refresh(incident_id, trigger_type=trigger_type, retry_count=attempt, user_id=user_id) @@ -1398,16 +1399,18 @@ class AgentOrchestrator: await db.close() - async def _get_incident_type(self, incident_id: int) -> str: - """Incident-Typ laden (adhoc/research).""" + async def _get_incident_info(self, incident_id: int) -> tuple[str, bool]: + """Incident-Typ und Summary-Status laden.""" from database import get_db db = await get_db() try: cursor = await db.execute( - "SELECT type FROM incidents WHERE id = ?", (incident_id,) + "SELECT type, summary FROM incidents WHERE id = ?", (incident_id,) ) row = await cursor.fetchone() - return row["type"] if row else "adhoc" + if not row: + return "adhoc", False + return row["type"] or "adhoc", bool(row["summary"]) finally: await db.close()