feat(server): KB prompt优化、字幕修复、S2S重连、助手配置API

- assistantProfileConfig: KB answer prompt改为分层策略(严格产品信息+灵活常识补充)
- nativeVoiceGateway: S2S upstream自动重连(最多50次)、event 351字幕debounce(800ms取最长文本)
- toolExecutor: 确定性query改写增强、KB查询传递session上下文
- contextKeywordTracker: 支持KB话题记忆优先enrichment
- contentSafeGuard: 新增品牌安全内容过滤服务
- assistantProfileService: 新增助手配置CRUD服务
- routes/assistantProfile: 新增助手配置API路由
- knowledgeKeywords: 扩展KB关键词词典
- fastAsrCorrector: ASR纠错规则更新
- tests/: KB prompt测试、保护窗口测试、Viking性能测试
- docs/: 助手配置API文档、系统提示词目录
This commit is contained in:
User
2026-03-24 17:19:36 +08:00
parent 57a03677a9
commit 9567eb7358
34 changed files with 7076 additions and 46 deletions

View File

@@ -31,6 +31,14 @@ const PHRASE_MAP = {
'一陈系统': '一成系统',
'依成系统': '一成系统',
'伊成系统': '一成系统',
'益生系统': '一成系统',
'易诚系统': '一成系统',
'易乘系统': '一成系统',
'一声系统': '一成系统',
'亿生系统': '一成系统',
'义诚系统': '一成系统',
'忆诚系统': '一成系统',
'以诚系统': '一成系统',
'盛咖学院': '盛咖学愿',
'圣咖学愿': '盛咖学愿',
'盛卡学愿': '盛咖学愿',
@@ -65,6 +73,8 @@ const WORD_MAP = {
'一乘': '一成', '一承': '一成', '一丞': '一成', '一呈': '一成',
'一澄': '一成', '一橙': '一成', '一层': '一成', '一陈': '一成',
'依成': '一成', '伊成': '一成',
'益生': '一成', '易诚': '一成', '义诚': '一成', '忆诚': '一成', '以诚': '一成',
'一声': '一成', '亿生': '一成', '易乘': '一成',
'大窝': '大沃', '大握': '大沃', '大我': '大沃', '大卧': '大沃',
'爱众享': 'Ai众享', '艾众享': 'Ai众享', '哎众享': 'Ai众享',
'小洪': '小红', '小宏': '小红', '小鸿': '小红',
@@ -123,7 +133,7 @@ function correctAsrText(text) {
result = replaceOrderedMappings(result, WORD_MAP);
// 激进策略:所有"X+系统"格式(非常见系统词)一律转为"一成系统"
result = result.replace(/[一二三四五六七八九十壹贰叁肆伍陆柒捌玖拾百千万亿兆零两几单双半多少全数整这那某每各以已亦艺毅怡逸溢义忆益伊依乙翼奕弈邑佚颐译蚁屹役疫裔翊熠旖漪倚绮峄羿轶壹弋驿奕懿肄翌苡圯佾诒铱仡]{1,2}(?:成|城|程|诚|乘|承|丞|呈|澄|橙|层|陈|趁|撑|称|秤|盛|剩|胜)系统/g, '一成系统');
result = result.replace(/[一二三四五六七八九十壹贰叁肆伍陆柒捌玖拾百千万亿兆零两几单双半多少全数整这那某每各以已亦艺毅怡逸溢义忆益伊依乙翼奕弈邑佚颐译蚁屹役疫裔翊熠旖漪倚绮峄羿轶壹弋驿奕懿肄翌苡圯佾诒铱仡]{1,2}(?:成|城|程|诚|乘|承|丞|呈|澄|橙|层|陈|趁|撑|称|秤|盛|剩|胜|生|声)系统/g, '一成系统');
for (const [from, to] of Object.entries(PRODUCT_ALIAS_MAP).sort((a, b) => b[0].length - a[0].length)) {
if (shouldExpandProductAlias(result, from)) {