From 57b18c0a659efae425005ee394a4702166d2baf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=AF=E8=BE=89?= Date: Fri, 1 May 2026 02:48:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=AD=97=E5=85=B8=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=8A=A0=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.js | 4 +-- hook/useTTSPlayer.js | 17 +++++++++--- packageA/pages/chat/components/ai-paging.vue | 5 ++-- packageB/login.vue | 28 ++++++++++---------- utils/request.js | 5 ++-- utils/streamRequest.js | 15 ++++++++--- 6 files changed, 46 insertions(+), 28 deletions(-) diff --git a/config.js b/config.js index 4f174da..dff82d2 100644 --- a/config.js +++ b/config.js @@ -6,8 +6,8 @@ */ export default { // baseUrl: 'http://39.98.44.136:8080', // 测试 - baseUrl: 'https://www.xjksly.cn/api/ks', // 正式环境 - // baseUrl: 'http://ks.zhaopinzao8dian.com/api/ks', // 测试 + // baseUrl: 'https://www.xjksly.cn/api/ks', // 正式环境 + baseUrl: 'http://ks.zhaopinzao8dian.com/api/ks', // 测试 // LCBaseUrl:'http://10.110.145.145:9100',//内网端口 // LCBaseUrlInner:'http://10.110.145.145:10100',//招聘、培训、帮扶 diff --git a/hook/useTTSPlayer.js b/hook/useTTSPlayer.js index 9f95f3b..a39ee9c 100644 --- a/hook/useTTSPlayer.js +++ b/hook/useTTSPlayer.js @@ -580,6 +580,15 @@ function extractSpeechText(markdown) { console.log('📝 Input markdown length:', markdown ? markdown.length : 0); console.log('📝 Input markdown preview:', markdown ? markdown.substring(0, 200) + '...' : 'No markdown'); + // 过滤AI推理内容(如DeepSeek的标签) + // 这些是AI的内部推理过程,不应朗读给用户 + let cleanedMarkdown = markdown.replace(/[\s\S]*?<\/think>/g, '').trim(); + console.log('🧹 After removing think tags, length:', cleanedMarkdown.length); + if (cleanedMarkdown.length === 0 && markdown.length > 0) { + console.warn('⚠️ 所有内容都是think标签,将使用原始文本'); + cleanedMarkdown = markdown; + } + const jobRegex = /``` job-json\s*({[\s\S]*?})\s*```/g; const jobs = []; let match; @@ -587,7 +596,7 @@ function extractSpeechText(markdown) { let firstJobStartIndex = -1; // 提取岗位 json 数据及前后位置 - while ((match = jobRegex.exec(markdown)) !== null) { + while ((match = jobRegex.exec(cleanedMarkdown)) !== null) { const jobStr = match[1]; try { const job = JSON.parse(jobStr); @@ -608,12 +617,12 @@ function extractSpeechText(markdown) { // 提取引导语(第一个 job-json 之前的文字) const guideText = firstJobStartIndex > 0 ? - markdown.slice(0, firstJobStartIndex).trim() : + cleanedMarkdown.slice(0, firstJobStartIndex).trim() : ''; // 提取结束语(最后一个 job-json 之后的文字) - const endingText = lastJobEndIndex < markdown.length ? - markdown.slice(lastJobEndIndex).trim() : + const endingText = lastJobEndIndex < cleanedMarkdown.length ? + cleanedMarkdown.slice(lastJobEndIndex).trim() : ''; console.log('📝 Guide text:', guideText); diff --git a/packageA/pages/chat/components/ai-paging.vue b/packageA/pages/chat/components/ai-paging.vue index 37766db..197a7f2 100644 --- a/packageA/pages/chat/components/ai-paging.vue +++ b/packageA/pages/chat/components/ai-paging.vue @@ -673,14 +673,15 @@ const scrollToBottom = throttle(function () { }, 500); function getGuess() { - // $api.chatRequest('/guest', { sessionId: chatSessionID.value }, 'POST').then((res) => { - $api.chatRequest('/guest', undefined, 'POST').then((res) => { + $api.chatRequest('/guest', { sessionId: chatSessionID.value }, 'POST').then((res) => { console.log('getGuess ---- res:', res); guessList.value = res.data; showGuess.value = true; nextTick(() => { scrollToBottom(); }); + }).catch((err) => { + console.warn('getGuess 请求失败:', err); }); } diff --git a/packageB/login.vue b/packageB/login.vue index 45f048e..06da937 100644 --- a/packageB/login.vue +++ b/packageB/login.vue @@ -80,20 +80,20 @@ name: "" } } - $api.myRequest('/auth/login2/ks',form,'post',10100).then((res) => { - if (res.code=='200') { - uni.setStorageSync('Padmin-Token', res.data.access_token) - uni.navigateBack({ - delta:2 - }) - } - }).catch(() => { - uni.hideLoading() - uni.showToast({ - icon: 'none', - title: '登录失败,请重试' - }) - }) + // $api.myRequest('/auth/login2/ks',form,'post',10100).then((res) => { + // if (res.code=='200') { + // uni.setStorageSync('Padmin-Token', res.data.access_token) + // uni.navigateBack({ + // delta:2 + // }) + // } + // }).catch(() => { + // uni.hideLoading() + // uni.showToast({ + // icon: 'none', + // title: '登录失败,请重试' + // }) + // }) }) function register() { diff --git a/utils/request.js b/utils/request.js index f129cdd..b9b74d9 100644 --- a/utils/request.js +++ b/utils/request.js @@ -15,9 +15,9 @@ const needToEncryptSet = new Set([ ]); const encryptPathPrefixes = [ - '/app/common/', + // '/app/common/', '/app/chat/', - '/app/speech/', + // '/app/speech/', '/app/job/', '/app/company/', '/app/companycontact/', @@ -62,6 +62,7 @@ const handleResponseData = (resData) => { if (resData?.encrypted) { const decrypted = sm4Decrypt(config.sm4Config.key, resData.encryptedData); resData = JSON.parse(decrypted); + console.log('[请求] 解密后数据:', resData); } } catch (e) { console.error('[请求] 解密失败:', e.message); diff --git a/utils/streamRequest.js b/utils/streamRequest.js index 3c2c42c..2e8d8c6 100644 --- a/utils/streamRequest.js +++ b/utils/streamRequest.js @@ -37,6 +37,7 @@ function StreamRequestMiniProgram(url, data = {}, onDataReceived, onError, onCom return new Promise((resolve, reject) => { let buffer = ''; let hasReceivedContent = false; + let isCompleted = false; const requestTask = uni.request({ url: config.StreamBaseURl + url, @@ -50,8 +51,11 @@ function StreamRequestMiniProgram(url, data = {}, onDataReceived, onError, onCom enableChunked: true, // 启用分块传输 success: (res) => { console.log('📡 Stream request completed'); - onComplete && onComplete(); - resolve(); + if (!isCompleted) { + isCompleted = true; + onComplete && onComplete(); + resolve(); + } }, fail: (err) => { console.error('Stream 请求失败:', err); @@ -181,8 +185,11 @@ function StreamRequestMiniProgram(url, data = {}, onDataReceived, onError, onCom console.log('📄 提取的JSON数据:', jsonData); if (jsonData === "[DONE]") { console.log('✅ 收到结束标记 [DONE]'); - onComplete && onComplete(); - resolve(); + if (!isCompleted) { + isCompleted = true; + onComplete && onComplete(); + resolve(); + } return; }