feat: 新增纤益减肥益生菌全套示例数据

- mock_sync.py: 新增6个减肥场景模板(成交/异议/咨询/对比/复购) + 分配给李娜和王强
- analyze.py: 扩展关键词(减肥/减脂/B420/纤益/代餐等) + 行业识别支持年轻女性 + LLM prompt增加减肥产品背景
- run_demo.sh: 新增4条减肥益生菌预置成交记录(小鹿/阿狸/小鹿复购)
This commit is contained in:
selfrelease
2026-07-15 11:56:20 +08:00
parent fdf1bb44be
commit 0c12948fa4
3 changed files with 203 additions and 12 deletions
+167 -7
View File
@@ -299,6 +299,150 @@ SCENARIO_VARIANTS = [
},
]
# ---------------------------------------------------------------------------
# 减肥益生菌场景模板 — 纤益益生菌(女性减肥)
# ---------------------------------------------------------------------------
DIET_SCENARIOS = [
{
"name": "减肥咨询后成交",
"stage": "成交",
"contact": {
"nickname": "小鹿同学",
"remark": "小鹿-减肥-26岁",
"industry": "年轻女性",
"intent_level": "high",
},
"messages": [
("customer", "text", "你好,看到你朋友圈发的减肥益生菌,真的有用吗?"),
("sales", "text", "小鹿你好!是的,我们这款纤益益生菌含专利B420菌株,临床验证可以减少体脂率。请问你目前身高体重多少?"),
("customer", "text", "163cm125斤,想减到110"),
("sales", "text", "了解了,BMI偏高一丢丢。B420菌株是通过调节肠道菌群来促进脂肪代谢的,不需要节食,不腹泻,健康减脂"),
("customer", "text", "不用节食?那我感兴趣,之前试过节食反弹了"),
("sales", "text", "对,节食反弹是因为代谢没调好。益生菌是从根源改善肠道代谢,配合正常饮食就能看到效果"),
("sales", "image", "[图片:B420菌株临床数据]"),
("customer", "text", "看起来有科学依据,多少钱?"),
("sales", "text", "单盒328元30天用量,建议2盒一个周期656元,坚持2个月效果明显"),
("customer", "text", "2盒656是吧,有没有优惠?"),
("sales", "text", "现在新客户首单送一盒膳食纤维体验装,配合吃效果更好"),
("customer", "text", "好的,那来2盒"),
("sales", "text", "好的小鹿!纤益益生菌2盒套餐656元,送膳食纤维体验装,您方便现在付款吗?"),
("customer", "text", "付了,麻烦尽快发货"),
("sales", "text", "收到!今天就发顺丰,另外附上饮食建议手册"),
("customer", "emoji", "[表情:期待]"),
],
},
{
"name": "产后减肥咨询后犹豫",
"stage": "异议处理",
"contact": {
"nickname": "暖暖妈咪",
"remark": "暖暖妈-产后减肥-29岁",
"industry": "年轻女性",
"intent_level": "medium",
},
"messages": [
("customer", "text", "你好,生完宝宝一直瘦不下来,益生菌能帮到吗?"),
("sales", "text", "暖暖妈你好!产后体重管理确实是个痛点。我们的B420菌株专门针对脂肪代谢,很多产后妈妈反馈不错"),
("customer", "text", "哺乳期可以吃吗?"),
("sales", "text", "建议断奶后再吃哦,哺乳期不太适合"),
("customer", "text", "那我家宝宝8个月还在喂奶"),
("sales", "text", "可以等断奶后再开始,现在先了解一下"),
("customer", "text", "多少钱?"),
("sales", "text", "单盒3282盒套餐656"),
("customer", "text", "有点贵,等断奶再说吧"),
("sales", "text", "没关系的,可以先关注我朋友圈,有活动会通知你"),
("customer", "text", "好的,谢谢"),
],
},
{
"name": "朋友推荐来咨询减肥",
"stage": "需求发现",
"contact": {
"nickname": "Cici",
"remark": "Cici-朋友推荐-减肥",
"industry": "年轻女性",
"intent_level": "medium",
},
"messages": [
("customer", "text", "你好,是小鹿推荐我加你的,她说你这边减肥益生菌不错"),
("sales", "text", "Cici你好!谢谢小鹿推荐,请问你想减多少?"),
("customer", "text", "想减10斤左右,主要是肚子和大腿"),
("sales", "text", "B420菌株正好针对腹部脂肪,通过调节肠道菌群促进代谢。小鹿吃了2个月减了8斤"),
("customer", "text", "真的假的?她那么快就有效果了?"),
("sales", "text", "个体差异有的,但B420有临床数据支持,平均12周减少体脂率3-5%"),
("sales", "image", "[图片:临床数据图表]"),
("customer", "text", "成分安全吗?有没有拉肚子之类的副作用?"),
("sales", "text", "完全安全,不腹泻不节食,是通过调节肠道菌群自然减脂"),
("customer", "text", "好的,我先了解一下"),
("sales", "text", "没问题,给你发个产品详情页看看"),
("sales", "link", "[链接:纤益益生菌详情页]"),
],
},
{
"name": "对比其他减肥产品后选择",
"stage": "成交",
"contact": {
"nickname": "阿狸",
"remark": "阿狸-对比代餐-24岁",
"industry": "年轻女性",
"intent_level": "high",
},
"messages": [
("customer", "text", "你好,我在对比你们益生菌和代餐奶昔,哪个效果好?"),
("sales", "text", "阿狸你好!代餐是控制热量摄入,益生菌是调节肠道代谢,原理不同。代餐停了容易反弹,益生菌是从根源改善"),
("customer", "text", "我之前吃过代餐,确实反弹了"),
("sales", "text", "对,代餐靠饿,益生菌靠调。B420菌株有临床验证,不节食不腹泻,健康减脂"),
("customer", "text", "那你们的价格呢?代餐一个月也要三四百"),
("sales", "text", "单盒328元一个月,2盒套餐656元两个月。比代餐便宜,而且不用挨饿"),
("customer", "text", "听着不错,但效果不好怎么办?"),
("sales", "text", "我们有售后指导,配合饮食建议手册一起用。小鹿2个月减了8斤,Cici也在吃"),
("sales", "link", "[链接:客户真实反馈]"),
("customer", "text", "好的,来2盒试试"),
("sales", "text", "好的阿狸!纤益益生菌2盒656元,今天就发货"),
("customer", "text", "已付款"),
("sales", "text", "收到!顺丰今天发,附饮食建议手册"),
],
},
{
"name": "价格异议后放弃",
"stage": "异议处理",
"contact": {
"nickname": "小丸子",
"remark": "小丸子-价格异议-减肥",
"industry": "年轻女性",
"intent_level": "low",
},
"messages": [
("customer", "text", "减肥益生菌多少钱?"),
("sales", "text", "小丸子你好!单盒3282盒套餐656"),
("customer", "text", "好贵,网上益生菌才几十块"),
("sales", "text", "我们含专利B420菌株,有临床验证减脂效果,和普通益生菌不一样"),
("customer", "text", "但也太贵了,算了吧"),
("sales", "text", "理解,可以关注朋友圈,有活动时会通知"),
("customer", "text", "好的"),
],
},
{
"name": "长期跟进后复购",
"stage": "成交",
"contact": {
"nickname": "小鹿同学",
"remark": "小鹿-复购-已减8斤",
"industry": "年轻女性",
"intent_level": "high",
},
"messages": [
("customer", "text", "吃了2个月瘦了8斤,想继续买"),
("sales", "text", "太棒了小鹿!B420效果确实不错,继续吃巩固一下"),
("customer", "text", "再买2盒"),
("sales", "text", "好的!老客户复购送一盒膳食纤维,2盒656元"),
("customer", "text", "好的,付款了"),
("sales", "text", "收到!今天就发货,继续加油"),
],
},
]
# ---------------------------------------------------------------------------
# 非客户联系人模板
# ---------------------------------------------------------------------------
@@ -462,7 +606,7 @@ GROUP_TEMPLATES = [
# scenario_index 指向 SCENARIO_TEMPLATES, variant_name 指向 SCENARIO_VARIANTS
SALESPERSON_ASSIGNMENTS = {
1: [ # 张伟 — 资深
1: [ # 张伟 — 资深(儿童益生菌为主)
("scenario_0", None, None), # 湿疹成交
("scenario_2", None, None), # 朋友推荐
("variant_食物过敏咨询后成交", None, None),
@@ -480,12 +624,16 @@ SALESPERSON_ASSIGNMENTS = {
("group", "宝妈育儿交流群", ""),
("group", "过敏宝宝互助群", ""),
],
2: [ # 李娜 — 新人
("scenario_1", None, None), # 鼻炎犹豫
2: [ # 李娜 — 新人(减肥益生菌为主)
("scenario_1", None, None), # 鼻炎犹豫(儿童)
("variant_价格异议后放弃", None, None),
("scenario_4", None, None), # 竞品对比
("scenario_4", None, None), # 竞品对比(儿童)
("variant_过早报价后被拒", None, None),
("scenario_2", "甜甜妈", "甜甜妈-推荐咨询"),
# 减肥益生菌场景
("diet_0", None, None), # 减肥咨询后成交(小鹿)
("diet_1", None, None), # 产后减肥犹豫(暖暖妈)
("diet_2", None, None), # 朋友推荐咨询减肥(Cici
# 潜在客户
("scenario_2", "球球妈妈", "球球妈-咨询"),
("scenario_2", "米米妈", "米米妈-咨询"),
@@ -497,12 +645,16 @@ SALESPERSON_ASSIGNMENTS = {
("group", "宝妈育儿交流群", ""),
("group", "育儿干货分享群", ""),
],
3: [ # 王强 — 中等
("scenario_4", None, None), # 竞品对比
("scenario_3", None, None), # 长期跟进复购
3: [ # 王强 — 中等(两个产品线都做)
("scenario_4", None, None), # 竞品对比(儿童)
("scenario_3", None, None), # 长期跟进复购(儿童)
("variant_腹泻咨询后成交", None, None),
("variant_安全顾虑后犹豫", None, None),
("scenario_2", "星星妈", "星星妈-推荐咨询"),
# 减肥益生菌场景
("diet_3", None, None), # 对比代餐后成交(阿狸)
("diet_5", None, None), # 减肥复购(小鹿)
("diet_4", None, None), # 减肥价格异议(小丸子)
# 潜在客户
("scenario_2", "晨晨妈妈", "晨晨妈-咨询"),
("scenario_2", "露露妈", "露露妈-咨询"),
@@ -548,6 +700,14 @@ def generate_contacts_for_salesperson(sp_id: int):
is_group = False
wx_username = f"{SALESPERSONS[sp_id]['wx_account']}_contact_{i+1}"
result.append((nick, remark, is_group, wx_username, tpl))
elif kind.startswith("diet_"):
idx = int(kind.split("_")[1])
tpl = DIET_SCENARIOS[idx]
nick = nick_override or tpl["contact"]["nickname"]
remark = remark_override or tpl["contact"].get("remark", "")
is_group = False
wx_username = f"{SALESPERSONS[sp_id]['wx_account']}_contact_{i+1}"
result.append((nick, remark, is_group, wx_username, tpl))
elif kind == "non_customer":
nick = nick_override
remark = remark_override or ""
+11 -5
View File
@@ -38,32 +38,36 @@ DASHSCOPE_MODEL = "qwen-plus"
SYMPTOM_WORDS = [
"湿疹", "过敏", "鼻炎", "腹泻", "便秘", "免疫力", "体质", "红疹",
"胀气", "拉肚子", "打喷嚏", "流鼻涕", "感冒", "食物过敏", "牛奶蛋白过敏",
"减肥", "减脂", "瘦身", "产后", "体脂", "肚子", "大腿", "反弹", "代餐",
]
PRODUCT_WORDS = [
"益生菌", "菌株", "进口", "配方", "成分", "丹麦", "鼠李糖", "无敏",
"LGG", "临床", "调理", "肠道", "免疫",
"B420", "纤益", "脂肪代谢", "减脂", "肠道代谢", "膳食纤维",
]
PRICE_WORDS = [
"价格", "多少钱", "费用", "报价", "优惠", "套餐", "", "周期",
"298", "798", "1499", "", "便宜", "划算",
"298", "798", "1499", "328", "656", "", "便宜", "划算",
]
DEAL_WORDS = [
"下单", "付款", "发货", "来几盒", "定了", "来3盒",
"来6盒", "已付", "转过去", "签收", "已经转", "麻烦尽快发",
"来2盒", "付了", "已付款",
]
OBJECTION_WORDS = [
"", "太贵", "考虑", "商量", "老公", "副作用", "安全吗", "有没有效",
"没用过", "合生元", "对比", "担心", "再看看", "网上", "几十块",
"哺乳期", "反弹", "代餐", "节食", "拉肚子",
]
# 阶段关键词(按优先级排序)
STAGE_KEYWORDS = [
("成交", DEAL_WORDS),
("报价", ["多少钱", "价格", "套餐", "298", "798", "1499", "报价"]),
("报价", ["多少钱", "价格", "套餐", "298", "798", "1499", "328", "656", "报价"]),
("异议处理", OBJECTION_WORDS),
("需求发现", SYMPTOM_WORDS + ["什么情况", "多大了", "几个月", "症状"]),
("建立联系", ["你好", "在吗", "请问"]),
@@ -122,8 +126,9 @@ def identify_customer(messages: list[dict], salesperson_name: str | None = None)
if len(key_needs) >= 3:
break
# 行业
industry = "宝妈"
# 行业:减肥相关标记为年轻女性,否则宝妈
diet_words = ["减肥", "减脂", "瘦身", "B420", "纤益", "代餐", "体脂", "产后减肥"]
industry = "年轻女性" if any(w in all_text for w in diet_words) else "宝妈"
return {
"is_customer": True,
@@ -171,7 +176,8 @@ def generate_summary_llm(messages: list[dict]) -> dict | None:
prompt = f"""你是一个微信销售对话分析助手。以下是销售与客户的微信对话记录,请分析并输出 JSON 格式的沟通摘要。
## 产品背景
益童宝儿童益生菌粉:丹麦进口菌株,主打小儿抗过敏(湿疹、鼻炎、食物过敏),298元/盒,3盒套餐798元,6盒套餐1499元。目标客户是宝妈。
1. 益童宝儿童益生菌粉:丹麦进口菌株,主打小儿抗过敏(湿疹、鼻炎、食物过敏),298元/盒,3盒套餐798元,6盒套餐1499元。目标客户是宝妈。
2. 纤益减肥益生菌:含专利B420菌株,主打健康减脂不反弹,不节食不腹泻,通过调节肠道菌群促进脂肪代谢。328元/盒(30天用量),2盒套餐656元。目标客户是18-35岁有体重管理需求的年轻女性。
## 对话记录
{dialog_text}
+25
View File
@@ -95,6 +95,31 @@ SELECT s.id, cu.id, 1, '益童宝益生菌 3盒套餐', 798, '2026-06-20', 'clos
FROM salesperson s, customer cu
WHERE s.id = 3 AND cu.salesperson_id = 3 AND cu.customer_name LIKE '糖糖%'
AND NOT EXISTS (SELECT 1 FROM deal WHERE customer_id = cu.id AND product_name = '益童宝益生菌 3盒套餐' AND deal_date = '2026-06-20');
-- 减肥益生菌预置成交
INSERT INTO deal (salesperson_id, customer_id, product_id, product_name, amount, deal_date, status)
SELECT s.id, cu.id, 4, '纤益益生菌 2盒套餐', 656, '2026-07-08', 'closed'
FROM salesperson s, customer cu
WHERE s.id = 2 AND cu.salesperson_id = 2 AND cu.customer_name LIKE '小鹿%'
AND NOT EXISTS (SELECT 1 FROM deal WHERE customer_id = cu.id AND product_name = '纤益益生菌 2盒套餐' AND deal_date = '2026-07-08');
INSERT INTO deal (salesperson_id, customer_id, product_id, product_name, amount, deal_date, status)
SELECT s.id, cu.id, 4, '纤益益生菌 2盒套餐', 656, '2026-07-14', 'closed'
FROM salesperson s, customer cu
WHERE s.id = 3 AND cu.salesperson_id = 3 AND cu.customer_name LIKE '阿狸%'
AND NOT EXISTS (SELECT 1 FROM deal WHERE customer_id = cu.id AND product_name = '纤益益生菌 2盒套餐' AND deal_date = '2026-07-14');
INSERT INTO deal (salesperson_id, customer_id, product_id, product_name, amount, deal_date, status)
SELECT s.id, cu.id, 5, '纤益益生菌 单盒', 328, '2026-07-10', 'closed'
FROM salesperson s, customer cu
WHERE s.id = 2 AND cu.salesperson_id = 2 AND cu.customer_name LIKE '小鹿%'
AND NOT EXISTS (SELECT 1 FROM deal WHERE customer_id = cu.id AND product_name = '纤益益生菌 单盒' AND deal_date = '2026-07-10');
INSERT INTO deal (salesperson_id, customer_id, product_id, product_name, amount, deal_date, status)
SELECT s.id, cu.id, 4, '纤益益生菌 2盒套餐', 656, '2026-07-13', 'closed'
FROM salesperson s, customer cu
WHERE s.id = 3 AND cu.salesperson_id = 3 AND cu.customer_name LIKE '小鹿%'
AND NOT EXISTS (SELECT 1 FROM deal WHERE customer_id = cu.id AND product_name = '纤益益生菌 2盒套餐' AND deal_date = '2026-07-13');
" 2>/dev/null || true
DEAL_COUNT=$($PSQL -t -c "SELECT count(*) FROM deal")