修复[OCR过滤]:版本号被误识别为时间戳导致消息丢弃
- 问题:OCR将版本号1.21.11识别后被正则表达式转换为时间戳1:21:11, 该时间戳被判定为过期(>300s),导致包含版本号的用户新消息被过滤器1丢弃 - 根因:_normalize_timestamps和_ocr_text_has_fresh_timestamp中的正则表达式 将点号分隔符[.]包含在分隔符集合中,错误匹配了版本号格式 - 修复:将第一个分隔符集合从[.;]改为[;:],排除点号作为首个分隔符 版本号(如1.21.11)使用纯点号分隔,不再被转换为时间戳 冒号/分号分隔的时间戳和混合分隔符(如9;51.24)仍正常转换 - 影响范围:_normalize_timestamps(第6982行)和_ocr_text_has_fresh_timestamp(第7068行) 两处正则表达式同步修改
This commit is contained in:
+12
-4
@@ -6977,10 +6977,14 @@ class MessageMonitor:
|
|||||||
return text
|
return text
|
||||||
|
|
||||||
# ⭐ Task #1666: 先处理分号/点作为分隔符的情况(精确匹配)
|
# ⭐ Task #1666: 先处理分号/点作为分隔符的情况(精确匹配)
|
||||||
# 例如: 9;51.24 → 9:51:24, 16.28.40 → 16:28:40
|
# 例如: 9;51.24 → 9:51:24, 16.28.40 → 16:28.40
|
||||||
# 使用与第4092行相同的正则表达式,确保一致性
|
# ⭐ Task #1716: 排除版本号误识别(如1.21.11被误转为时间戳1:21:11)
|
||||||
|
# 版本号通常用点号分隔(如1.21.11、v1.0.3),时间戳用冒号/分号分隔
|
||||||
|
# 修改正则表达式:要求第一个分隔符不能是点号(排除版本号格式)
|
||||||
|
# 防止版本号被错误转换为时间戳导致消息丢弃
|
||||||
|
# 修改说明:将第一个分隔符[.;]改为[;:],排除点号作为第一个分隔符
|
||||||
text = re.sub(
|
text = re.sub(
|
||||||
r'(?<![;.0-9A-Za-z%])(\d{1,2})([.;])(\d{2})(?:[.;:](\d{2}))?(?![;.0-9A-Za-z%])',
|
r'(?<![;.0-9A-Za-z%])(\d{1,2})([;:])(\d{2})(?:[.;:](\d{2}))?(?![;.0-9A-Za-z%])',
|
||||||
lambda m: f'{m.group(1)}:{m.group(3)}:{m.group(4)}' if m.group(4) else f'{m.group(1)}:{m.group(3)}',
|
lambda m: f'{m.group(1)}:{m.group(3)}:{m.group(4)}' if m.group(4) else f'{m.group(1)}:{m.group(3)}',
|
||||||
text)
|
text)
|
||||||
|
|
||||||
@@ -7065,8 +7069,12 @@ class MessageMonitor:
|
|||||||
# ')youpaishidifu 服务器的基本信息有哪些?'被过滤器1丢弃。
|
# ')youpaishidifu 服务器的基本信息有哪些?'被过滤器1丢弃。
|
||||||
# 第二段放宽为任意[.;:],与stage splitting的_line_has_fresh_ts
|
# 第二段放宽为任意[.;:],与stage splitting的_line_has_fresh_ts
|
||||||
# (\d{1,2}[:;.]\d{1,2}(?:[:;.]\d{1,2})?)对齐;URL残片防护靠前后顾不变。
|
# (\d{1,2}[:;.]\d{1,2}(?:[:;.]\d{1,2})?)对齐;URL残片防护靠前后顾不变。
|
||||||
|
# ⭐ Task #1716: 排除版本号误识别(如1.21.11被误转为时间戳1:21:11)
|
||||||
|
# 版本号通常用点号分隔(如1.21.11、v1.0.3),时间戳用冒号/分号分隔
|
||||||
|
# 修改正则表达式:要求第一个分隔符不能是点号(排除版本号格式)
|
||||||
|
# 防止版本号被错误转换为时间戳导致消息丢弃
|
||||||
normalized = re.sub(
|
normalized = re.sub(
|
||||||
r'(?<![;.0-9A-Za-z%])(\d{1,2})([.;])(\d{2})(?:[.;:](\d{2}))?(?![;.0-9A-Za-z%])',
|
r'(?<![;.0-9A-Za-z%])(\d{1,2})([;:])(\d{2})(?:[.;:](\d{2}))?(?![;.0-9A-Za-z%])',
|
||||||
lambda m: f'{m.group(1)}:{m.group(3)}:{m.group(4)}' if m.group(4) else f'{m.group(1)}:{m.group(3)}',
|
lambda m: f'{m.group(1)}:{m.group(3)}:{m.group(4)}' if m.group(4) else f'{m.group(1)}:{m.group(3)}',
|
||||||
normalized)
|
normalized)
|
||||||
timestamps = re.findall(r'\d{1,2}:\d{1,2}(?::\d{1,2})?', normalized)
|
timestamps = re.findall(r'\d{1,2}:\d{1,2}(?::\d{1,2})?', normalized)
|
||||||
|
|||||||
Reference in New Issue
Block a user