convertToEnhancedMessages 将普通消息转换为增强消息
(messages []*model.Message, fileMap map[int64]string)
| 74 | |
| 75 | // convertToEnhancedMessages 将普通消息转换为增强消息 |
| 76 | func convertToEnhancedMessages(messages []*model.Message, fileMap map[int64]string) []*EnhancedMessage { |
| 77 | enhancedMessages := make([]*EnhancedMessage, len(messages)) |
| 78 | |
| 79 | for i, msg := range messages { |
| 80 | enhanced := &EnhancedMessage{ |
| 81 | Message: msg, |
| 82 | MessageType: msg.GetMessageType(), |
| 83 | ProcessRecords: []*model.MessageProcessStep{}, |
| 84 | } |
| 85 | |
| 86 | // 填充文件名 |
| 87 | if msg.FileID > 0 && fileMap != nil { |
| 88 | enhanced.FileName = fileMap[msg.FileID] |
| 89 | } |
| 90 | |
| 91 | // 根据消息类型解析内容 |
| 92 | switch enhanced.MessageType { |
| 93 | case model.MessageTypeChat: |
| 94 | // 解析聊天消息 |
| 95 | if parsedMsg, err := msg.ParseChatMessage(); err == nil { |
| 96 | enhanced.ParsedMessage = parsedMsg |
| 97 | } else { |
| 98 | enhanced.ParsedMessage = msg.Message // 解析失败时返回原始内容 |
| 99 | } |
| 100 | enhanced.ParsedAnswer = msg.Answer // 聊天消息的 answer 就是文本 |
| 101 | |
| 102 | case model.MessageTypeWorkflow: |
| 103 | // 解析工作流消息 |
| 104 | if parsedParams, err := msg.ParseWorkflowParameters(); err == nil { |
| 105 | enhanced.ParsedMessage = parsedParams |
| 106 | } else { |
| 107 | enhanced.ParsedMessage = msg.Message // 解析失败时返回原始内容 |
| 108 | } |
| 109 | |
| 110 | if parsedOutput, err := msg.ParseWorkflowOutput(); err == nil { |
| 111 | enhanced.ParsedAnswer = parsedOutput |
| 112 | } else { |
| 113 | enhanced.ParsedAnswer = msg.Answer // 解析失败时返回原始内容 |
| 114 | } |
| 115 | } |
| 116 | |
| 117 | // 解析RAG统计数据 |
| 118 | if msg.RAGStats != "" { |
| 119 | if ragStatsData, err := parseRAGStats(msg.RAGStats); err == nil { |
| 120 | enhanced.RAGStats = ragStatsData |
| 121 | } |
| 122 | // 解析失败时RAGStats保持为nil,不影响其他字段 |
| 123 | } |
| 124 | |
| 125 | enhancedMessages[i] = enhanced |
| 126 | } |
| 127 | |
| 128 | return enhancedMessages |
| 129 | } |
| 130 | |
| 131 | func attachProcessRecords(enhancedMessages []*EnhancedMessage, processRecordMap map[int64][]*model.MessageProcessStep) { |
| 132 | if len(enhancedMessages) == 0 || len(processRecordMap) == 0 { |
no test coverage detected