2024-07-07 18:14:03 +08:00
|
|
|
import { fetchEventSource } from '@microsoft/fetch-event-source'
|
|
|
|
|
|
|
|
import { getAccessToken } from '@/utils/auth'
|
|
|
|
import { config } from '@/config/axios/config'
|
2024-07-10 12:49:54 +08:00
|
|
|
import { AiWriteTypeEnum } from '@/views/ai/utils/constants'
|
2024-07-14 23:22:10 +08:00
|
|
|
import request from '@/config/axios'
|
2024-07-07 18:14:03 +08:00
|
|
|
|
2024-07-09 00:44:27 +08:00
|
|
|
export interface WriteVO {
|
2024-07-10 12:49:54 +08:00
|
|
|
type: AiWriteTypeEnum.WRITING | AiWriteTypeEnum.REPLY // 1:撰写 2:回复
|
2024-07-09 00:44:27 +08:00
|
|
|
prompt: string // 写作内容提示 1。撰写 2回复
|
|
|
|
originalContent: string // 原文
|
|
|
|
length: number // 长度
|
|
|
|
format: number // 格式
|
|
|
|
tone: number // 语气
|
|
|
|
language: number // 语言
|
2024-07-10 23:01:13 +08:00
|
|
|
userId?: number // 用户编号
|
|
|
|
platform?: string // 平台
|
|
|
|
model?: string // 模型
|
|
|
|
generatedContent?: string // 生成的内容
|
2024-07-16 13:56:56 +08:00
|
|
|
errorMessage?: string // 错误信息
|
2024-07-10 23:01:13 +08:00
|
|
|
createTime?: Date // 创建时间
|
2024-07-07 18:14:03 +08:00
|
|
|
}
|
2024-07-08 12:39:49 +08:00
|
|
|
|
2024-07-14 23:22:10 +08:00
|
|
|
export interface AiWritePageReqVO extends PageParam {
|
|
|
|
userId?: number // 用户编号
|
|
|
|
type?: AiWriteTypeEnum // 写作类型
|
|
|
|
platform?: string // 平台
|
|
|
|
createTime?: [string, string] // 创建时间
|
2024-07-07 18:14:03 +08:00
|
|
|
}
|
2024-07-14 23:22:10 +08:00
|
|
|
|
|
|
|
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
|
|
|
|
}
|
|
|
|
|
2024-07-14 23:55:12 +08:00
|
|
|
export const WriteApi = {
|
2024-07-14 23:22:10 +08:00
|
|
|
writeStream: ({
|
|
|
|
data,
|
|
|
|
onClose,
|
|
|
|
onMessage,
|
|
|
|
onError,
|
|
|
|
ctrl
|
|
|
|
}: {
|
|
|
|
data: WriteVO
|
|
|
|
onMessage?: (res: any) => void
|
|
|
|
onError?: (...args: any[]) => void
|
|
|
|
onClose?: (...args: any[]) => void
|
|
|
|
ctrl: AbortController
|
|
|
|
}) => {
|
|
|
|
const token = getAccessToken()
|
|
|
|
return fetchEventSource(`${config.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
|
|
|
|
})
|
|
|
|
},
|
|
|
|
// 获取写作列表
|
|
|
|
getWritePage: (params: AiWritePageReqVO) => {
|
|
|
|
return request.get<PageResult<AiWriteRespVo[]>>({ url: `/ai/write/page`, params })
|
|
|
|
},
|
|
|
|
// 删除写作
|
|
|
|
deleteWrite(id: number) {
|
|
|
|
return request.delete({ url: `/ai/write/delete`, params: { id } })
|
|
|
|
}
|
|
|
|
}
|