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
|
last_error = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Research-Lagen: Automatisch 3 Durchläufe
|
# Research-Lagen: Automatisch 3 Durchläufe nur beim ersten Refresh
|
||||||
incident_type = await self._get_incident_type(incident_id)
|
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):
|
for attempt in range(3):
|
||||||
try:
|
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)
|
await self._run_research_multi_pass(incident_id, trigger_type=trigger_type, user_id=user_id)
|
||||||
else:
|
else:
|
||||||
await self._run_refresh(incident_id, trigger_type=trigger_type, retry_count=attempt, user_id=user_id)
|
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()
|
await db.close()
|
||||||
|
|
||||||
|
|
||||||
async def _get_incident_type(self, incident_id: int) -> str:
|
async def _get_incident_info(self, incident_id: int) -> tuple[str, bool]:
|
||||||
"""Incident-Typ laden (adhoc/research)."""
|
"""Incident-Typ und Summary-Status laden."""
|
||||||
from database import get_db
|
from database import get_db
|
||||||
db = await get_db()
|
db = await get_db()
|
||||||
try:
|
try:
|
||||||
cursor = await db.execute(
|
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()
|
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:
|
finally:
|
||||||
await db.close()
|
await db.close()
|
||||||
|
|
||||||
|
|||||||
In neuem Issue referenzieren
Einen Benutzer sperren