fix: Multi-Pass nur beim ersten Refresh einer Research-Lage
3 automatische Durchläufe laufen nur wenn noch kein Briefing existiert (erster Refresh). Folge-Refreshes machen wie bisher einen einzelnen Durchlauf, um unnötige Token-Kosten zu vermeiden.
Dieser Commit ist enthalten in:
@@ -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()
|
||||
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren