refactor(sessionHelper): Extract session ID directly from metadata.user_id

This commit is contained in:
sususu
2025-09-04 10:26:40 +08:00
parent ac9107aa5f
commit aa869521c0

View File

@@ -4,7 +4,7 @@ const logger = require('./logger')
class SessionHelper {
/**
* 生成会话哈希用于sticky会话保持
* 基于Anthropic的prompt caching机制优先使用cacheable内容
* 基于Anthropic的prompt caching机制优先使用metadata中的session ID
* @param {Object} requestBody - 请求体
* @returns {string|null} - 32字符的会话哈希如果无法生成则返回null
*/
@@ -13,15 +13,17 @@ class SessionHelper {
return null
}
// 1. 优先提取metadata.user_id
// 1. 最高优先级使用metadata中的session ID直接使用无需hash
if (requestBody.metadata && requestBody.metadata.user_id) {
const hash = crypto
.createHash('sha256')
.update(requestBody.metadata.user_id)
.digest('hex')
.substring(0, 32)
logger.debug(`📋 Session hash generated from metadata.user_id: ${hash}`)
return hash
// 提取 session_xxx 部分
const userIdString = requestBody.metadata.user_id
const sessionMatch = userIdString.match(/session_([a-f0-9-]{36})/)
if (sessionMatch && sessionMatch[1]) {
const sessionId = sessionMatch[1]
// 直接返回session ID
logger.debug(`📋 Session ID extracted from metadata.user_id: ${sessionId}`)
return sessionId
}
}
let cacheableContent = ''