feat(ai-service): 替换 anonymous 为随机访客唯一标识 getUserId()

- 新增 getUserId() 函数,已登录返回 memberId,未登录生成并持久化 guest_* 唯一ID
- 替换全部 10 处 'anonymous' 硬编码为 getUserId()
This commit is contained in:
2026-05-15 09:22:48 +08:00
parent 7a713e07e1
commit 9fc34ef467

View File

@@ -26,6 +26,29 @@ try {
console.warn('读取会话ID失败:', e);
}
const GUEST_ID_KEY = 'ai_guest_user_id';
/**
* 获取用户ID:已登录返回 memberId,未登录生成访客唯一标识并持久化
*/
function getUserId() {
const memberId = store.state.memberInfo?.id;
if (memberId) return memberId;
let guestId;
try {
guestId = uni.getStorageSync(GUEST_ID_KEY);
} catch (e) { /* ignore */ }
if (!guestId) {
guestId = 'guest_' + Date.now() + '_' + Math.random().toString(36).slice(2, 10);
try {
uni.setStorageSync(GUEST_ID_KEY, guestId);
} catch (e) { /* ignore */ }
}
return guestId;
}
// #ifdef MP-WEIXIN
// ================================
// WebSocket 长连接管理(微信小程序)
@@ -75,7 +98,7 @@ function ensureWebSocketConnected() {
// 获取认证参数(独立函数,不使用 this)
var _uniacid = uni.getStorageSync('uniacid') || Config.uniacid;
var _token = store.state.token || 'test_token';
var _userId = store.state.memberInfo?.id || 'anonymous';
var _userId = getUserId();
wsSocketTask.onOpen(function() {
wsConnected = true;
@@ -217,12 +240,12 @@ export default {
const params = {
url: '/api/kefu/chat',
data: {
user_id: store.state.memberInfo?.id || 'anonymous',
user_id: getUserId(),
stream: false,
inputs: {},
query: message,
response_mode: 'blocking', // 强制 blocking
user: store.state.memberInfo?.id || 'anonymous',
user: getUserId(),
conversation_id: this.getConversationId() || '',
...getDomainParams()
},
@@ -283,7 +306,7 @@ export default {
action: 'chat',
uniacid: this.getUniacid(),
query: message,
user_id: store.state.memberInfo?.id || 'anonymous',
user_id: getUserId(),
conversation_id: this.getConversationId() || '',
...getDomainParams()
})
@@ -310,7 +333,7 @@ export default {
inputs: {},
query: message,
response_mode: 'streaming',
user_id: store.state.memberInfo?.id || 'anonymous',
user_id: getUserId(),
conversation_id: this.getConversationId() || '',
...getDomainParams()
})
@@ -462,8 +485,8 @@ export default {
data: {
uniacid: this.getUniacid(),
token: store.state.token || 'test_token',
user_id: store.state.memberInfo?.id || 'anonymous',
member_id: store.state.memberInfo?.id || 'anonymous',
user_id: getUserId(),
member_id: getUserId(),
...getDomainParams()
},
header: {
@@ -533,10 +556,10 @@ export default {
const requestData = {
uniacid: params.uniacid || this.getUniacid(),
conversation_id: params.conversation_id,
user_id: params.user_id || store.state.memberInfo?.id || 'anonymous',
user_id: params.user_id || getUserId(),
limit: params.limit || 20,
offset: params.offset || 0,
member_id: params.member_id || store.state.memberInfo?.id || 'anonymous',
member_id: params.member_id || getUserId(),
token: params.token || '',
...getDomainParams()
};
@@ -579,8 +602,8 @@ export default {
}
const paramsObj = {
uniacid: this.getUniacid(),
user_id: store.state.memberInfo?.id || 'anonymous',
member_id: store.state.memberInfo?.id || 'anonymous',
user_id: getUserId(),
member_id: getUserId(),
token: store.state.token || 'test_token',
query: message,
conversation_id: conversationId || '',