From 92c6be5df657b6abe3d28cab97da1f042b22cde3 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] fix(decision): replace fullwidth space (U+3000) in JSON MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Critical bug: AI can output fullwidth space ( U+3000) between brackets: Input: [ {"symbol":"BTCUSDT"}] ↑ ↑ fullwidth space After previous fix: [ {"symbol":"BTCUSDT"}] ↑ fullwidth space remained! Result: validateJSONFormat failed because: - Checks "[{" (no space) ❌ - Checks "[ {" (halfwidth space U+0020) ❌ - AI output "[ {" (fullwidth space U+3000) ❌ Solution: Replace fullwidth space → halfwidth space -  (U+3000) → space (U+0020) This allows existing validation logic to work: strings.HasPrefix(trimmed, "[ {") now matches ✅ Why fullwidth space? - Common in CJK text editing - AI trained on mixed CJK content - Invisible to naked eye but breaks JSON parsing Test case: Input: [ {"symbol":"BTCUSDT"}] Output: [ {"symbol":"BTCUSDT"}] Validation: ✅ PASS 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: tinkle-community --- 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 }