From 6fddc0eaac1574a62a2f9db45c354356a950534d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=85=E5=BF=B5?= Date: Thu, 8 Oct 2026 19:11:49 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20LANG=5FNOTE=5FES/ZH=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E6=94=BE=E5=BC=80=E2=80=94=E2=80=94=E5=88=A0?= =?UTF-8?q?=E7=BB=9D=E4=B8=8D=E7=BF=BB=E8=AF=91=E6=97=A7=E8=A7=84=E5=88=99?= =?UTF-8?q?,=E5=8F=B7=E7=A0=81=E9=80=90=E5=AD=97=E7=85=A7=E6=8A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Code --- app/services/conversation.py | 18 +++++++++++------- tests/test_lead_email_trigger.py | 11 ++++++++--- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/app/services/conversation.py b/app/services/conversation.py index 242b299..874d6ee 100644 --- a/app/services/conversation.py +++ b/app/services/conversation.py @@ -73,19 +73,23 @@ CONTACT_ASK_TRIGGER_RE = re.compile( ) # 语言跟随提醒(Task 11 真人验收发现): glm-4-flash 对拉丁字符占比高的中文 -# 消息(DN800/HDPE 规格混排)会整轮漂成英文,system.md 语言规则压不住;西语客户 -# 则倾向把英文模板句翻译成西语。修复位 = 当轮 context 提醒(prompt 最末、 -# 最新鲜)——与 contact-ask 提醒"逐字话术防漂移"同款方法论。 +# 消息(DN800/HDPE 规格混排)会整轮漂成英文,system.md 语言规则压不住。修复位 = +# 当轮 context 提醒(prompt 最末、最新鲜)——与 contact-ask 提醒"逐字话术防 +# 漂移"同款方法论。2026-10-08 Task 5 收尾: 语言规则放开(模板句跟随客户语言 +# 自然表达)后,ES note 的"整句使用英文原版/绝不翻译成西语"与新规则相反, +# 已同步删除;两条 note 统一补"补全号码逐字照抄"(回显确认轮唯一例外)。 _CJK_RE = re.compile(r"[一-鿿]") _ES_FEATURE_RE = re.compile(r"[áéíóúñãç¿¡]") LANG_NOTE_ZH = ( "⚠️ 语言提醒:客户这条消息是中文——你的回复必须全程使用中文," - "除英文模板句保持英文原文外,一个英文单词都不能出现。" + "一个英文单词都不能出现;模板句跟随客户语言自然表达(系统提醒提供的" + "逐字话术优先用其语言版本,无则自然翻译保持意思与礼貌度);系统提供的" + "补全号码逐字照抄,绝不改动数字。" ) LANG_NOTE_ES = ( - "⚠️ 语言提醒:客户这条消息是西语——叙述部分用西语,但引导留资模板句必须" - "整句使用英文原版(\"Please leave your contact and our manager will send " - "the full quotation.\"),绝不翻译成西语。" + "⚠️ 语言提醒:客户这条消息是西语——你的回复全程用西语,模板句跟随客户" + "语言自然表达(系统提醒提供的逐字话术优先用其语言版本,无则自然翻译" + "保持意思与礼貌度);系统提供的补全号码逐字照抄,绝不改动数字。" ) diff --git a/tests/test_lead_email_trigger.py b/tests/test_lead_email_trigger.py index eecdda4..5f297c6 100644 --- a/tests/test_lead_email_trigger.py +++ b/tests/test_lead_email_trigger.py @@ -506,14 +506,19 @@ def test_reminder_boundary_on_pressure_phrases(): def test_reminder_language_note_follows_customer_language(): - # Task 11 真人验收: 拉丁规格混排的中文消息会整轮漂英文、西语客户会把 - # 模板句翻译成西语——语言指令必须挂在当轮提醒(prompt 最末最鲜的位置) + # Task 11 真人验收: 拉丁规格混排的中文消息会整轮漂英文——语言指令必须 + # 挂在当轮提醒(prompt 最末最鲜的位置)。Task 5 收尾(2026-10-08): 语言 + # 规则放开后 ES/ZH note 同步新语义——模板句跟随客户语言自然表达+ + # 补全号码逐字照抄;"整句使用英文原版/绝不翻译成西语"旧锚随规则废除。 zh = ConversationManager._build_context_reminder( {}, "你们做DN800的HDPE双壁波纹管吗?市政排污用的", []) assert "全程使用中文" in zh + assert "跟随客户语言自然表达" in zh and "号码逐字照抄" in zh es = ConversationManager._build_context_reminder( {}, "¿Cuál es el precio del tubo PE100?", []) - assert "英文原版" in es and "绝不翻译成西语" in es + assert "跟随客户语言自然表达" in es + assert "号码逐字照抄" in es + assert "英文原版" not in es and "绝不翻译" not in es # 旧规则清零 # 英文客户不带语言提醒(默认英语,无需提醒) en = ConversationManager._build_context_reminder( {}, "how much is the DN800 pipe?", [])