feat: 完成角色卡,智能体配置,加载,历史记录,清空等功能
This commit is contained in:
108
src/utils/api.js
108
src/utils/api.js
@@ -1,6 +1,31 @@
|
||||
// API服务文件
|
||||
import { useUserStore } from '@/stores/user.js';
|
||||
|
||||
// 图片URL处理函数 - 处理小程序中图片路径问题
|
||||
export const getResourceUrl = (url) => {
|
||||
if (!url || typeof url !== 'string') {
|
||||
return '/static/default-avatar.png';
|
||||
}
|
||||
|
||||
// 如果是完整的http/https URL,直接返回
|
||||
if (url.startsWith('http://') || url.startsWith('https://')) {
|
||||
return url;
|
||||
}
|
||||
|
||||
// 如果是相对路径,拼接完整的服务器地址
|
||||
if (url.startsWith('/file/')) {
|
||||
return BASE_URL + url;
|
||||
}
|
||||
|
||||
// 如果是其他相对路径,也拼接服务器地址
|
||||
if (url.startsWith('/')) {
|
||||
return BASE_URL + url;
|
||||
}
|
||||
|
||||
// 默认返回原路径
|
||||
return url;
|
||||
};
|
||||
|
||||
// 文本清理函数 - 只保留文字和标点符号
|
||||
export const cleanText = (text) => {
|
||||
if (!text || typeof text !== 'string') {
|
||||
@@ -49,7 +74,7 @@ export const cleanText = (text) => {
|
||||
};
|
||||
|
||||
// 基础配置
|
||||
const BASE_URL = 'http://192.168.3.243:8091'; // 根据后端地址调整
|
||||
const BASE_URL = 'http://192.168.1.2:8091'; // 根据后端地址调整
|
||||
|
||||
// 检查用户登录状态
|
||||
const checkLoginStatus = () => {
|
||||
@@ -150,7 +175,7 @@ export const chatAPI = {
|
||||
useFunctionCall: false,
|
||||
modelId: params.modelId || null, // 支持传入modelId,默认为null使用后端默认
|
||||
templateId: params.templateId || params.characterId, // 支持templateId参数
|
||||
sessionId: params.sessionId || null // 支持sessionId参数
|
||||
sessionId: params.sessionId || params.conversationId || null // 支持sessionId参数,conversationId作为备选
|
||||
};
|
||||
|
||||
console.log('发送AI聊天请求,参数:', requestData);
|
||||
@@ -317,7 +342,7 @@ export const chatAPI = {
|
||||
characterId: characterId
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
return {
|
||||
success: true,
|
||||
data: response
|
||||
@@ -329,6 +354,83 @@ export const chatAPI = {
|
||||
error: error
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
// 清空会话上下文
|
||||
clearSession: async (sessionId) => {
|
||||
try {
|
||||
const response = await request({
|
||||
url: `/api/chat/session/${sessionId}`,
|
||||
method: 'DELETE'
|
||||
});
|
||||
|
||||
return {
|
||||
success: true,
|
||||
data: response
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('清空会话API调用失败:', error);
|
||||
return {
|
||||
success: false,
|
||||
error: error
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
// 获取历史消息(根据sessionId查询全部)
|
||||
getHistoryMessages: async (sessionId) => {
|
||||
const loginStatus = checkLoginStatus();
|
||||
|
||||
// 如果用户未登录,直接返回空数组
|
||||
if (!loginStatus.isLoggedIn) {
|
||||
console.log('用户未登录,无法获取历史消息');
|
||||
return {
|
||||
success: true,
|
||||
data: [],
|
||||
isAnonymous: true
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await request({
|
||||
url: '/app/message/history',
|
||||
method: 'GET',
|
||||
data: {
|
||||
sessionId: sessionId
|
||||
}
|
||||
});
|
||||
|
||||
console.log('历史消息API响应:', response);
|
||||
|
||||
// 处理响应数据
|
||||
let messageList = [];
|
||||
if (response && response.data) {
|
||||
// 直接是数组
|
||||
if (Array.isArray(response.data)) {
|
||||
messageList = response.data;
|
||||
}
|
||||
// 可能嵌套在data字段中
|
||||
else if (response.data.data && Array.isArray(response.data.data)) {
|
||||
messageList = response.data.data;
|
||||
}
|
||||
} else if (Array.isArray(response)) {
|
||||
messageList = response;
|
||||
}
|
||||
|
||||
console.log('解析后的历史消息数量:', messageList.length);
|
||||
|
||||
return {
|
||||
success: true,
|
||||
data: messageList
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('获取历史消息失败:', error);
|
||||
return {
|
||||
success: false,
|
||||
error: error,
|
||||
data: []
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user