From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目
---
src/api/ai/chat/message/index.ts | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 104 insertions(+), 0 deletions(-)
diff --git a/src/api/ai/chat/message/index.ts b/src/api/ai/chat/message/index.ts
new file mode 100644
index 0000000..19bc25b
--- /dev/null
+++ b/src/api/ai/chat/message/index.ts
@@ -0,0 +1,104 @@
+import request from '@/config/axios'
+import { fetchEventSource } from '@microsoft/fetch-event-source'
+import { getAccessToken } from '@/utils/auth'
+import { config } from '@/config/axios/config'
+
+// 鑱婂ぉVO
+export interface ChatMessageVO {
+ id: number // 缂栧彿
+ conversationId: number // 瀵硅瘽缂栧彿
+ type: string // 娑堟伅绫诲瀷
+ userId: string // 鐢ㄦ埛缂栧彿
+ roleId: string // 瑙掕壊缂栧彿
+ model: number // 妯″瀷鏍囧織
+ modelId: number // 妯″瀷缂栧彿
+ content: string // 鑱婂ぉ鍐呭
+ reasoningContent?: string // 鎺ㄧ悊鍐呭
+ attachmentUrls?: string[] // 闄勪欢 URL 鏁扮粍
+ tokens: number // 娑堣�� Token 鏁伴噺
+ segmentIds?: number[] // 娈佃惤缂栧彿
+ segments?: {
+ id: number // 娈佃惤缂栧彿
+ content: string // 娈佃惤鍐呭
+ documentId: number // 鏂囨。缂栧彿
+ documentName: string // 鏂囨。鍚嶇О
+ }[]
+ webSearchPages?: {
+ name: string // 鍚嶇О
+ icon: string // 鍥炬爣
+ title: string // 鏍囬
+ url: string // URL
+ snippet: string // 鍐呭鐨勭畝鐭弿杩�
+ summary: string // 鍐呭鐨勬枃鏈憳瑕�
+ }[]
+ createTime: Date // 鍒涘缓鏃堕棿
+ roleAvatar: string // 瑙掕壊澶村儚
+ userAvatar: string // 鐢ㄦ埛澶村儚
+}
+
+// AI chat 鑱婂ぉ
+export const ChatMessageApi = {
+ // 娑堟伅鍒楄〃
+ getChatMessageListByConversationId: async (conversationId: number | null) => {
+ return await request.get({
+ url: `/ai/chat/message/list-by-conversation-id?conversationId=${conversationId}`
+ })
+ },
+
+ // 鍙戦�� Stream 娑堟伅
+ // 涓轰粈涔堜笉鐢� axios 鍛紵鍥犱负瀹冧笉鏀寔 SSE 璋冪敤
+ sendChatMessageStream: async (
+ conversationId: number,
+ content: string,
+ ctrl,
+ enableContext: boolean,
+ enableWebSearch: boolean,
+ onMessage,
+ onError,
+ onClose,
+ attachmentUrls?: string[]
+ ) => {
+ const token = getAccessToken()
+ return fetchEventSource(`${config.base_url}/ai/chat/message/send-stream`, {
+ method: 'post',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: `Bearer ${token}`
+ },
+ openWhenHidden: true,
+ body: JSON.stringify({
+ conversationId,
+ content,
+ useContext: enableContext,
+ useSearch: enableWebSearch,
+ attachmentUrls: attachmentUrls || []
+ }),
+ onmessage: onMessage,
+ onerror: onError,
+ onclose: onClose,
+ signal: ctrl.signal
+ })
+ },
+
+ // 鍒犻櫎娑堟伅
+ deleteChatMessage: async (id: string) => {
+ return await request.delete({ url: `/ai/chat/message/delete?id=${id}` })
+ },
+
+ // 鍒犻櫎鎸囧畾瀵硅瘽鐨勬秷鎭�
+ deleteByConversationId: async (conversationId: number) => {
+ return await request.delete({
+ url: `/ai/chat/message/delete-by-conversation-id?conversationId=${conversationId}`
+ })
+ },
+
+ // 鑾峰緱娑堟伅鍒嗛〉
+ getChatMessagePage: async (params: any) => {
+ return await request.get({ url: '/ai/chat/message/page', params })
+ },
+
+ // 绠$悊鍛樺垹闄ゆ秷鎭�
+ deleteChatMessageByAdmin: async (id: number) => {
+ return await request.delete({ url: `/ai/chat/message/delete-by-admin?id=${id}` })
+ }
+}
--
Gitblit v1.8.0