feat: 更新hook fetch 库

This commit is contained in:
ccnetcore
2025-06-28 23:07:32 +08:00
parent 5383d2d40e
commit 216b57a4c7
14 changed files with 34 additions and 27 deletions

View File

@@ -31,8 +31,8 @@ public class AzureRestChatService : IChatService
}).ToList(), }).ToList(),
stream = true, stream = true,
max_tokens = 2048, max_tokens = 2048,
temperature = 0.8, // temperature = 0.8,
top_p = 0.1, // top_p = 0.1,
// presence_penalty = 0, // presence_penalty = 0,
// frequency_penalty = 0, // frequency_penalty = 0,
model = aiModelDescribe.ModelId model = aiModelDescribe.ModelId
@@ -55,8 +55,13 @@ public class AzureRestChatService : IChatService
// 发送POST请求 // 发送POST请求
HttpResponseMessage response = HttpResponseMessage response =
await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken); await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken);
if (!response.IsSuccessStatusCode)
{
throw new UserFriendlyException($"当前模型不可用:{aiModelDescribe.ModelId},状态码:{response.StatusCode},原因:{response.ReasonPhrase}");
}
// 确认响应成功 // 确认响应成功
response.EnsureSuccessStatusCode(); // response.EnsureSuccessStatusCode();
// 读取响应内容 // 读取响应内容
var responseStream = await response.Content.ReadAsStreamAsync(cancellationToken); var responseStream = await response.Content.ReadAsStreamAsync(cancellationToken);

View File

@@ -43,4 +43,6 @@ public class MessageAggregateRoot : FullAuditedAggregateRoot<Guid>
public string? Remark { get; set; } public string? Remark { get; set; }
[SugarColumn(IsOwnsOne = true)] public TokenUsageValueObject TokenUsage { get; set; } [SugarColumn(IsOwnsOne = true)] public TokenUsageValueObject TokenUsage { get; set; }
public override bool IsDeleted { get; set; }
} }

View File

@@ -148,7 +148,7 @@ namespace Yi.Framework.Rbac.Application.Services
[Authorize(AuthenticationSchemes = TokenTypeConst.Refresh)] [Authorize(AuthenticationSchemes = TokenTypeConst.Refresh)]
public async Task<object> PostRefreshAsync([FromQuery] string refresh_token) public async Task<object> PostRefreshAsync([FromQuery] string refresh_token)
{ {
var userId = CurrentUser.Id.Value; var userId = CurrentUser.GetId();
var accessToken = await _accountManager.GetTokenByUserIdAsync(userId); var accessToken = await _accountManager.GetTokenByUserIdAsync(userId);
var refreshToken = _accountManager.CreateRefreshToken(userId); var refreshToken = _accountManager.CreateRefreshToken(userId);
return new { Token = accessToken, RefreshToken = refreshToken }; return new { Token = accessToken, RefreshToken = refreshToken };

View File

@@ -12,8 +12,8 @@ VITE_WEB_BASE_API = '/dev-api'
# VITE_WEB_BASE_API='/prod-api' # VITE_WEB_BASE_API='/prod-api'
# 本地接口 # 本地接口
# VITE_API_URL = http://localhost:19001/api/app VITE_API_URL = http://localhost:19001/api/app
VITE_API_URL=http://ccnetcore.com:19001/api/app # VITE_API_URL=http://ccnetcore.com:19001/api/app
# SSO单点登录url # SSO单点登录url
VITE_SSO_SEVER_URL='http://localhost:18001' VITE_SSO_SEVER_URL='http://localhost:18001'

View File

@@ -39,7 +39,7 @@
"@vueuse/integrations": "^13.3.0", "@vueuse/integrations": "^13.3.0",
"element-plus": "^2.9.11", "element-plus": "^2.9.11",
"fingerprintjs": "^0.5.3", "fingerprintjs": "^0.5.3",
"hook-fetch": "^1.1.3", "hook-fetch": "^2.0.0-beta.1",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
"pinia": "^3.0.3", "pinia": "^3.0.3",
"pinia-plugin-persistedstate": "^4.3.0", "pinia-plugin-persistedstate": "^4.3.0",

View File

@@ -39,8 +39,8 @@ importers:
specifier: ^0.5.3 specifier: ^0.5.3
version: 0.5.3 version: 0.5.3
hook-fetch: hook-fetch:
specifier: ^1.1.3 specifier: ^2.0.0-beta.1
version: 1.1.3(react@19.1.0)(typescript-api-pro@0.0.7)(vue@3.5.16(typescript@5.8.3)) version: 2.0.0-beta.1(react@19.1.0)(typescript-api-pro@0.0.7)(vue@3.5.16(typescript@5.8.3))
nprogress: nprogress:
specifier: ^0.2.0 specifier: ^0.2.0
version: 0.2.0 version: 0.2.0
@@ -2811,8 +2811,8 @@ packages:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true hasBin: true
hook-fetch@1.1.3: hook-fetch@2.0.0-beta.1:
resolution: {integrity: sha512-FkWKUjZWr83gyew0YbRyEc72dlIGCYvNXiRfi4AXlb/hvIiFPQfcvlP3IFaIYKERUeKXmuBS9fuNuK8JPQiOCg==} resolution: {integrity: sha512-c1pLT1madA4oL1K0+2PNjrdMtXper1CSLJHcsstzohoKKnqYrUF6TKM45Wrwdam7ZGX74j/5XPjfgPuC7VPs7A==}
peerDependencies: peerDependencies:
react: ^19.1.0 react: ^19.1.0
typescript-api-pro: ^0.0.6 typescript-api-pro: ^0.0.6
@@ -8066,7 +8066,7 @@ snapshots:
he@1.2.0: {} he@1.2.0: {}
hook-fetch@1.1.3(react@19.1.0)(typescript-api-pro@0.0.7)(vue@3.5.16(typescript@5.8.3)): hook-fetch@2.0.0-beta.1(react@19.1.0)(typescript-api-pro@0.0.7)(vue@3.5.16(typescript@5.8.3)):
dependencies: dependencies:
qs: 6.14.0 qs: 6.14.0
radash: 12.1.0 radash: 12.1.0

View File

@@ -1,10 +1,10 @@
import type { EmailCodeDTO, LoginDTO, LoginVO, RegisterDTO } from './types'; import type { EmailCodeDTO, LoginDTO, LoginVO, RegisterDTO } from './types';
import { post } from '@/utils/request'; import { post } from '@/utils/request';
export const login = (data: LoginDTO) => post<LoginVO>('/auth/login', data); export const login = (data: LoginDTO) => post<LoginVO>('/auth/login', data).json();
// 邮箱验证码 // 邮箱验证码
export const emailCode = (data: EmailCodeDTO) => post('/resource/email/code', data); export const emailCode = (data: EmailCodeDTO) => post('/resource/email/code', data).json();
// 注册账号 // 注册账号
export const register = (data: RegisterDTO) => post('/auth/register', data); export const register = (data: RegisterDTO) => post('/auth/register', data).json();

View File

@@ -7,11 +7,11 @@ export const send = (data: SendDTO) => post<null>('/ai-chat/send', data);
// 新增对应会话聊天记录 // 新增对应会话聊天记录
export function addChat(data: ChatMessageVo) { export function addChat(data: ChatMessageVo) {
return post('/system/message', data); return post('/system/message', data).json();
} }
// 获取当前会话的聊天记录 // 获取当前会话的聊天记录
export function getChatList(params: GetChatListParams) { export function getChatList(params: GetChatListParams) {
// return get<ChatMessageVo[]>('/system/message/list', params); // return get<ChatMessageVo[]>('/system/message/list', params);
return get<ChatMessageVo[]>('/message', params); return get<ChatMessageVo[]>('/message', params).json();
} }

View File

@@ -4,5 +4,5 @@ import { get } from '@/utils/request';
// 获取当前用户的模型列表 // 获取当前用户的模型列表
export function getModelList() { export function getModelList() {
// return get<GetSessionListVO[]>('/system/model/modelList'); // return get<GetSessionListVO[]>('/system/model/modelList');
return get<GetSessionListVO[]>('/ai-chat/model'); return get<GetSessionListVO[]>('/ai-chat/model').json();
} }

View File

@@ -9,19 +9,19 @@ import { del, get, post, put } from '@/utils/request';
// 获取会话列表 // 获取会话列表
export function get_session_list(params: GetSessionListParams) { export function get_session_list(params: GetSessionListParams) {
// return get<ChatSessionVo[]>('/system/session/list', params); // return get<ChatSessionVo[]>('/system/session/list', params);
return get<ChatSessionVo[]>('/session', params); return get<ChatSessionVo[]>('/session', params).json();
} }
// 创建会话 // 创建会话
export function create_session(data: CreateSessionDTO) { export function create_session(data: CreateSessionDTO) {
return post('/session', data); return post('/session', data).json();
} }
// 更新会话 // 更新会话
export function update_session(data: ChatSessionVo) { export function update_session(data: ChatSessionVo) {
return put(`/session/${data.id}`, data); return put(`/session/${data.id}`, data).json();
} }
// 会话详情 // 会话详情
export function get_session(id: string) { export function get_session(id: string) {
return get<ChatSessionVo>(`/session/${id}`); return get<ChatSessionVo>(`/session/${id}`).json();
} }
// 删除会话 // 删除会话
export function delete_session(ids: string[]) { export function delete_session(ids: string[]) {

View File

@@ -91,7 +91,7 @@ export interface ChatSessionVo {
/** /**
* 创建时间 * 创建时间
*/ */
createTime?: Date; creationTime?: Date;
/** /**
* 自定义的消息前缀图标字段 * 自定义的消息前缀图标字段
*/ */

View File

@@ -2,5 +2,5 @@ import { get } from '@/utils/request';
// 获取用户信息 // 获取用户信息
export function getUserInfo() { export function getUserInfo() {
return get<any>('/ai-chat/account'); return get<any>('/ai-chat/account').json();
} }

View File

@@ -122,7 +122,7 @@ function handleClick(item: GetSessionListVO) {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 4px; gap: 4px;
height: 500px; height: 200px;
overflow: hidden auto; overflow: hidden auto;
.popover-content-box-items { .popover-content-box-items {
:deep() { :deep() {

View File

@@ -178,7 +178,7 @@ export const useSessionStore = defineStore('session', () => {
// 删除会话(供组件调用) // 删除会话(供组件调用)
const deleteSessions = async (ids: string[]) => { const deleteSessions = async (ids: string[]) => {
try { try {
//todo cc这里删除返回空的body结果炸了报错堆栈都没有 // todo cc这里删除返回空的body结果炸了报错堆栈都没有
await delete_session(ids); await delete_session(ids);
// 1. 先找到被修改会话在 sessionList 中的索引(假设 sessionList 是按服务端排序的完整列表) // 1. 先找到被修改会话在 sessionList 中的索引(假设 sessionList 是按服务端排序的完整列表)
const targetIndex = sessionList.value.findIndex(session => session.id === ids[0]); const targetIndex = sessionList.value.findIndex(session => session.id === ids[0]);
@@ -200,7 +200,7 @@ export const useSessionStore = defineStore('session', () => {
const currentDate = new Date(); const currentDate = new Date();
return sessions.map((session) => { return sessions.map((session) => {
const createDate = new Date(session.createTime!); const createDate = new Date(session.creationTime!);
const diffDays = Math.floor( const diffDays = Math.floor(
(currentDate.getTime() - createDate.getTime()) / (1000 * 60 * 60 * 24), (currentDate.getTime() - createDate.getTime()) / (1000 * 60 * 60 * 24),
); );