feat(ai): 添加 AI 绘图和思维导图功能

- 新增 AI 绘图管理页面,包括绘画列表、搜索筛选和操作功能
- 实现 AI 思维导图生成功能,支持流式生成和已有内容生成
- 添加 AI 音乐和写作相关的 API 接口
- 更新常量文件,增加 AI 平台、图像生成状态等枚举
- 优化 AI 绘图和思维导图的组件结构,提高可维护性
This commit is contained in:
gjd
2025-06-09 16:20:34 +08:00
parent 3ef362508a
commit 1b236e89bf
16 changed files with 1794 additions and 103 deletions

View File

@@ -0,0 +1,90 @@
import type { PageParam, PageResult } from '@vben/request';
import type { AiWriteTypeEnum } from '#/utils/constants';
import { fetchEventSource } from '@vben/request';
import { useAccessStore } from '@vben/stores';
import { requestClient } from '#/api/request';
const accessStore = useAccessStore();
export namespace AiWriteApi {
export interface WriteVO {
type: AiWriteTypeEnum.REPLY | AiWriteTypeEnum.WRITING; // 1:撰写 2:回复
prompt: string; // 写作内容提示 1。撰写 2回复
originalContent: string; // 原文
length: number; // 长度
format: number; // 格式
tone: number; // 语气
language: number; // 语言
userId?: number; // 用户编号
platform?: string; // 平台
model?: string; // 模型
generatedContent?: string; // 生成的内容
errorMessage?: string; // 错误信息
createTime?: Date; // 创建时间
}
export interface AiWritePageReqVO extends PageParam {
userId?: number; // 用户编号
type?: AiWriteTypeEnum; // 写作类型
platform?: string; // 平台
createTime?: [string, string]; // 创建时间
}
export interface AiWriteRespVo {
id: number;
userId: number;
type: number;
platform: string;
model: string;
prompt: string;
generatedContent: string;
originalContent: string;
length: number;
format: number;
tone: number;
language: number;
errorMessage: string;
createTime: string;
}
}
export function writeStream(
data: any,
onClose: any,
onMessage: any,
onError: any,
ctrl: any,
) {
const token = accessStore.accessToken;
return fetchEventSource(
`${import.meta.env.VITE_BASE_URL}/ai/write/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 getWritePage(params: any) {
return requestClient.get<PageResult<AiWriteApi.AiWritePageReqVO>>(
`/ai/write/page`,
{ params },
);
}
// 删除音乐
export function deleteWrite(id: number) {
return requestClient.delete(`/ai/write/delete`, { params: { id } });
}