refactor(person_info): 引入同步方法 get_value 并替换旧的 get_value_sync(因为根本就没有这个方法)

为了解决在不同异步上下文中同步调用数据库可能引发的运行时错误,实现了一个新的、更健壮的同步方法 `PersonInfoManager.get_value`。

- 新方法能够正确处理已在运行的 asyncio 事件循环,提高了在混合代码环境中调用的稳定性。
- 全面替换了原有的 `get_value_sync` 方法调用,统一了同步获取用户信息的接口。
This commit is contained in:
minecraft1024a
2025-09-20 22:21:35 +08:00
committed by Windpicker-owo
parent 02067b6eeb
commit 79baac2797
5 changed files with 50 additions and 11 deletions

View File

@@ -139,7 +139,7 @@ class RelationshipBuilder:
"message_count": await self._count_messages_in_timerange(potential_start_time, message_time),
}
segments.append(new_segment)
person_name = get_person_info_manager().get_value_sync(person_id, "person_name") or person_id
person_name = get_person_info_manager().get_value(person_id, "person_name") or person_id
logger.debug(
f"{self.log_prefix} 眼熟用户 {person_name}{time.strftime('%H:%M:%S', time.localtime(potential_start_time))} - {time.strftime('%H:%M:%S', time.localtime(message_time))} 之间有 {new_segment['message_count']} 条消息"
)
@@ -178,8 +178,8 @@ class RelationshipBuilder:
"message_count": await self._count_messages_in_timerange(potential_start_time, message_time),
}
segments.append(new_segment)
person = Person(person_id=person_id)
person_name = person.person_name or person_id
person_info_manager = get_person_info_manager()
person_name = person_info_manager.get_value(person_id, "person_name") or person_id
logger.debug(
f"{self.log_prefix} 重新眼熟用户 {person_name} 创建新消息段超过10条消息间隔: {new_segment}"
)
@@ -369,8 +369,8 @@ class RelationshipBuilder:
users_to_build_relationship = []
for person_id, segments in self.person_engaged_cache.items():
total_message_count = self._get_total_message_count(person_id)
person_name = get_person_info_manager().get_value_sync(person_id, "person_name") or person_id
person_name = get_person_info_manager().get_value(person_id, "person_name") or person_id
if total_message_count >= max_build_threshold or (
total_message_count >= 5 and (immediate_build == person_id or immediate_build == "all")
):