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:
|
def _parse_response(self, response: str) -> dict | None:
|
||||||
"""Parst die Claude-Antwort als JSON-Objekt."""
|
"""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:
|
try:
|
||||||
data = json.loads(response)
|
data = json.loads(cleaned)
|
||||||
if isinstance(data, dict):
|
if isinstance(data, dict):
|
||||||
return data
|
return data
|
||||||
except json.JSONDecodeError:
|
except json.JSONDecodeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
match = re.search(r'\{.*\}', response, re.DOTALL)
|
# Fallback: aeusserstes JSON-Objekt per Regex finden
|
||||||
|
match = re.search(r"""\{.*\}""", response, re.DOTALL)
|
||||||
if match:
|
if match:
|
||||||
try:
|
try:
|
||||||
data = json.loads(match.group())
|
data = json.loads(match.group())
|
||||||
|
|||||||
In neuem Issue referenzieren
Einen Benutzer sperren