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:
claude-dev
2026-03-09 20:55:08 +01:00
Ursprung 1f3b3cb858
Commit 6b11d643b9

Datei anzeigen

@@ -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())