From 5ab136f1c58506e872b25650782fc54f8bbd4a2e Mon Sep 17 00:00:00 2001 From: xiebing Date: Thu, 25 Dec 2025 16:21:36 +0800 Subject: [PATCH] =?UTF-8?q?perf=20:=20=E5=86=8D=E6=AC=A1=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=B2=97=E4=BD=8D=E4=BF=A1=E6=81=AF=E8=96=AA=E8=B5=84=E9=83=A8?= =?UTF-8?q?=E5=88=86=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hook/useAudioSpeak.js | 19 +++++++++++++++---- hook/useTTSPlayer-all-in-one.js | 21 ++++++++++++++++----- hook/useTTSPlayer-web.js | 21 ++++++++++++++++----- 3 files changed, 47 insertions(+), 14 deletions(-) diff --git a/hook/useAudioSpeak.js b/hook/useAudioSpeak.js index f7c99e8..987ae36 100644 --- a/hook/useAudioSpeak.js +++ b/hook/useAudioSpeak.js @@ -489,11 +489,22 @@ export const useAudioSpeak = (config = {}) => { markdown.slice(lastJobEndIndex).trim() : ''; const jobTexts = jobs.map((job, index) => { - // 处理薪资格式:将 "数字-数字" 中的 '-' 替换为 '到' + // 处理薪资格式 let salaryText = job.salary; - if (salaryText) { - // 匹配 "数字-数字" 的格式(如:15000-18000元/月) - salaryText = salaryText.replace(/(\d+)-(\d+)/g, '$1到$2'); + if (salaryText) { + // 匹配 "XXXXX-XXXXX元/月" 格式 + const rangeMatch = salaryText.match(/(\d+)-(\d+)元\/月/); + if (rangeMatch) { + const minSalary = parseInt(rangeMatch[1], 10); + const maxSalary = parseInt(rangeMatch[2], 10); + + // 转换为千位单位 + const minK = Math.round(minSalary / 1000); + const maxK = Math.round(maxSalary / 1000); + + salaryText = `${minK}千到${maxK}千每月`; + } + // 如果不是 "XXXXX-XXXXX元/月" 格式,保持原样 } return `第 ${index + 1} 个岗位,岗位名称是:${job.jobTitle},公司是:${job.companyName},薪资:${salaryText},地点:${job.location},学历要求:${job.education},经验要求:${job.experience}。`; diff --git a/hook/useTTSPlayer-all-in-one.js b/hook/useTTSPlayer-all-in-one.js index 8de3278..7ea8b6b 100644 --- a/hook/useTTSPlayer-all-in-one.js +++ b/hook/useTTSPlayer-all-in-one.js @@ -251,11 +251,22 @@ function extractSpeechText(markdown) { markdown.slice(lastJobEndIndex).trim() : ''; const jobTexts = jobs.map((job, index) => { - // 处理薪资格式:将 "数字-数字" 中的 '-' 替换为 '到' + // 处理薪资格式 let salaryText = job.salary; - if (salaryText) { - // 匹配 "数字-数字" 的格式(如:15000-18000元/月) - salaryText = salaryText.replace(/(\d+)-(\d+)/g, '$1到$2'); + if (salaryText) { + // 匹配 "XXXXX-XXXXX元/月" 格式 + const rangeMatch = salaryText.match(/(\d+)-(\d+)元\/月/); + if (rangeMatch) { + const minSalary = parseInt(rangeMatch[1], 10); + const maxSalary = parseInt(rangeMatch[2], 10); + + // 转换为千位单位 + const minK = Math.round(minSalary / 1000); + const maxK = Math.round(maxSalary / 1000); + + salaryText = `${minK}千到${maxK}千每月`; + } + // 如果不是 "XXXXX-XXXXX元/月" 格式,保持原样 } return `第 ${index + 1} 个岗位,岗位名称是:${job.jobTitle},公司是:${job.companyName},薪资:${salaryText},地点:${job.location},学历要求:${job.education},经验要求:${job.experience}。`; @@ -267,7 +278,7 @@ function extractSpeechText(markdown) { if (endingText) finalTextParts.push(endingText); return finalTextParts.join('\n'); - } +} // 使用方法 1 diff --git a/hook/useTTSPlayer-web.js b/hook/useTTSPlayer-web.js index a8ca8a8..6c0be59 100644 --- a/hook/useTTSPlayer-web.js +++ b/hook/useTTSPlayer-web.js @@ -237,11 +237,22 @@ function extractSpeechText(markdown) { markdown.slice(lastJobEndIndex).trim() : ''; const jobTexts = jobs.map((job, index) => { - // 处理薪资格式:将 "数字-数字" 中的 '-' 替换为 '到' + // 处理薪资格式 let salaryText = job.salary; - if (salaryText) { - // 匹配 "数字-数字" 的格式(如:15000-18000元/月) - salaryText = salaryText.replace(/(\d+)-(\d+)/g, '$1到$2'); + if (salaryText) { + // 匹配 "XXXXX-XXXXX元/月" 格式 + const rangeMatch = salaryText.match(/(\d+)-(\d+)元\/月/); + if (rangeMatch) { + const minSalary = parseInt(rangeMatch[1], 10); + const maxSalary = parseInt(rangeMatch[2], 10); + + // 转换为千位单位 + const minK = Math.round(minSalary / 1000); + const maxK = Math.round(maxSalary / 1000); + + salaryText = `${minK}千到${maxK}千每月`; + } + // 如果不是 "XXXXX-XXXXX元/月" 格式,保持原样 } return `第 ${index + 1} 个岗位,岗位名称是:${job.jobTitle},公司是:${job.companyName},薪资:${salaryText},地点:${job.location},学历要求:${job.education},经验要求:${job.experience}。`; @@ -253,4 +264,4 @@ function extractSpeechText(markdown) { if (endingText) finalTextParts.push(endingText); return finalTextParts.join('\n'); - } \ No newline at end of file +} \ No newline at end of file