From e295922209fb87c6dcd68ea1560fd16c3e6d808c Mon Sep 17 00:00:00 2001
From: dongyukun <1208714201@qq.com>
Date: 星期五, 27 六月 2025 09:36:51 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/feature/ai'

---
 src/views/ai/utils/utils.ts |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/src/views/ai/utils/utils.ts b/src/views/ai/utils/utils.ts
new file mode 100644
index 0000000..2688533
--- /dev/null
+++ b/src/views/ai/utils/utils.ts
@@ -0,0 +1,30 @@
+/**
+ * Created by 工业互联网平台
+ *
+ * AI 枚举类
+ *
+ * 问题:为什么不放在 src/utils/common-utils.ts 呢?
+ * 回答:主要 AI 是可选模块,考虑到独立、解耦,所以放在了 /views/ai/utils/common-utils.ts
+ */
+
+/**  判断字符串是否包含中文  */
+export const hasChinese = (str: string) => {
+  return /[\u4e00-\u9fa5]/.test(str)
+}
+
+export const formatReasoningContent = (content: string) => {
+  // 匹配 "数字" + "." + ("中文"或"空格") + "其他内容" + ":"
+  const stepRegex = /(\d+\.(?:[\u4e00-\u9fa5]|\s)[^:]*:)(\s*)/g;
+
+  // 替换逻辑:
+  // - 如果标题后没有换行(即 `$2` 是空或只有空格),则添加 `<br>`
+  // - 如果标题后已有换行(如 `\n` 或 `<br>`),则不额外添加
+  return content.replace(
+    stepRegex,
+    (match, title, whitespace) => {
+      const hasNewline = whitespace.includes('\\n') || whitespace.includes('<br>');
+      const lineBreak = hasNewline ? '' : '<br>';
+      return `<strong style="font-size: 16px; line-height: 32px; color: #FFFFFF;">${title}</strong>${lineBreak}`;
+    }
+  );
+}

--
Gitblit v1.9.3