test: Task1质量审查补测——④真覆盖/③保底覆盖/分组注释/渠道映射查表化

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-10-08 11:39:36 +08:00
parent 1fc87fbe85
commit 383158a03d
2 changed files with 19 additions and 5 deletions
+11 -4
View File
@@ -276,17 +276,24 @@ REASK_PATTERNS = [
# 渠道精确化(2026-10-08 spec §4.4): REASK 模式命中后按渠道词分辨—— # 渠道精确化(2026-10-08 spec §4.4): REASK 模式命中后按渠道词分辨——
# 索要已在手的渠道才丢,索要缺失渠道放行(双要补邮箱场景);泛渠道词 # 索要已在手的渠道才丢,索要缺失渠道放行(双要补邮箱场景);泛渠道词
# 只要手上有任何号码渠道即丢(宁丢勿放);精确+泛同句共存时按①②自然 # 只要手上有任何号码渠道即丢(宁丢勿放);精确+泛同句共存时按①②自然
# 实现任一命中判丢。中文泛词不用 \b(CJK 无词边界,"电话"前 \b 永不成立)。 # 实现任一命中判丢。中文泛词不用 \b(CJK 无词边界,"电话"前 \b 在
# 主流 CJK 连写形态下不成立)。
_PRECISE_CHANNEL_RE = re.compile(r"whatsapp|e-?mail|邮箱|微信|wechat", re.I) _PRECISE_CHANNEL_RE = re.compile(r"whatsapp|e-?mail|邮箱|微信|wechat", re.I)
# 匹配形态→渠道键查表(对齐 contact_pipeline._NUMBER_FIRST_CHANNEL 先例:
# 未来扩 _PRECISE_CHANNEL_RE 加新渠道词而漏配此表 → KeyError 显性失败,
# 而非链式三元静默兜到 whatsapp)
_PRECISE_CHANNEL_MAP = {
"whatsapp": "whatsapp",
"e-mail": "email", "email": "email", "邮箱": "email",
"wechat": "wechat", "微信": "wechat",
}
_GENERIC_CONTACT_RE = re.compile(r"\b(?:number|phone|contact)\b|电话|联系方式|号码", re.I) _GENERIC_CONTACT_RE = re.compile(r"\b(?:number|phone|contact)\b|电话|联系方式|号码", re.I)
def _precise_channels_in(s: str) -> set: def _precise_channels_in(s: str) -> set:
out = set() out = set()
for m in _PRECISE_CHANNEL_RE.finditer(s): for m in _PRECISE_CHANNEL_RE.finditer(s):
w = m.group(0).lower() out.add(_PRECISE_CHANNEL_MAP[m.group(0).lower()])
out.add("email" if w in ("e-mail", "email", "邮箱")
else "wechat" if w in ("微信", "wechat") else "whatsapp")
return out return out
+8 -1
View File
@@ -200,14 +200,21 @@ def test_reask_wall_channel_precision():
索要缺失渠道放行;泛渠道词只要手上有任何号码渠道即丢(宁丢勿放)。""" 索要缺失渠道放行;泛渠道词只要手上有任何号码渠道即丢(宁丢勿放)。"""
wa = {"whatsapp"} wa = {"whatsapp"}
em = {"email"} em = {"email"}
# 精确渠道词: ①在手→丢 / ④缺失→放行
assert asks_contact("What's your WhatsApp number?", wa) is True assert asks_contact("What's your WhatsApp number?", wa) is True
assert asks_contact("留个邮箱吧", em) is True assert asks_contact("留个邮箱吧", em) is True
assert asks_contact("And an email address would help too", wa) is False assert asks_contact("What's your email address?", wa) is False
assert asks_contact("你WhatsApp多少?", em) is False assert asks_contact("你WhatsApp多少?", em) is False
# 泛渠道词: ②手上有号码渠道→丢 / ④无号码渠道(只 email)→放行
assert asks_contact("What's your number?", wa) is True assert asks_contact("What's your number?", wa) is True
assert asks_contact("留个电话呗", wa) is True assert asks_contact("留个电话呗", wa) is True
assert asks_contact("What's your number?", em) is False assert asks_contact("What's your number?", em) is False
# 精确+泛同句共存: 按①②自然实现,任一命中判丢
assert asks_contact("leave your number or email", wa) is True assert asks_contact("leave your number or email", wa) is True
# ③保底: 命中 REASK 但无任何渠道词("Drop yours too"式重复纠缠)→保守丢
assert asks_contact("Drop yours too and our manager will send the quote!",
{"phone"}) is True
# 无参: 原行为向后兼容(命中即丢/未命中放行)
assert asks_contact("What's your WhatsApp number?") is True assert asks_contact("What's your WhatsApp number?") is True
assert asks_contact("hello there") is False assert asks_contact("hello there") is False