修复两个OCR过滤bug
1. auto_reply.py: has_meaningful_hit子串回退永远拒绝 - 根因:q_mean是多字符token集合,set(heading_clean)是单字符集合 - q_mean & set(heading_clean) 永远为空 → 子串回退永远拒绝 - 修复:改为 any(kw in full for kw in q_mean) 子串匹配 - 影响:sdf1_login下载查询(22.18分)被误拒 2. monitor.py: 过去日期时间戳过期整段丢弃 - 根因:_ocr_text_has_fresh_timestamp返回False时(过期时间戳) - 调用方对含中文文本无条件放行 → 昨日旧消息被当作新消息 - 修复:新增_has_past_date_timestamp方法检测过去日期 - 调用方:过去日期+时间戳过期 → 整段丢弃 - 场景:OCR抓到昨天(2026/8/23)的整屏内容被错误放行
This commit is contained in:
+4
-1
@@ -482,7 +482,10 @@ class AutoReply:
|
||||
# ⭐ 修复:子串回退必须同时满足两个条件:
|
||||
# 1. 有有意义的子串(≥4字)命中文档
|
||||
# 2. 至少有一个 meaningful_token 命中文档(防止"服务器"等通用词泛匹配)
|
||||
has_meaningful_hit = bool(q_mean & (set(heading_clean) | set(title.lower()) | set(body_clean[:800])))
|
||||
# ⭐ 修复(2026-08-24): 原代码 q_mean & set(heading_clean) 是token集合与
|
||||
# 单字符集合的交集,多字符token永远不在单字符集合中 → 子串回退永远拒绝。
|
||||
# 改为子串匹配(与 core_hits 计算方式一致)。
|
||||
has_meaningful_hit = any(kw in full for kw in q_mean)
|
||||
if not has_meaningful_hit:
|
||||
# 没有 meaningful_token 命中,即使有子串匹配也拒绝
|
||||
logger.debug(f"无有意义token命中拒绝: query={query[:40]!r} doc_heading={heading[:30]!r}")
|
||||
|
||||
Reference in New Issue
Block a user