66 lines
1.7 KiB
TypeScript
66 lines
1.7 KiB
TypeScript
import { useAppConfig } from '@vben/hooks';
|
|
import { fetchEventSource } from '@vben/request';
|
|
import { useAccessStore } from '@vben/stores';
|
|
|
|
import { requestClient } from '#/api/request';
|
|
|
|
const { apiURL } = useAppConfig(import.meta.env, import.meta.env.PROD);
|
|
const accessStore = useAccessStore();
|
|
|
|
export namespace AiMindmapApi {
|
|
// AI 思维导图
|
|
export interface MindMap {
|
|
id: number; // 编号
|
|
userId: number; // 用户编号
|
|
prompt: string; // 生成内容提示
|
|
generatedContent: string; // 生成的思维导图内容
|
|
platform: string; // 平台
|
|
model: string; // 模型
|
|
errorMessage: string; // 错误信息
|
|
}
|
|
|
|
// AI 思维导图生成
|
|
export interface AiMindMapGenerateReqVO {
|
|
prompt: string;
|
|
}
|
|
}
|
|
|
|
export function generateMindMap({
|
|
data,
|
|
onClose,
|
|
onMessage,
|
|
onError,
|
|
ctrl,
|
|
}: {
|
|
ctrl: AbortController;
|
|
data: AiMindmapApi.AiMindMapGenerateReqVO;
|
|
onClose?: (...args: any[]) => void;
|
|
onError?: (...args: any[]) => void;
|
|
onMessage?: (res: any) => void;
|
|
}) {
|
|
const token = accessStore.accessToken;
|
|
return fetchEventSource(`${apiURL}/ai/mind-map/generate-stream`, {
|
|
method: 'post',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
Authorization: `Bearer ${token}`,
|
|
},
|
|
openWhenHidden: true,
|
|
body: JSON.stringify(data),
|
|
onmessage: onMessage,
|
|
onerror: onError,
|
|
onclose: onClose,
|
|
signal: ctrl.signal,
|
|
});
|
|
}
|
|
|
|
/** 查询思维导图分页 */
|
|
export function getMindMapPage(params: any) {
|
|
return requestClient.get(`/ai/mind-map/page`, { params });
|
|
}
|
|
|
|
/** 删除思维导图 */
|
|
export function deleteMindMap(id: number) {
|
|
return requestClient.delete(`/ai/mind-map/delete?id=${id}`);
|
|
}
|