feat(wall): 建材首次索要改双要(WhatsApp+邮箱一起要)+已留资话术渠道中性+缺失渠道补问通用化

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-11-02 22:26:16 +08:00
parent d25c786bfb
commit cb3cbe8828
5 changed files with 79 additions and 31 deletions
+6 -6
View File
@@ -451,7 +451,7 @@ def test_reminder_boundary_branches_on_contact_state():
text = ConversationManager._build_context_reminder(raw, "多少钱", [])
assert "职能边界" in text and "禁止再索要联系方式" in text
# Task 3 防自锁改写: 本分支尾部补缺失渠道豁免(子串由尾补保留,非 :651 改写行)
assert "缺失渠道可按轻补指引提一次" in text
assert "缺失渠道——号码或邮箱——可再礼貌提一次" in text
# 未留联系方式: 引导留资
text2 = ConversationManager._build_context_reminder({}, "多少钱", [])
assert "职能边界" in text2 and "禁止再索要联系方式" not in text2
@@ -678,19 +678,19 @@ def test_reminder_app_contact_ask_gated_by_existing_contact():
text = ConversationManager._build_context_reminder(
raw, "how can I contact you", [], source="app")
assert "Drop your WhatsApp" not in text
assert "reach out to you at your WhatsApp" in text # 已留资版逐字脚本
assert "reach out to you shortly with the full quote" in text # 已留资版逐字脚本
def test_reminder_app_contact_ask_confirmed_allows_missing_channel_once():
# Task 3 收尾: contact_note app+已留资分支的第三处禁令同步改写(禁令集完整)。
# 防空转设计: 双渠道齐 → 轻补 note 不注入;消息无价格词 → 边界分支不渲染;
# 此时"缺失渠道可按轻补指引提一次"只能来自该分支改写文本
# (:651 版是"仅可按",不构成子串)。
# 此时"缺失渠道——号码或邮箱——可再礼貌提一次"只能来自该分支改写文本
# (forbidden 版是"仅可",不构成子串)。
raw = {"联系方式": {"whatsapp": "+254712345678", "email": "a@b.com"}}
text = ConversationManager._build_context_reminder(
raw, "how can I contact you?", [], source="app")
assert "reach out to you at your WhatsApp" in text # 已留资版逐字脚本在场
assert "缺失渠道可按轻补指引提一次" in text # 第三处禁令改写钉死
assert "reach out to you shortly with the full quote" in text # 已留资版逐字脚本在场
assert "缺失渠道——号码或邮箱——可再礼貌提一次" in text # 第三处禁令改写钉死
assert "email address would help too" not in text # 双渠道齐→无轻补注入(防空转)