From 8132f268918cec15b256653a306bcf1f293c9ed3 Mon Sep 17 00:00:00 2001 From: wanghanlin <1533525126@qq.com> Date: Tue, 18 Aug 2026 11:53:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(sdk-test):=20=E6=B5=8B=E8=AF=95=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E9=87=8D=E6=9E=84=E4=B8=BA=20Vue=203=20+=20TDesign=20?= =?UTF-8?q?Chat=20=E5=BA=94=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 Vite 多页入口 sdk-test.html 与 SdkTestPanel.vue,用 TDesign Chat(ChatList/ChatSender/ChatActionbar)渲染对话演示 - 对话演示直调 GET /ai/chat/stream(OpenAI 格式),复用 readSSEStream 解析 delta.content,支持同步/流式、RAG 开关与来源展示 - SDK 集成验证区精简为 10 个核心用例,接口统一迁到新路径 /ai/chat* - cp-to-static.mjs 构建后将 sdk-test.html 移动到 static/sdk/test.html --- frontend/cp-to-static.mjs | 12 +- frontend/sdk-test.html | 12 + frontend/src/sdk-test/SdkTestPanel.vue | 1478 +++++++++++++++++++++++ frontend/src/sdk-test/main.ts | 14 + frontend/vite.config.ts | 6 + src/main/resources/static/sdk/test.html | 725 +---------- 6 files changed, 1539 insertions(+), 708 deletions(-) create mode 100644 frontend/sdk-test.html create mode 100644 frontend/src/sdk-test/SdkTestPanel.vue create mode 100644 frontend/src/sdk-test/main.ts diff --git a/frontend/cp-to-static.mjs b/frontend/cp-to-static.mjs index be7e4d4..74b050b 100644 --- a/frontend/cp-to-static.mjs +++ b/frontend/cp-to-static.mjs @@ -2,7 +2,7 @@ * Vite build 后自动将产物复制到 Spring Boot 静态资源目录。 * 由 npm postbuild 钩子触发。 */ -import { cpSync, existsSync, readdirSync, rmSync } from 'node:fs'; +import { cpSync, existsSync, mkdirSync, readdirSync, rmSync } from 'node:fs'; import { join } from 'node:path'; const DIST = 'dist'; @@ -25,3 +25,13 @@ if (existsSync(DIST)) { console.error('✗ dist 目录不存在,请先执行 vite build'); process.exit(1); } + +// 3. 将 sdk-test 多页产物移动到 sdk/test.html(资源引用为绝对路径 /assets/...,移动后仍可解析) +const sdkTestHtml = join(TARGET, 'sdk-test.html'); +if (existsSync(sdkTestHtml)) { + const sdkDir = join(TARGET, 'sdk'); + if (!existsSync(sdkDir)) mkdirSync(sdkDir, { recursive: true }); + cpSync(sdkTestHtml, join(sdkDir, 'test.html')); + rmSync(sdkTestHtml); + console.log('✓ 已移动 sdk-test.html → sdk/test.html'); +} diff --git a/frontend/sdk-test.html b/frontend/sdk-test.html new file mode 100644 index 0000000..97cdb09 --- /dev/null +++ b/frontend/sdk-test.html @@ -0,0 +1,12 @@ + + + + + + ChatbotSDK 测试面板 + + +
+ + + diff --git a/frontend/src/sdk-test/SdkTestPanel.vue b/frontend/src/sdk-test/SdkTestPanel.vue new file mode 100644 index 0000000..36584bf --- /dev/null +++ b/frontend/src/sdk-test/SdkTestPanel.vue @@ -0,0 +1,1478 @@ + + + + + diff --git a/frontend/src/sdk-test/main.ts b/frontend/src/sdk-test/main.ts new file mode 100644 index 0000000..29ff3a7 --- /dev/null +++ b/frontend/src/sdk-test/main.ts @@ -0,0 +1,14 @@ +/** + * SDK 测试面板入口(多页应用) + * + * 独立于管理后台 main 入口,产物构建到 dist/sdk-test.html, + * 由 cp-to-static.mjs 移动到 static/sdk/test.html。 + */ +import { createApp } from 'vue' +import TDesign from 'tdesign-vue-next' +import 'tdesign-vue-next/es/style/index.css' +import SdkTestPanel from './SdkTestPanel.vue' + +const app = createApp(SdkTestPanel) +app.use(TDesign) +app.mount('#sdk-test-app') diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 97e5e86..6ded3ee 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -39,6 +39,12 @@ export default defineConfig({ minify: 'esbuild', // esbuild 比 terser 快 20-40 倍 reportCompressedSize: false, // 跳过压缩体积报告,省 1~3s rollupOptions: { + input: { + // 管理后台主入口 + main: resolve(__dirname, 'index.html'), + // SDK 测试面板(多页入口,产物由 cp-to-static 移动到 static/sdk/test.html) + 'sdk-test': resolve(__dirname, 'sdk-test.html'), + }, output: { // 拆出独立 chunk,浏览器可长期缓存 manualChunks(id) { diff --git a/src/main/resources/static/sdk/test.html b/src/main/resources/static/sdk/test.html index b7e6ed6..946888d 100644 --- a/src/main/resources/static/sdk/test.html +++ b/src/main/resources/static/sdk/test.html @@ -1,710 +1,21 @@ - - - -ChatbotSDK 测试面板 - - - -
-
-
-
- ← 返回管理后台 - API 文档 ↗ -
-

🧪 ChatbotSDK 测试面板

-

P0 核心 · P1 体验增强 · P2 运营完善

-
-
-
- ⭕ SDK 未加载 - ⭕ API 未测 -
- - -
- 📋 参数映射(SDK → 后端)
- integrateId → roleId(客服角色 ID)
- userId → accountId(外部用户ID)
- chatId → 自动管理(从 /conversation/list 获取或自动生成) -
- - -
-
🔐 SDK Token 鉴权
-
- -
- - -
-
调用 POST /open-api/auth/token 换取 SDK Token
-
-
- - -
Token 有效期默认 2 小时,过期需重新获取
-
-
- -
- - -
对应后端 AiController 的 roleId 参数
-
-
- - -
-
- - -
对应后端 AiController 的 accountId 参数
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
留空则不显示水印
-
-
-
- -
-
- - - -
-
- - - -
- -
-
- 💡 操作提示
- 1. integrateId 填写客服角色 ID(数字,对应后端 roleId)
- 2. userId 填写外部用户ID(对应后端 accountId)
- 3. chatId 自动管理:从 /conversation/list 获取或自动生成
- 4. 拖拽窗口右下角手柄可缩放窗口,尺寸自动保存
- 5. 对话历史从后端加载(点击头部时钟图标查看)
- 6. AI 回复支持 Markdown 渲染
- 7. SDK 默认启用 RAG 检索;开启 showCategorySwitch 可选择知识库分类 -
- -
- - -
-
- 📋 接入代码 -
-
- - -
- -
-
-
-

-        
-
-
-
- -
-
-

📋 测试用例

-
-
- - - - -
- -
-
-
-
-
22
总用例数
-
0
通过
-
0
失败
-
0
API 调用
-
-
平均延迟
-
0
跳过
-
-
-
- -
-
- - - - - + + + + ChatbotSDK 测试面板 + + + + + + + + + + + + +
+