From 834285bb16d00715ffe500b6bd5a6ad54730be34 Mon Sep 17 00:00:00 2001 From: ZhouYongyou <128128010+zhouyongyou@users.noreply.github.com> Date: Tue, 4 Nov 2025 23:59:20 +0800 Subject: [PATCH] =?UTF-8?q?fix(decision):=20replace=20fullwidth=20space=20?= =?UTF-8?q?(U+3000)=20in=20JSON=20Critical=20bug:=20AI=20can=20output=20fu?= =?UTF-8?q?llwidth=20space=20(=E3=80=80U+3000)=20between=20brackets:=20Inp?= =?UTF-8?q?ut:=20=20=EF=BC=BB=E3=80=80=EF=BD=9B"symbol":"BTCUSDT"=EF=BD=9D?= =?UTF-8?q?=EF=BC=BD=20=20=20=20=20=20=20=20=20=E2=86=91=20=E2=86=91=20ful?= =?UTF-8?q?lwidth=20space=20After=20previous=20fix:=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20[=E3=80=80{"symbol":"BTCUSDT"}]=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=E2=86=91=20fullwidth=20space=20remained!=20Result:=20val?= =?UTF-8?q?idateJSONFormat=20failed=20because:=20-=20Checks=20"[{"=20(no?= =?UTF-8?q?=20space)=20=E2=9D=8C=20-=20Checks=20"[=20{"=20(halfwidth=20spa?= =?UTF-8?q?ce=20U+0020)=20=E2=9D=8C=20-=20AI=20output=20"[=E3=80=80{"=20(f?= =?UTF-8?q?ullwidth=20space=20U+3000)=20=E2=9D=8C=20Solution:=20Replace=20?= =?UTF-8?q?fullwidth=20space=20=E2=86=92=20halfwidth=20space=20-=20?= =?UTF-8?q?=E3=80=80(U+3000)=20=E2=86=92=20space=20(U+0020)=20This=20allow?= =?UTF-8?q?s=20existing=20validation=20logic=20to=20work:=20strings.HasPre?= =?UTF-8?q?fix(trimmed,=20"[=20{")=20now=20matches=20=E2=9C=85=20Why=20ful?= =?UTF-8?q?lwidth=20space=3F=20-=20Common=20in=20CJK=20text=20editing=20-?= =?UTF-8?q?=20AI=20trained=20on=20mixed=20CJK=20content=20-=20Invisible=20?= =?UTF-8?q?to=20naked=20eye=20but=20breaks=20JSON=20parsing=20Test=20case:?= =?UTF-8?q?=20Input:=20=20=EF=BC=BB=E3=80=80=EF=BD=9B"symbol":"BTCUSDT"?= =?UTF-8?q?=EF=BD=9D=EF=BC=BD=20Output:=20[=20{"symbol":"BTCUSDT"}]=20Vali?= =?UTF-8?q?dation:=20=E2=9C=85=20PASS=20Co-Authored-By:=20tinkle-community?= =?UTF-8?q?=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- decision/engine.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/decision/engine.go b/decision/engine.go index d8decef9..71164bb4 100644 --- a/decision/engine.go +++ b/decision/engine.go @@ -487,6 +487,9 @@ func fixMissingQuotes(jsonStr string) string { jsonStr = strings.ReplaceAll(jsonStr, "〕", "]") // CJK右龟壳括号 U+3015 jsonStr = strings.ReplaceAll(jsonStr, "、", ",") // CJK顿号 U+3001 + // ⚠️ 替换全角空格为半角空格(JSON中不应该有全角空格) + jsonStr = strings.ReplaceAll(jsonStr, " ", " ") // U+3000 全角空格 + return jsonStr }