From 39ef248a66edfc9565c1b50006d44cf572e6e1b5 Mon Sep 17 00:00:00 2001 From: Dotty Dotter Date: Wed, 6 May 2026 01:55:58 +0200 Subject: [PATCH] =?UTF-8?q?fix(#170):=20PM-Body=20literal=20\\n=20?= =?UTF-8?q?=E2=86=92=20echte=20Newlines?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Beobachtung beim ersten Pressereferent-Output: qwen-max liefert manchmal literale Backslash-n Sequenzen (2 chars: \\ + n) statt echter Newline-Bytes im JSON-Body. Auch mit response_format=json_object aktiv. Post-Process im PM-Generator: \\n / \\r / \\t Sequenzen durch echte Newlines / CR / Tab ersetzen. Konservativ (nur diese drei). Macht das Modal richtig formatiert mit Paragraphen-Breaks. Co-Authored-By: Claude Opus 4.7 (1M context) --- app/presse_generator.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/presse_generator.py b/app/presse_generator.py index 6944eee..30f5d47 100644 --- a/app/presse_generator.py +++ b/app/presse_generator.py @@ -314,6 +314,10 @@ async def generate_draft( titel = (result.get("titel") or "").strip()[:200] body = (result.get("body") or "").strip() + # Post-Process: qwen-max liefert manchmal literal-escapte Sequenzen + # ('\\n' als 2 chars statt echtem Newline). UI braucht echte Newlines + # fuer korrekte Paragraphen-Trennung. Konservativ: nur \\n / \\r / \\t. + body = body.replace("\\n", "\n").replace("\\r", "\r").replace("\\t", "\t") if not titel or not body: raise ValueError("LLM-Response unvollständig (titel oder body leer)")