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 模式命中后按渠道词分辨——
# 索要已在手的渠道才丢,索要缺失渠道放行(双要补邮箱场景);泛渠道词
# 只要手上有任何号码渠道即丢(宁丢勿放);精确+泛同句共存时按①②自然
# 实现任一命中判丢。中文泛词不用 \b(CJK 无词边界,"电话"前 \b 永不成立)。
# 实现任一命中判丢。中文泛词不用 \b(CJK 无词边界,"电话"前 \b 在
# 主流 CJK 连写形态下不成立)。
_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)
def _precise_channels_in(s: str) -> set:
out = set()
for m in _PRECISE_CHANNEL_RE.finditer(s):
w = m.group(0).lower()
out.add("email" if w in ("e-mail", "email", "邮箱")
else "wechat" if w in ("微信", "wechat") else "whatsapp")
out.add(_PRECISE_CHANNEL_MAP[m.group(0).lower()])
return out