chore:
This commit is contained in:
@@ -116,6 +116,28 @@ function getUserId() {
|
||||
return guestId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归在 info 响应中查找配置 uuid (媒体上传必填)。
|
||||
* 后端字段名/层级不确定, 深度 4 内匹配 config_uuid / config_uid / uuid 任意字段。
|
||||
*/
|
||||
function findConfigUuid(obj, depth) {
|
||||
if (!obj || typeof obj !== 'object' || (depth || 0) > 4) return '';
|
||||
var keys;
|
||||
try { keys = Object.keys(obj); } catch (e) { return ''; }
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
var k = keys[i];
|
||||
if (/^(config_uuid|config_uid|uuid)$/i.test(k) && obj[k]) return String(obj[k]);
|
||||
}
|
||||
for (var j = 0; j < keys.length; j++) {
|
||||
var v = obj[keys[j]];
|
||||
if (v && typeof v === 'object') {
|
||||
var found = findConfigUuid(v, (depth || 0) + 1);
|
||||
if (found) return found;
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前 AI Agent。
|
||||
*/
|
||||
@@ -783,13 +805,14 @@ export default {
|
||||
async: false,
|
||||
});
|
||||
console.log('[AI Service] getServiceConfig response:', JSON.stringify(response));
|
||||
// 媒体上传需要 config_uuid (后端校验 config_uid/config_uuid 不能为空)。
|
||||
// 此前从未写入过该缓存, 导致上传表单里 config_uuid 恒为空。
|
||||
// 这里从 info 响应中提取并持久化, 兼容多种字段名。
|
||||
// 媒体上传需要 config_uuid (后端校验不能为空)。递归查找并持久化。
|
||||
const cfg = response && response.data;
|
||||
if (cfg && typeof cfg === 'object') {
|
||||
const uuid = cfg.config_uuid || cfg.config_uid || cfg.uuid || (cfg.info && (cfg.info.config_uuid || cfg.info.uuid)) || '';
|
||||
if (uuid) uni.setStorageSync('current_config_uuid', uuid);
|
||||
const uuid = findConfigUuid(cfg, 0);
|
||||
if (uuid) {
|
||||
uni.setStorageSync('current_config_uuid', uuid);
|
||||
console.log('[AI Service] 已缓存 config_uuid:', uuid);
|
||||
} else {
|
||||
console.warn('[AI Service] info 响应中未找到 config_uuid/config_uid/uuid 字段, 上传将缺少该参数。响应结构:', JSON.stringify(cfg));
|
||||
}
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
@@ -1038,9 +1061,10 @@ export default {
|
||||
|
||||
/**
|
||||
* 获取当前 config_uuid (媒体上传路由用)
|
||||
* 优先级: info 接口缓存 > 本地配置 (.local.config.js aikefuConfigUuid)
|
||||
*/
|
||||
getCurrentConfigUuid() {
|
||||
return uni.getStorageSync('current_config_uuid') || '';
|
||||
return uni.getStorageSync('current_config_uuid') || Config.aikefuConfigUuid || '';
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -63,7 +63,7 @@ if (process?.env?.NODE_ENV === 'development') {
|
||||
}
|
||||
// #endif
|
||||
|
||||
const { uniacid = 0, domain = defaultDomain } = localDevConfig ?? { uniacid: 0, domain: defaultDomain }
|
||||
const { uniacid = 0, domain = defaultDomain, aikefuConfigUuid = '' } = localDevConfig ?? { uniacid: 0, domain: defaultDomain }
|
||||
|
||||
export default {
|
||||
/**
|
||||
@@ -80,6 +80,10 @@ export default {
|
||||
//api请求地址
|
||||
baseUrl: domain,
|
||||
|
||||
// aikefu 智能客服配置 uuid (媒体上传必填; 后端 /api/kefu/info 目前不返回该值,
|
||||
// 需在 .local.config.js 对应环境配置里手动填写 aikefuConfigUuid: 'xxx')
|
||||
aikefuConfigUuid: aikefuConfigUuid,
|
||||
|
||||
// 图片域名
|
||||
imgDomain: domain,
|
||||
|
||||
|
||||
@@ -99,8 +99,10 @@ async function uploadViaPhp(filePath, kind, addon, agentId) {
|
||||
name: 'file',
|
||||
formData: {
|
||||
kind,
|
||||
agent_id: addon === 'aiagent' ? agentId : undefined,
|
||||
// aikefu 后端必填 config_uuid; 同时兼容 config_uid 命名并附 agent_id 兜底
|
||||
agent_id: agentId || undefined,
|
||||
config_uuid: addon === 'aikefu' ? (aiService.getCurrentConfigUuid?.() || '') : undefined,
|
||||
config_uid: addon === 'aikefu' ? (aiService.getCurrentConfigUuid?.() || '') : undefined,
|
||||
uniacid: aiService.getUniacid(),
|
||||
user_id: aiService.getUserId?.() || '',
|
||||
},
|
||||
@@ -135,7 +137,13 @@ async function uploadViaPhp(filePath, kind, addon, agentId) {
|
||||
form.append('file', file)
|
||||
form.append('kind', kind)
|
||||
if (addon === 'aiagent') form.append('agent_id', agentId)
|
||||
else form.append('config_uuid', aiService.getCurrentConfigUuid?.() || '')
|
||||
else {
|
||||
// aikefu 后端必填 config_uuid; 同时兼容 config_uid 命名并附 agent_id 兜底
|
||||
const uuid = aiService.getCurrentConfigUuid?.() || ''
|
||||
form.append('config_uuid', uuid)
|
||||
form.append('config_uid', uuid)
|
||||
form.append('agent_id', agentId)
|
||||
}
|
||||
form.append('uniacid', aiService.getUniacid())
|
||||
form.append('user_id', aiService.getUserId?.() || '')
|
||||
const res = await fetch(Config.baseUrl + url, {
|
||||
@@ -184,8 +192,9 @@ async function uploadViaSts(filePath, kind, addon, agentId, config) {
|
||||
'token': store.state.token || ''
|
||||
},
|
||||
data: {
|
||||
agent_id: addon === 'aiagent' ? agentId : undefined,
|
||||
agent_id: agentId || undefined,
|
||||
config_uuid: addon === 'aikefu' ? (aiService.getCurrentConfigUuid?.() || '') : undefined,
|
||||
config_uid: addon === 'aikefu' ? (aiService.getCurrentConfigUuid?.() || '') : undefined,
|
||||
uniacid: aiService.getUniacid(),
|
||||
user_id: aiService.getUserId?.() || '',
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user