feat: 重构异步模型字段并更新依赖

This commit is contained in:
2026-06-08 18:01:54 +08:00
parent ee6677c1f8
commit e1461cf0f0
12 changed files with 219 additions and 335 deletions

View File

@@ -47,15 +47,35 @@ func Callback(ctx context.Context, req *dto.SessionCallbackReq) (*dto.SessionCal
}
// GetHistoryMessages 获取历史信息
func GetHistoryMessages(ctx context.Context, sessionId string) ([]map[string]any, error) {
func GetHistoryMessages(ctx context.Context, sessionId string, nodeId string) ([]map[string]any, error) {
// 1) 获取最大轮次
maxRounds := g.Cfg().MustGet(ctx, "session.maxRounds", 10).Int()
// 2) 从 Redis 获取历史记录
redisHistory, err := GetSessionHistoryForInference(ctx, sessionId)
if err == nil && len(redisHistory) > 0 {
return redisHistory, nil
}
return getHistoryFromDatabase(ctx, sessionId, maxRounds)
// 3) Redis 没有,从数据库查最新 maxRounds
sessions, _, err := dao.ComposeSession.List(ctx, &entity.ComposeSession{
SessionId: sessionId,
NodeId: nodeId,
}, 1, maxRounds)
if err != nil {
return nil, fmt.Errorf("DB获取历史失败: %w", err)
}
// 4) 为空返回报错
if len(sessions) == 0 {
return nil, fmt.Errorf("会话不存在: sessionId=%s nodeId=%s", sessionId, nodeId)
}
// 5) 提取为统一格式
messages := extractMessagesFromSessions(sessions)
// 6) 缓存 Redis 半小时
//_ = CacheSessionHistoryForInference(ctx, sessionId, messages, 30*time.Minute)
return messages, nil
}
// getHistoryFromDatabase 从数据库获取历史记录
@@ -77,12 +97,10 @@ func getHistoryFromDatabase(ctx context.Context, sessionId string, maxRounds int
// extractMessagesFromSessions 从会话列表中提取消息
func extractMessagesFromSessions(sessions []*entity.ComposeSession) []map[string]any {
var messages []map[string]any
for _, session := range sessions {
appendRequestMessages(session.RequestContent, &messages)
appendResponseMessages(session.ResponseContent, &messages)
}
return messages
}