fix(database): 修复缓存失效逻辑和属性名错误
主要修复: 1. Expression 缓存键生成问题 - 问题: get_expression_by_chat_id 作为实例方法使用 @cached 时,self 会污染缓存键 - 解决: 重构为静态方法 _get_expressions_by_chat_id_cached,实例方法调用它 - 确保缓存键只包含 chat_id,与缓存失效键匹配 2. PersonInfo 删除时的缓存失效 - 问题: person_id 是哈希值,无法反向得到 platform 和 user_id - 解决: 移除不准确的缓存清除代码,依赖 TTL 自动过期 - 原因: 删除操作很罕见,缓存在 5-10 分钟内会自动过期 3. ChatStreams 属性名错误 (严重 bug) - 问题: UserInfo.nickname 应为 UserInfo.user_nickname - 问题: UserInfo.cardname 应为 UserInfo.user_cardname - 错误导致: AttributeError: 'UserInfo' object has no attribute 'nickname' - 修复: 使用正确的属性名 验证: - 创建了 test_cache_invalidation.py 验证缓存键一致性 - 所有 11 个测试通过 - 验证了缓存失效键与装饰器生成的键匹配
This commit is contained in:
@@ -450,8 +450,8 @@ class ChatManager:
|
||||
defaults={
|
||||
"user_platform": user_info.platform if user_info else platform,
|
||||
"user_id": user_info.user_id if user_info else "",
|
||||
"user_nickname": user_info.nickname if user_info else "",
|
||||
"user_cardname": user_info.cardname if user_info else "",
|
||||
"user_nickname": user_info.user_nickname if user_info else "",
|
||||
"user_cardname": user_info.user_cardname if user_info else "",
|
||||
"group_platform": group_info.platform if group_info else None,
|
||||
"group_id": group_info.group_id if group_info else None,
|
||||
"group_name": group_info.group_name if group_info else None,
|
||||
|
||||
Reference in New Issue
Block a user