更新关系回溯脚本
This commit is contained in:
@@ -568,20 +568,47 @@ class MessageRetrievalScript:
|
|||||||
print(f"\n开始分析用户 {target_person_name} (QQ: {user_qq}) 的消息...")
|
print(f"\n开始分析用户 {target_person_name} (QQ: {user_qq}) 的消息...")
|
||||||
|
|
||||||
total_segments_processed = 0
|
total_segments_processed = 0
|
||||||
total_memory_points = 0
|
|
||||||
|
|
||||||
# 为每个chat_id处理消息
|
# 收集所有分段并按时间排序
|
||||||
|
all_segments = []
|
||||||
|
|
||||||
|
# 为每个chat_id处理消息,收集所有分段
|
||||||
for chat_id, messages in grouped_messages.items():
|
for chat_id, messages in grouped_messages.items():
|
||||||
first_msg = messages[0]
|
first_msg = messages[0]
|
||||||
group_name = first_msg.get('chat_info_group_name', '私聊')
|
group_name = first_msg.get('chat_info_group_name', '私聊')
|
||||||
|
|
||||||
print(f"\n处理聊天: {group_name} (共{len(messages)}条消息)")
|
print(f"准备聊天: {group_name} (共{len(messages)}条消息)")
|
||||||
|
|
||||||
# 将消息按50条分段
|
# 将消息按50条分段
|
||||||
message_chunks = self.split_messages_by_count(messages, 50)
|
message_chunks = self.split_messages_by_count(messages, 50)
|
||||||
|
|
||||||
for i, chunk in enumerate(message_chunks):
|
for i, chunk in enumerate(message_chunks):
|
||||||
print(f" 分析第 {i+1}/{len(message_chunks)} 段消息 (共{len(chunk)}条)")
|
# 将分段信息添加到列表中,包含分段时间用于排序
|
||||||
|
segment_time = chunk[-1]['time']
|
||||||
|
all_segments.append({
|
||||||
|
'chunk': chunk,
|
||||||
|
'chat_id': chat_id,
|
||||||
|
'group_name': group_name,
|
||||||
|
'segment_index': i + 1,
|
||||||
|
'total_segments': len(message_chunks),
|
||||||
|
'segment_time': segment_time
|
||||||
|
})
|
||||||
|
|
||||||
|
# 按时间排序所有分段
|
||||||
|
all_segments.sort(key=lambda x: x['segment_time'])
|
||||||
|
|
||||||
|
print(f"\n按时间顺序处理 {len(all_segments)} 个分段:")
|
||||||
|
|
||||||
|
# 按时间顺序处理所有分段
|
||||||
|
for segment_idx, segment_info in enumerate(all_segments, 1):
|
||||||
|
chunk = segment_info['chunk']
|
||||||
|
group_name = segment_info['group_name']
|
||||||
|
segment_index = segment_info['segment_index']
|
||||||
|
total_segments = segment_info['total_segments']
|
||||||
|
segment_time = segment_info['segment_time']
|
||||||
|
|
||||||
|
segment_time_str = datetime.fromtimestamp(segment_time).strftime('%Y-%m-%d %H:%M:%S')
|
||||||
|
print(f" [{segment_idx}/{len(all_segments)}] {group_name} 第{segment_index}/{total_segments}段 ({segment_time_str}) (共{len(chunk)}条)")
|
||||||
|
|
||||||
# 构建名称映射
|
# 构建名称映射
|
||||||
name_mapping = await self.build_name_mapping(chunk, target_person_id, target_person_name)
|
name_mapping = await self.build_name_mapping(chunk, target_person_id, target_person_name)
|
||||||
@@ -600,9 +627,6 @@ class MessageRetrievalScript:
|
|||||||
for original_name, mapped_name in name_mapping.items():
|
for original_name, mapped_name in name_mapping.items():
|
||||||
readable_messages = readable_messages.replace(f"{original_name}", f"{mapped_name}")
|
readable_messages = readable_messages.replace(f"{original_name}", f"{mapped_name}")
|
||||||
|
|
||||||
# 使用最后一条消息的时间作为段落时间
|
|
||||||
segment_time = chunk[-1]['time']
|
|
||||||
|
|
||||||
# 更新用户印象
|
# 更新用户印象
|
||||||
try:
|
try:
|
||||||
await self.update_person_impression_from_segment(target_person_id, readable_messages, segment_time)
|
await self.update_person_impression_from_segment(target_person_id, readable_messages, segment_time)
|
||||||
|
|||||||
Reference in New Issue
Block a user