From 72ef0b177babafd0b1f9cb0368649d91dae24e90 Mon Sep 17 00:00:00 2001 From: hrx <18603305412@163.com> Date: Tue, 21 Apr 2026 09:37:08 +0800 Subject: [PATCH] updata --- f/web-kboss/src/api/AI/ai.js | 70 +++ .../src/assets/css/iconfont/demo_index.html | 29 +- .../src/assets/css/iconfont/iconfont.css | 10 +- .../src/assets/css/iconfont/iconfont.js | 2 +- .../src/assets/css/iconfont/iconfont.json | 7 + .../src/assets/css/iconfont/iconfont.ttf | Bin 4648 -> 4884 bytes .../src/assets/css/iconfont/iconfont.woff | Bin 3252 -> 3432 bytes .../src/assets/css/iconfont/iconfont.woff2 | Bin 2648 -> 2796 bytes .../homePage/components/topBox/index.vue | 459 +++++++++++++++++- 9 files changed, 564 insertions(+), 13 deletions(-) create mode 100644 f/web-kboss/src/api/AI/ai.js diff --git a/f/web-kboss/src/api/AI/ai.js b/f/web-kboss/src/api/AI/ai.js new file mode 100644 index 0000000..e43c230 --- /dev/null +++ b/f/web-kboss/src/api/AI/ai.js @@ -0,0 +1,70 @@ +const AI_CHAT_URL = 'https://dev.ncmatch.cn/api/ai-chat/chat/stream/' + +// AI 对话 +export const reqAIChat = (data, onMessage) => { + return fetch(AI_CHAT_URL, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(data) + }).then(async(response) => { + if (!response.ok) { + throw new Error(`HTTP ${response.status}`) + } + + if (!response.body) { + throw new Error('当前浏览器不支持流式响应') + } + + const reader = response.body.getReader() + const decoder = new TextDecoder() + let fullResponse = '' + let buffer = '' + + while (true) { + const { done, value } = await reader.read() + if (done) break + + buffer += decoder.decode(value, { stream: true }) + const lines = buffer.split('\n') + buffer = lines.pop() || '' + + lines.forEach((line) => { + if (!line.startsWith('data: ')) { + return + } + + try { + const parsed = JSON.parse(line.slice(6)) + if (parsed && parsed.content) { + fullResponse += parsed.content + if (typeof onMessage === 'function') { + onMessage(fullResponse) + } + } + } catch (error) { + // Ignore incomplete stream fragments until the next chunk arrives. + } + }) + } + + if (buffer && buffer.startsWith('data: ')) { + try { + const parsed = JSON.parse(buffer.slice(6)) + if (parsed && parsed.content) { + fullResponse += parsed.content + if (typeof onMessage === 'function') { + onMessage(fullResponse) + } + } + } catch (error) { + // Ignore invalid trailing fragments. + } + } + + return { + content: fullResponse + } + }) +} diff --git a/f/web-kboss/src/assets/css/iconfont/demo_index.html b/f/web-kboss/src/assets/css/iconfont/demo_index.html index 3c4d26b..20b7491 100644 --- a/f/web-kboss/src/assets/css/iconfont/demo_index.html +++ b/f/web-kboss/src/assets/css/iconfont/demo_index.html @@ -54,6 +54,12 @@
@font-face {
font-family: 'iconfont';
- src: url('iconfont.woff2?t=1760930186762') format('woff2'),
- url('iconfont.woff?t=1760930186762') format('woff'),
- url('iconfont.ttf?t=1760930186762') format('truetype');
+ src: url('iconfont.woff2?t=1776735138822') format('woff2'),
+ url('iconfont.woff?t=1776735138822') format('woff'),
+ url('iconfont.ttf?t=1776735138822') format('truetype');
}
我是开元智能助手,可以为您解答算力服务器选型、采购、部署和资源配置等问题。
+