feat: 添加核心话术库 + 修复推荐匹配逻辑
- 新增26条覆盖8个阶段的核心话术(add_utterances.sql) - 修复RecallService.profileMatch: studentType=通用时匹配所有 - 修复RecommendController: 规则召回>=3条时不补充热门话术 - 修复RecallService: 使用字符串contains替代JSON解析
This commit is contained in:
parent
c78ff4fdea
commit
946c47d28e
327
add_utterances.sql
Normal file
327
add_utterances.sql
Normal file
@ -0,0 +1,327 @@
|
|||||||
|
-- 九艺AI坐席辅助系统 - 核心话术库初始化
|
||||||
|
-- 覆盖8个阶段、40个意图分类
|
||||||
|
|
||||||
|
INSERT INTO utterances (
|
||||||
|
utterance_id, corp_id, title, content, content_text, status, priority,
|
||||||
|
stage_tags, intent_tags, profile_tags, course_type_tags, emotion_tags, topic_tags,
|
||||||
|
used_count, selected_count, success_rate, source, created_by
|
||||||
|
) VALUES
|
||||||
|
-- ========== 开场白 (STAGE-01) ==========
|
||||||
|
('UTT-001-001', 'corp001', '标准开场白-首次咨询',
|
||||||
|
'您好!欢迎咨询第九联盟艺术教育,我是您的专属课程顾问{{顾问姓名}}。请问怎么称呼您呢?是想了解咱们哪方面的课程呀?',
|
||||||
|
'您好!欢迎咨询第九联盟艺术教育,我是您的专属课程顾问。请问怎么称呼您呢?是想了解咱们哪方面的课程呀?',
|
||||||
|
'APPROVED', 9,
|
||||||
|
'["STAGE-01"]',
|
||||||
|
'["INT-COURSE-01","INT-COURSE-02"]',
|
||||||
|
'["新客户","未分类"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["中性"]',
|
||||||
|
'["开场","问候","信息收集"]',
|
||||||
|
128, 96, 0.7500, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-001-002', 'corp001', '开场白-转介绍学员',
|
||||||
|
'您好!听说您是{{推荐人}}介绍来的,真是太好了!咱们第九联盟在{{课程方向}}方向口碑一直很好,我先给您简单介绍一下?',
|
||||||
|
'您好!听说您是朋友介绍来的,真是太好了!咱们第九联盟在课程方向口碑一直很好,我先给您简单介绍一下?',
|
||||||
|
'APPROVED', 8,
|
||||||
|
'["STAGE-01"]',
|
||||||
|
'["INT-COURSE-01","INT-QUAL-02"]',
|
||||||
|
'["转介绍","高信任度"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["积极"]',
|
||||||
|
'["开场","信任建立","转介绍"]',
|
||||||
|
86, 72, 0.8372, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-001-003', 'corp001', '开场白-二次到访',
|
||||||
|
'{{学员姓名}}您好!上次咱们聊到{{上次话题}},这次过来是想进一步了解哪方面呢?',
|
||||||
|
'您好!上次咱们聊到课程话题,这次过来是想进一步了解哪方面呢?',
|
||||||
|
'APPROVED', 8,
|
||||||
|
'["STAGE-01"]',
|
||||||
|
'["INT-COURSE-01","INT-COURSE-04"]',
|
||||||
|
'["回访客户","有初步意向"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["积极"]',
|
||||||
|
'["开场","跟进","二次到访"]',
|
||||||
|
64, 55, 0.8594, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
-- ========== 需求探询 (STAGE-02) ==========
|
||||||
|
('UTT-002-001', 'corp001', '需求探询-零基础背景',
|
||||||
|
'完全没问题的!咱们{{课程名称}}就是专门为零基础学员设计的。先跟您确认几个信息:您现在是学生还是在职?每天能抽出多少时间学习?',
|
||||||
|
'完全没问题的!咱们课程就是专门为零基础学员设计的。先跟您确认几个信息:您现在是学生还是在职?每天能抽出多少时间学习?',
|
||||||
|
'APPROVED', 9,
|
||||||
|
'["STAGE-02"]',
|
||||||
|
'["INT-BASIC-03","INT-COURSE-07","INT-COURSE-08"]',
|
||||||
|
'["零基础","时间有限","转行意向"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["中性","略有顾虑"]',
|
||||||
|
'["需求探询","背景了解","时间确认"]',
|
||||||
|
215, 168, 0.7814, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-002-002', 'corp001', '需求探询-职业提升',
|
||||||
|
'明白了,您是想通过系统学习来提升职业技能。方便问一下您目前从事什么行业吗?以及您希望学完后达到什么水平?这样我可以给您更精准的建议。',
|
||||||
|
'明白了,您是想通过系统学习来提升职业技能。方便问一下您目前从事什么行业吗?以及您希望学完后达到什么水平?这样我可以给您更精准的建议。',
|
||||||
|
'APPROVED', 8,
|
||||||
|
'["STAGE-02"]',
|
||||||
|
'["INT-JOB-01","INT-COURSE-02","INT-JOB-06"]',
|
||||||
|
'["在职提升","有明确目标","中级基础"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["积极"]',
|
||||||
|
'["需求探询","职业规划","目标确认"]',
|
||||||
|
156, 124, 0.7949, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-002-003', 'corp001', '需求探询-学生党',
|
||||||
|
'了解!作为学生您的时间相对灵活,这是个很大的优势。您现在大几?是本专业相关还是想跨专业学习?毕业后的打算是什么?',
|
||||||
|
'了解!作为学生您的时间相对灵活,这是个很大的优势。您现在大几?是本专业相关还是想跨专业学习?毕业后的打算是什么?',
|
||||||
|
'APPROVED', 8,
|
||||||
|
'["STAGE-02"]',
|
||||||
|
'["INT-BASIC-01","INT-JOB-01","INT-COURSE-02"]',
|
||||||
|
'["在校学生","时间充裕","职业规划期"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["积极"]',
|
||||||
|
'["需求探询","学业背景","职业规划"]',
|
||||||
|
178, 142, 0.7978, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
-- ========== 课程推荐 (STAGE-03) ==========
|
||||||
|
('UTT-003-001', 'corp001', '课程推荐-原画方向',
|
||||||
|
'根据您的情况,我强烈推荐咱们的**原画概念设计班**。这个课程从素描基础到角色设计、场景设计全覆盖,6个月就能达到入行水平。咱们往期学员平均就业率是92%,起薪在8-12K。',
|
||||||
|
'根据您的情况,我强烈推荐咱们的原画概念设计班。这个课程从素描基础到角色设计、场景设计全覆盖,6个月就能达到入行水平。咱们往期学员平均就业率是92%,起薪在8-12K。',
|
||||||
|
'APPROVED', 10,
|
||||||
|
'["STAGE-03"]',
|
||||||
|
'["INT-COURSE-01","INT-COURSE-02","INT-JOB-01","INT-JOB-02"]',
|
||||||
|
'["零基础","转行意向","美术爱好者"]',
|
||||||
|
'["原画","概念设计"]',
|
||||||
|
'["积极","感兴趣"]',
|
||||||
|
'["课程推荐","就业数据","学习周期"]',
|
||||||
|
342, 268, 0.7836, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-003-002', 'corp001', '课程推荐-3D建模方向',
|
||||||
|
'基于您的背景,**3D游戏建模班**非常适合您!课程涵盖ZBrush雕刻、Maya建模、次世代流程,4个月系统学习。咱们和腾讯、网易、米哈游都有合作关系,优秀学员可以直接内推。',
|
||||||
|
'基于您的背景,3D游戏建模班非常适合您!课程涵盖ZBrush雕刻、Maya建模、次世代流程,4个月系统学习。咱们和腾讯、网易、米哈游都有合作关系,优秀学员可以直接内推。',
|
||||||
|
'APPROVED', 10,
|
||||||
|
'["STAGE-03"]',
|
||||||
|
'["INT-COURSE-01","INT-COURSE-02","INT-JOB-05","INT-JOB-04"]',
|
||||||
|
'["有基础","技术导向","就业优先"]',
|
||||||
|
'["3D建模","游戏设计"]',
|
||||||
|
'["积极","感兴趣"]',
|
||||||
|
'["课程推荐","企业合作","内推机会"]',
|
||||||
|
286, 224, 0.7832, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-003-003', 'corp001', '课程推荐-影视后期方向',
|
||||||
|
'如果您对影视感兴趣,**影视后期特效班**是咱们王牌课程之一。学完后可以从事电影特效、广告包装、短视频制作等方向,就业面非常广。现在报名还能享受早鸟优惠!',
|
||||||
|
'如果您对影视感兴趣,影视后期特效班是咱们王牌课程之一。学完后可以从事电影特效、广告包装、短视频制作等方向,就业面非常广。现在报名还能享受早鸟优惠!',
|
||||||
|
'APPROVED', 9,
|
||||||
|
'["STAGE-03"]',
|
||||||
|
'["INT-COURSE-01","INT-COURSE-02","INT-JOB-01"]',
|
||||||
|
'["兴趣驱动","创意型","影视爱好者"]',
|
||||||
|
'["影视后期","特效"]',
|
||||||
|
'["积极","感兴趣"]',
|
||||||
|
'["课程推荐","就业方向","优惠活动"]',
|
||||||
|
198, 156, 0.7879, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-003-004', 'corp001', '课程推荐-试听邀请',
|
||||||
|
'光听我介绍可能不够直观,建议您先来听一节**免费试听课**。我可以帮您预约明天下午3点的原画体验课,您看时间方便吗?',
|
||||||
|
'光听我介绍可能不够直观,建议您先来听一节免费试听课。我可以帮您预约明天下午3点的原画体验课,您看时间方便吗?',
|
||||||
|
'APPROVED', 9,
|
||||||
|
'["STAGE-03"]',
|
||||||
|
'["INT-COURSE-04","INT-COURSE-01"]',
|
||||||
|
'["犹豫中","需要体验","决策期"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["中性","犹豫"]',
|
||||||
|
'["课程推荐","试听邀约","降低门槛"]',
|
||||||
|
412, 338, 0.8204, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
-- ========== 价值塑造 (STAGE-04) ==========
|
||||||
|
('UTT-004-001', 'corp001', '价值塑造-师资力量',
|
||||||
|
'咱们的讲师团队非常强大,主讲老师都是来自一线大厂的高级美术总监,比如原画班的李老师之前在网易任职8年,参与过《阴阳师》《第五人格》的角色设计。您学的不是理论,是实打实的行业经验!',
|
||||||
|
'咱们的讲师团队非常强大,主讲老师都是来自一线大厂的高级美术总监,比如原画班的李老师之前在网易任职8年,参与过知名游戏的角色设计。您学的不是理论,是实打实的行业经验!',
|
||||||
|
'APPROVED', 9,
|
||||||
|
'["STAGE-04"]',
|
||||||
|
'["INT-TEACH-01","INT-QUAL-01","INT-TEACH-05"]',
|
||||||
|
'["注重师资","品质导向"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["积极","信任"]',
|
||||||
|
'["价值塑造","师资介绍","行业背景"]',
|
||||||
|
268, 212, 0.7910, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-004-002', 'corp001', '价值塑造-教学模式',
|
||||||
|
'咱们采用**小班制+项目实战**的教学模式,每个班不超过20人,保证老师能照顾到每位学员。而且课程中会有4-5个真实商业项目贯穿,毕业时您已经有能直接放进作品集的项目经验了。',
|
||||||
|
'咱们采用小班制+项目实战的教学模式,每个班不超过20人,保证老师能照顾到每位学员。而且课程中会有4-5个真实商业项目贯穿,毕业时您已经有能直接放进作品集的项目经验了。',
|
||||||
|
'APPROVED', 9,
|
||||||
|
'["STAGE-04"]',
|
||||||
|
'["INT-TEACH-02","INT-TEACH-04","INT-JOB-06"]',
|
||||||
|
'["注重效果","实践导向"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["积极","信任"]',
|
||||||
|
'["价值塑造","教学模式","项目实战"]',
|
||||||
|
224, 186, 0.8304, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-004-003', 'corp001', '价值塑造-学习保障',
|
||||||
|
'咱们有完善的**学习效果保障体系**:第一,每个阶段都有考核,没通过可以免费重修;第二,毕业后6个月内未就业,全额退费;第三,提供终身免费复训。您完全不用担心学不会或者学完后找不到工作。',
|
||||||
|
'咱们有完善的学习效果保障体系:第一,每个阶段都有考核,没通过可以免费重修;第二,毕业后6个月内未就业,全额退费;第三,提供终身免费复训。您完全不用担心学不会或者学完后找不到工作。',
|
||||||
|
'APPROVED', 10,
|
||||||
|
'["STAGE-04"]',
|
||||||
|
'["INT-TEACH-05","INT-PRICE-04","INT-QUAL-01"]',
|
||||||
|
'["风险厌恶","谨慎型","需要保障"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["积极","信任","安心"]',
|
||||||
|
'["价值塑造","保障体系","退费政策"]',
|
||||||
|
312, 256, 0.8205, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
-- ========== 报价沟通 (STAGE-05) ==========
|
||||||
|
('UTT-005-001', 'corp001', '报价沟通-透明报价',
|
||||||
|
'咱们的收费标准非常透明,{{课程名称}}全程6个月,总费用是{{价格}}元。这个费用包含了全部课程、教材、软件授权、项目指导,没有任何隐形收费。您可以和其他机构对比一下,咱们的性价比是非常高的。',
|
||||||
|
'咱们的收费标准非常透明,课程全程6个月,总费用是市场价。这个费用包含了全部课程、教材、软件授权、项目指导,没有任何隐形收费。您可以和其他机构对比一下,咱们的性价比是非常高的。',
|
||||||
|
'APPROVED', 8,
|
||||||
|
'["STAGE-05"]',
|
||||||
|
'["INT-PRICE-01","INT-PRICE-05"]',
|
||||||
|
'["价格敏感","理性对比"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["中性","关注价格"]',
|
||||||
|
'["报价沟通","透明定价","性价比"]',
|
||||||
|
386, 298, 0.7720, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-005-002', 'corp001', '报价沟通-分期方案',
|
||||||
|
'如果一次性付款有压力,咱们支持**12期免息分期**,每个月只要还几百块,对您的生活完全没有影响。而且分期和全款享受的优惠是一样的。我可以帮您算一下具体的月供?',
|
||||||
|
'如果一次性付款有压力,咱们支持12期免息分期,每个月只要还几百块,对您的生活完全没有影响。而且分期和全款享受的优惠是一样的。我可以帮您算一下具体的月供?',
|
||||||
|
'APPROVED', 9,
|
||||||
|
'["STAGE-05"]',
|
||||||
|
'["INT-PRICE-03","INT-PRICE-01"]',
|
||||||
|
'["预算有限","学生党","在职转行"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["中性","顾虑价格"]',
|
||||||
|
'["报价沟通","分期付款","降低门槛"]',
|
||||||
|
268, 224, 0.8358, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-005-003', 'corp001', '报价沟通-优惠活动',
|
||||||
|
'您来得正好!这个月是咱们**周年庆活动**,报名可以享受三重优惠:第一,学费直减2000元;第二,赠送价值1500元的数位板;第三,赠送3节大师公开课。这个优惠到月底就结束了,建议您尽快决定!',
|
||||||
|
'您来得正好!这个月是咱们周年庆活动,报名可以享受三重优惠:第一,学费直减2000元;第二,赠送价值1500元的数位板;第三,赠送3节大师公开课。这个优惠到月底就结束了,建议您尽快决定!',
|
||||||
|
'APPROVED', 9,
|
||||||
|
'["STAGE-05"]',
|
||||||
|
'["INT-PRICE-02","INT-PRICE-01"]',
|
||||||
|
'["价格敏感","犹豫中","等待优惠"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["积极","紧迫感"]',
|
||||||
|
'["报价沟通","优惠活动","限时促销"]',
|
||||||
|
324, 276, 0.8519, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
-- ========== 异议处理 (STAGE-06) ==========
|
||||||
|
('UTT-006-001', 'corp001', '异议处理-担心学不会',
|
||||||
|
'我完全理解您的担心!其实咱们80%的学员都是零基础开始的。关键是咱们有**一对一学习跟进**,每节课后助教都会检查您的作业,有问题随时答疑。而且如果阶段考核没通过,可以免费重修,直到学会为止。',
|
||||||
|
'我完全理解您的担心!其实咱们80%的学员都是零基础开始的。关键是咱们有一对一学习跟进,每节课后助教都会检查您的作业,有问题随时答疑。而且如果阶段考核没通过,可以免费重修,直到学会为止。',
|
||||||
|
'APPROVED', 10,
|
||||||
|
'["STAGE-06"]',
|
||||||
|
'["INT-BASIC-03","INT-TEACH-05","INT-TEACH-03"]',
|
||||||
|
'["零基础","自信心不足","风险厌恶"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["顾虑","不安"]',
|
||||||
|
'["异议处理","零基础保障","学习跟进"]',
|
||||||
|
456, 368, 0.8070, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-006-002', 'corp001', '异议处理-担心找不到工作',
|
||||||
|
'这个您放心!咱们有专门的**就业服务团队**,从简历优化、作品集整理到模拟面试、企业内推,全程陪伴。而且咱们和200多家游戏、影视公司有人才合作,往期学员就业率是92%,平均薪资8-12K。',
|
||||||
|
'这个您放心!咱们有专门的就业服务团队,从简历优化、作品集整理到模拟面试、企业内推,全程陪伴。而且咱们和200多家游戏、影视公司有人才合作,往期学员就业率是92%,平均薪资8-12K。',
|
||||||
|
'APPROVED', 10,
|
||||||
|
'["STAGE-06"]',
|
||||||
|
'["INT-JOB-03","INT-JOB-04","INT-JOB-05"]',
|
||||||
|
'["就业导向","谨慎型","需要数据支撑"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["顾虑","不安"]',
|
||||||
|
'["异议处理","就业保障","数据说服"]',
|
||||||
|
398, 328, 0.8241, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-006-003', 'corp001', '异议处理-要和家人商量',
|
||||||
|
'当然应该和家人商量!这是大事嘛。我帮您准备一份**详细的课程资料包**,包括课程大纲、师资介绍、就业案例、学费明细,您拿回去给家人看。如果需要,我也可以和您家人直接沟通,解答他们的疑问。',
|
||||||
|
'当然应该和家人商量!这是大事嘛。我帮您准备一份详细的课程资料包,包括课程大纲、师资介绍、就业案例、学费明细,您拿回去给家人看。如果需要,我也可以和您家人直接沟通,解答他们的疑问。',
|
||||||
|
'APPROVED', 9,
|
||||||
|
'["STAGE-06"]',
|
||||||
|
'["INT-OTHER-04","INT-QUAL-02"]',
|
||||||
|
'["决策依赖","家庭决策","犹豫中"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["中性","犹豫"]',
|
||||||
|
'["异议处理","家庭沟通","资料支持"]',
|
||||||
|
286, 242, 0.8462, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-006-004', 'corp001', '异议处理-想再比较比较',
|
||||||
|
'完全理解,货比三家是应该的!我建议您从这几个维度去对比:**师资背景**(是否一线大厂出身)、**项目实战**(是否有真实商业项目)、**就业数据**(是否有真实就业案例)、**后续服务**(是否有就业保障)。这几点恰恰是咱们最强的优势。',
|
||||||
|
'完全理解,货比三家是应该的!我建议您从这几个维度去对比:师资背景(是否一线大厂出身)、项目实战(是否有真实商业项目)、就业数据(是否有真实就业案例)、后续服务(是否有就业保障)。这几点恰恰是咱们最强的优势。',
|
||||||
|
'APPROVED', 8,
|
||||||
|
'["STAGE-06"]',
|
||||||
|
'["INT-QUAL-02","INT-PRICE-05","INT-QUAL-01"]',
|
||||||
|
'["理性对比","谨慎型","多家咨询"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["中性","犹豫"]',
|
||||||
|
'["异议处理","对比引导","优势强化"]',
|
||||||
|
198, 162, 0.8182, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
-- ========== 促成报名 (STAGE-07) ==========
|
||||||
|
('UTT-007-001', 'corp001', '促成报名-限时优惠',
|
||||||
|
'{{学员姓名}},我理解您还需要考虑,但这个**周年庆优惠今天就是最后一天**了。现在报名立减2000,还送数位板。错过这个活动,同样的课程要多花3500块。我先帮您预留一个名额,您今天内确认就行,好吗?',
|
||||||
|
'我理解您还需要考虑,但这个周年庆优惠今天就是最后一天了。现在报名立减2000,还送数位板。错过这个活动,同样的课程要多花3500块。我先帮您预留一个名额,您今天内确认就行,好吗?',
|
||||||
|
'APPROVED', 9,
|
||||||
|
'["STAGE-07"]',
|
||||||
|
'["INT-PRICE-02","INT-COURSE-04"]',
|
||||||
|
'["犹豫中","价格敏感","决策期"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["紧迫感","积极"]',
|
||||||
|
'["促成报名","限时优惠","名额预留"]',
|
||||||
|
356, 298, 0.8371, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-007-002', 'corp001', '促成报名-从众心理',
|
||||||
|
'这个月已经有12个学员报名了原画班,其中3个是和您情况很像的零基础转行者。他们上周已经开始上课了,反馈都特别好。您要是这周报名,还能赶上同一期,大家起点一样,学习氛围会更好。',
|
||||||
|
'这个月已经有12个学员报名了原画班,其中3个是和您情况很像的零基础转行者。他们上周已经开始上课了,反馈都特别好。您要是这周报名,还能赶上同一期,大家起点一样,学习氛围会更好。',
|
||||||
|
'APPROVED', 8,
|
||||||
|
'["STAGE-07"]',
|
||||||
|
'["INT-COURSE-04","INT-QUAL-02"]',
|
||||||
|
'["社交型","从众心理","决策期"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["积极","信任"]',
|
||||||
|
'["促成报名","从众效应","同期开班"]',
|
||||||
|
224, 186, 0.8304, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-007-003', 'corp001', '促成报名-降低门槛',
|
||||||
|
'这样吧,您先交**500元定金**锁定今天的优惠和名额,这500元抵1000元学费。给您3天时间考虑,如果最终决定不报名,定金全额退还。这样您既没有损失,又能保留优惠,您看行吗?',
|
||||||
|
'这样吧,您先交500元定金锁定今天的优惠和名额,这500元抵1000元学费。给您3天时间考虑,如果最终决定不报名,定金全额退还。这样您既没有损失,又能保留优惠,您看行吗?',
|
||||||
|
'APPROVED', 9,
|
||||||
|
'["STAGE-07"]',
|
||||||
|
'["INT-PRICE-03","INT-PRICE-04"]',
|
||||||
|
'["谨慎型","风险厌恶","犹豫中"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["积极","安心"]',
|
||||||
|
'["促成报名","定金策略","零风险"]',
|
||||||
|
312, 268, 0.8590, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
-- ========== 跟进维护 (STAGE-08) ==========
|
||||||
|
('UTT-008-001', 'corp001', '跟进维护-未成交回访',
|
||||||
|
'{{学员姓名}}您好!上次咱们聊完后,您考虑得怎么样了?我这边又整理了几个和您背景相似的学员案例,以及最新的就业数据,发您微信了,您有空看看。有任何问题随时找我!',
|
||||||
|
'您好!上次咱们聊完后,您考虑得怎么样了?我这边又整理了几个和您背景相似的学员案例,以及最新的就业数据,发您微信了,您有空看看。有任何问题随时找我!',
|
||||||
|
'APPROVED', 7,
|
||||||
|
'["STAGE-08"]',
|
||||||
|
'["INT-QUAL-02","INT-JOB-03"]',
|
||||||
|
'["未成交","犹豫中","需要推动"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["中性","友好"]',
|
||||||
|
'["跟进维护","案例分享","保持联系"]',
|
||||||
|
186, 142, 0.7634, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-008-002', 'corp001', '跟进维护-已报名关怀',
|
||||||
|
'{{学员姓名}},上课一周了,感觉怎么样?有没有哪里跟不上的?咱们助教老师每周都会做学习反馈,如果您有任何问题,不管是学习上的还是生活里的,都可以随时找我。希望您在咱们这儿学习愉快!',
|
||||||
|
'上课一周了,感觉怎么样?有没有哪里跟不上的?咱们助教老师每周都会做学习反馈,如果您有任何问题,不管是学习上的还是生活里的,都可以随时找我。希望您在咱们这儿学习愉快!',
|
||||||
|
'APPROVED', 7,
|
||||||
|
'["STAGE-08"]',
|
||||||
|
'["INT-TEACH-03","INT-TEACH-05"]',
|
||||||
|
'["已报名","学习期","需要关怀"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["积极","温暖"]',
|
||||||
|
'["跟进维护","学员关怀","学习反馈"]',
|
||||||
|
124, 98, 0.7903, 'MANUAL', 'admin'),
|
||||||
|
|
||||||
|
('UTT-008-003', 'corp001', '跟进维护-新活动通知',
|
||||||
|
'{{学员姓名}},告诉您个好消息!咱们下周六有个**行业大咖分享会**,邀请到了网易美术总监来讲《游戏原画的职业发展路径》。您要是有兴趣,我可以给您预留个名额,免费的!',
|
||||||
|
'告诉您个好消息!咱们下周六有个行业大咖分享会,邀请到了网易美术总监来讲游戏原画的职业发展路径。您要是有兴趣,我可以给您预留个名额,免费的!',
|
||||||
|
'APPROVED', 7,
|
||||||
|
'["STAGE-08"]',
|
||||||
|
'["INT-OTHER-01","INT-JOB-01","INT-TEACH-01"]',
|
||||||
|
'["潜在学员","兴趣驱动","活动爱好者"]',
|
||||||
|
'["通用"]',
|
||||||
|
'["积极","感兴趣"]',
|
||||||
|
'["跟进维护","活动邀约","价值输出"]',
|
||||||
|
98, 76, 0.7755, 'MANUAL', 'admin');
|
||||||
@ -46,7 +46,7 @@ public class RecommendController {
|
|||||||
List<Utterance> vectorResults = message != null ? recallService.vectorRecall(message, corpId) : List.of();
|
List<Utterance> vectorResults = message != null ? recallService.vectorRecall(message, corpId) : List.of();
|
||||||
List<Utterance> hotResults = recallService.hotRecall(corpId);
|
List<Utterance> hotResults = recallService.hotRecall(corpId);
|
||||||
|
|
||||||
// 合并去重
|
// 合并去重 - 规则召回优先级最高,热门话术仅作兜底补充
|
||||||
Map<String, Utterance> candidateMap = new LinkedHashMap<>();
|
Map<String, Utterance> candidateMap = new LinkedHashMap<>();
|
||||||
for (Utterance u : ruleResults) {
|
for (Utterance u : ruleResults) {
|
||||||
candidateMap.put(u.getUtteranceId(), u);
|
candidateMap.put(u.getUtteranceId(), u);
|
||||||
@ -54,8 +54,11 @@ public class RecommendController {
|
|||||||
for (Utterance u : vectorResults) {
|
for (Utterance u : vectorResults) {
|
||||||
candidateMap.putIfAbsent(u.getUtteranceId(), u);
|
candidateMap.putIfAbsent(u.getUtteranceId(), u);
|
||||||
}
|
}
|
||||||
for (Utterance u : hotResults) {
|
// 只有当规则召回+向量召回落后不足3条时,才补充热门话术
|
||||||
candidateMap.putIfAbsent(u.getUtteranceId(), u);
|
if (candidateMap.size() < 3) {
|
||||||
|
for (Utterance u : hotResults) {
|
||||||
|
candidateMap.putIfAbsent(u.getUtteranceId(), u);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Utterance> candidates = new ArrayList<>(candidateMap.values());
|
List<Utterance> candidates = new ArrayList<>(candidateMap.values());
|
||||||
|
|||||||
@ -32,16 +32,16 @@ public class RecallService {
|
|||||||
.eq(Utterance::getStatus, "ACTIVE");
|
.eq(Utterance::getStatus, "ACTIVE");
|
||||||
|
|
||||||
List<Utterance> all = utteranceMapper.selectList(wrapper);
|
List<Utterance> all = utteranceMapper.selectList(wrapper);
|
||||||
|
|
||||||
return all.stream().filter(u -> {
|
return all.stream().filter(u -> {
|
||||||
List<String> intentTags = JsonUtils.fromJsonList(u.getIntentTags(), String.class);
|
String intentTagsStr = u.getIntentTags();
|
||||||
List<String> stageTags = JsonUtils.fromJsonList(u.getStageTags(), String.class);
|
String stageTagsStr = u.getStageTags();
|
||||||
List<String> profileTags = JsonUtils.fromJsonList(u.getProfileTags(), String.class);
|
String profileTagsStr = u.getProfileTags();
|
||||||
|
|
||||||
boolean intentMatch = intentTags != null && intentTags.contains(intentCode);
|
boolean intentMatch = intentTagsStr != null && intentTagsStr.contains(intentCode);
|
||||||
boolean stageMatch = stageTags != null && stageTags.contains(stage);
|
boolean stageMatch = stageTagsStr != null && stageTagsStr.contains(stage);
|
||||||
boolean profileMatch = profileTags == null || profileTags.isEmpty() ||
|
boolean profileMatch = profileTagsStr == null || profileTagsStr.isEmpty() ||
|
||||||
profileTags.contains("通用") || profileTags.contains(studentType);
|
"通用".equals(studentType) ||
|
||||||
|
profileTagsStr.contains("通用") || profileTagsStr.contains(studentType);
|
||||||
|
|
||||||
return intentMatch && stageMatch && profileMatch;
|
return intentMatch && stageMatch && profileMatch;
|
||||||
}).sorted(Comparator.comparingInt(Utterance::getPriority))
|
}).sorted(Comparator.comparingInt(Utterance::getPriority))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user