Task #1607 修复:纯下载意图匹配错误 + OCR错误年份降级
1. auto_reply.py: '哪儿下载?'等无核心词查询不应直接放行, 改为全文回退检查(beibao.md全文不含'登录'等插件词→拒绝) 修复 '在哪儿下载?' 误答背包插件问题 2. monitor.py: OCR错误年份(12026年)时增加本地时间戳辅助判断, 时间戳新鲜(≤300s)则放行,否则丢弃 修复历史消息中带今天时间戳时因OCR年份错误被全量丢弃
This commit is contained in:
+22
-3
@@ -6460,10 +6460,29 @@ class MessageMonitor:
|
||||
pass
|
||||
# ⭐ 无日期信息:放行给下游DB查重(当天消息不带日期)
|
||||
if not dates:
|
||||
# ⭐ Task #1606: 如果检测到OCR识别错误的日期(如12026年),视为历史消息丢弃
|
||||
# ⭐ Task #1607 修复:OCR错误年份时不用本地时间做降级判断
|
||||
# 当检测到年份异常(如12026年)但无其他有效日期时,
|
||||
# 用本地时间辅助判断文本中是否有可解析的合法日期片段。
|
||||
# 逻辑:提取时间戳,若时间戳与本地时间差≤300s则放行(OCR可能把今天的日期读错),
|
||||
# 否则丢弃(可能是历史消息)。
|
||||
# 这避免了纯错误年份直接丢弃所有当天消息(如"2026年8月25日"被OCR读成"12026年8月38日")。
|
||||
_has_fresh_timestamp = False
|
||||
if timestamps:
|
||||
for ts in timestamps:
|
||||
try:
|
||||
if not self._is_timestamp_old(ts, 300):
|
||||
_has_fresh_timestamp = True
|
||||
logger.debug(f"[ocr] 过滤器1结果: OCR错误年份+新鲜时间戳{ts}(≤300s),放行")
|
||||
break
|
||||
except Exception:
|
||||
pass
|
||||
# Task #1606 原始逻辑:检测到OCR识别错误的日期模式且时间戳也不新鲜→丢弃
|
||||
if _ocr_fakedate_detected:
|
||||
logger.debug(f"[ocr] 过滤器1结果: 检测到OCR识别错误的日期模式(年份异常),丢弃: {text[:80]!r}")
|
||||
return False
|
||||
if _has_fresh_timestamp:
|
||||
pass # 上面已设置放行,继续走后续逻辑
|
||||
else:
|
||||
logger.debug(f"[ocr] 过滤器1结果: 检测到OCR识别错误的日期模式且时间戳不新鲜,丢弃: {text[:80]!r}")
|
||||
return False
|
||||
logger.debug(f"[ocr] 过滤器1结果: 无日期信息,放行给下游DB查重")
|
||||
# 如果有时间戳,检查时间戳新鲜度(可选,用于快速放行)
|
||||
if timestamps:
|
||||
|
||||
Reference in New Issue
Block a user