Fix: Analyse-Parser erkennt jetzt Markdown-Code-Fences
Claude-Antworten mit ```json ... ``` Wrapping werden korrekt geparst. Verhindert den Verlust von Analyse-Ergebnissen bei inkrementellen Refreshes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -298,14 +298,25 @@ class AnalyzerAgent:
|
||||
|
||||
def _parse_response(self, response: str) -> dict | None:
|
||||
"""Parst die Claude-Antwort als JSON-Objekt."""
|
||||
# Markdown-Code-Fences entfernen
|
||||
cleaned = response.strip()
|
||||
if cleaned.startswith("```"):
|
||||
# Erste Zeile (```json oder ```) entfernen
|
||||
first_nl = cleaned.find(chr(10))
|
||||
if first_nl != -1:
|
||||
cleaned = cleaned[first_nl + 1:]
|
||||
if cleaned.endswith("```"):
|
||||
cleaned = cleaned[:-3].rstrip()
|
||||
|
||||
try:
|
||||
data = json.loads(response)
|
||||
data = json.loads(cleaned)
|
||||
if isinstance(data, dict):
|
||||
return data
|
||||
except json.JSONDecodeError:
|
||||
pass
|
||||
|
||||
match = re.search(r'\{.*\}', response, re.DOTALL)
|
||||
# Fallback: aeusserstes JSON-Objekt per Regex finden
|
||||
match = re.search(r"""\{.*\}""", response, re.DOTALL)
|
||||
if match:
|
||||
try:
|
||||
data = json.loads(match.group())
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren