Task #1607 修复:纯下载意图匹配错误 + OCR错误年份降级

1. auto_reply.py: '哪儿下载?'等无核心词查询不应直接放行,
   改为全文回退检查(beibao.md全文不含'登录'等插件词→拒绝)
   修复 '在哪儿下载?' 误答背包插件问题

2. monitor.py: OCR错误年份(12026年)时增加本地时间戳辅助判断,
   时间戳新鲜(≤300s)则放行,否则丢弃
   修复历史消息中带今天时间戳时因OCR年份错误被全量丢弃
This commit is contained in:
youpaishidifu
2026-08-25 17:41:32 +08:00
parent eac9ece77f
commit c78c5a1636
2 changed files with 59 additions and 6 deletions
+22 -3
View File
@@ -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: