feat: 完成角色卡,智能体配置,加载,历史记录,清空等功能

This commit is contained in:
2025-11-08 21:01:58 +08:00
parent 82546c4381
commit 71ffa0a816
11 changed files with 3156 additions and 116 deletions

View File

@@ -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: []
};
}
}
};