修复后台聊天表情发送易卡住问题\n\n- 将后台表情发送改为异步提交,避免请求线程同步等待导致卡住\n- 增加按 md5 反查历史表情 total_length 的兜底逻辑\n- 为 SendEmoji 增加超时与详细日志,便于定位接口无响应问题

This commit is contained in:
liuwei
2026-04-27 11:21:11 +08:00
parent 7d2ad5b3d8
commit 19411d19c8
3 changed files with 125 additions and 17 deletions

View File

@@ -645,6 +645,26 @@ class MessageStorageDB(BaseDBOperator):
"""
return self.execute_query(sql, (limit,)) or []
def get_emoji_asset_by_md5(self, md5: str) -> Optional[Dict]:
"""根据表情 md5 精确查找最近一条表情消息。
说明:
1. 后台聊天发送表情时,前端偶尔只能拿到 md5拿不到 total_length
2. wechat_ipad 的 SendEmoji 接口要求同时提供 Md5 和 TotalLen
3. 这里直接从历史消息表里按 md5 反查最近一条原始记录,给发送接口补全长度。
"""
sql = """
SELECT message_id, group_id, sender, timestamp, message_type, attachment_url, image_path
FROM messages
WHERE message_type IN ('47', '1048625', '1090519089')
AND attachment_url IS NOT NULL
AND attachment_url <> ''
AND attachment_url LIKE %s
ORDER BY timestamp DESC
LIMIT 1
"""
return self.execute_query(sql, (f'%md5="{md5}"%',), fetch_one=True)
def get_messages_by_date_range(self, group_id: str, start_date: str, end_date: str = None,
min_content_length: int = 6, max_results: int = 5000) -> List[Dict]:
"""按日期范围获取消息(支持按天总结)