chore: request.js 导出 API_BASE_URL 和 getAuthHeader

This commit is contained in:
2026-06-28 18:23:13 +08:00
parent 3b9a8222de
commit 6109202a26
4 changed files with 118 additions and 3 deletions
+6 -3
View File
@@ -148,7 +148,9 @@ export const transformToFrontendFormat = (backendData) => {
plotJson,
isSelected,
createTime,
updateTime
updateTime,
conversationId,
currentVersionMessageId
} = backendData
let content = ''
@@ -182,11 +184,12 @@ export const transformToFrontendFormat = (backendData) => {
date: createTime ? String(createTime).slice(0, 10) : new Date().toLocaleDateString(),
mode: plotJson?.mode || 'custom',
prompt: plotJson?.prompt || '',
conversationId: plotJson?.conversationId || '',
conversationId: conversationId || plotJson?.conversationId || '',
parentScriptId: plotJson?.parentScriptId || '',
revisionIndex: plotJson?.currentRevisionIndex || plotJson?.revisionIndex || 0,
revisionOf: plotJson?.revisionOf || '',
wordCount: content ? content.length : 0
wordCount: content ? content.length : 0,
currentVersionMessageId: currentVersionMessageId || ''
}
}
+13
View File
@@ -0,0 +1,13 @@
import { get, post, del } from './request.js'
export const createMessage = async (payload) => {
return post('/message/create', payload)
}
export const getMessageById = async (id) => {
return get('/message/detail', { id })
}
export const deleteMessage = async (id) => {
return del('/message/delete', { id })
}
+7
View File
@@ -266,6 +266,13 @@ export const upload = (url, filePath, formData = {}, name = 'file') => {
})
}
export const getApiBaseUrl = () => API_BASE_URL
export const getAuthHeader = () => {
const token = uni.getStorageSync('access_token')
return token ? { Authorization: `Bearer ${token}` } : {}
}
export default {
get,
post,
+92
View File
@@ -0,0 +1,92 @@
import { get, post, put, del } from './request.js'
import { getApiBaseUrl, getAuthHeader } from './request.js'
export const createScriptWithDialogue = async (payload) => {
return post('/epicScript/createWithDialogue', payload)
}
export const streamScriptChat = async ({ operationType, conversationId, messageId, userMessageId, content, scriptId, onDelta, onDone, onError }) => {
const requestTask = uni.request({
url: `${getApiBaseUrl()}/chat/stream`,
method: 'POST',
data: { operationType, conversationId, messageId, userMessageId, content, scriptId },
header: {
'Content-Type': 'application/json',
...getAuthHeader()
},
enableChunked: true,
timeout: 300000,
success: (res) => {
if (res.statusCode >= 400) {
onError?.(res.data?.message || '流式请求失败')
return
}
if (typeof res.data === 'string' && res.data) {
consumeSseText(res.data, onDelta, onDone, onError)
}
},
fail: (error) => {
onError?.(error.errMsg || '流式请求失败')
}
})
requestTask?.onChunkReceived?.((res) => {
try {
const text = decodeChunk(res.data)
consumeSseText(text, onDelta, onDone, onError)
} catch (error) {
onError?.(error.message || '流式解析失败')
}
})
}
export const listMessagesByConversation = async ({ conversationId, includeVersions = false }) => {
return get('/message/listByConversation', { conversationId, includeVersions })
}
export const listMessageVersions = async (messageId) => {
return get('/message/versions', { messageId })
}
export const switchVersion = async ({ scriptId, messageId }) => {
return put('/epicScript/switchVersion', { scriptId, messageId })
}
export const deleteVersion = async (messageId) => {
return del('/message/deleteVersion', { id: messageId })
}
function decodeChunk(chunk) {
if (typeof chunk === 'string') return chunk
const decoder = new TextDecoder('utf-8')
return decoder.decode(new Uint8Array(chunk))
}
function consumeSseText(text, onDelta, onDone, onError) {
const lines = text.split(/\r?\n/)
let eventName = ''
let dataBuffer = ''
lines.forEach((line) => {
if (line.startsWith('event:')) {
eventName = line.slice(6).trim()
} else if (line.startsWith('data:')) {
dataBuffer += line.slice(5).trim()
} else if (line === '' && dataBuffer) {
try {
if (eventName === 'delta') {
onDelta?.(dataBuffer)
} else if (eventName === 'metadata') {
onDone?.({ type: 'metadata', data: JSON.parse(dataBuffer) })
} else if (eventName === 'done') {
onDone?.({ type: 'done', data: JSON.parse(dataBuffer) })
} else if (eventName === 'error') {
onError?.(dataBuffer)
}
} catch (e) {
onError?.(e.message)
}
eventName = ''
dataBuffer = ''
}
})
}