Merge pull request #371 from SuanmoSuanyangTechnology/fix/release_web_zy

Fix/release web zy
This commit is contained in:
yingzhao
2026-02-09 16:58:42 +08:00
committed by GitHub
4 changed files with 42 additions and 19 deletions

View File

@@ -1,15 +1,16 @@
/*
* @Author: ZhaoYing
* @Date: 2026-02-03 13:59:56
* @Last Modified by: ZhaoYing
* @Last Modified time: 2026-02-03 13:59:56
* @Last Modified by: ZhaoYing
* @Last Modified time: 2026-02-09 16:24:05
*/
import { request, API_PREFIX } from '@/utils/request'
// Upload filefile storage has expiration period
export const fileUploadUrl = `${API_PREFIX}/storage/files`
export const fileUploadUrlWithoutApiPrefix = '/storage/files'
export const fileUploadUrl = `${API_PREFIX}${fileUploadUrlWithoutApiPrefix}`
export const fileUpload = (formData?: unknown) => {
return request.uploadFile('/storage/files', formData)
return request.uploadFile(fileUploadUrlWithoutApiPrefix, formData)
}
// Get file access URL (no token required)
@@ -30,4 +31,5 @@ export const deleteFile = (fileId: string) => {
return request.delete(deleteFileUrl(fileId))
}
export const shareFileUploadUrl = `${API_PREFIX}/storage/share/files`
export const shareFileUploadUrlWithoutApiPrefix = `/storage/share/files`
export const shareFileUploadUrl = `${API_PREFIX}${shareFileUploadUrlWithoutApiPrefix}`

View File

@@ -2,7 +2,7 @@
* @Author: ZhaoYing
* @Date: 2026-02-03 16:29:21
* @Last Modified by: ZhaoYing
* @Last Modified time: 2026-02-09 10:33:21
* @Last Modified time: 2026-02-09 16:56:27
*/
import { type FC, type ReactNode, useEffect, useRef, useState, forwardRef, useImperativeHandle } from 'react';
import clsx from 'clsx'
@@ -210,7 +210,7 @@ const Agent = forwardRef<AgentRef>((_props, ref) => {
})
if (default_model_config_id === values?.default_model_config_id) {
setChatList([{
label: vo.label || '',
label: defaultModel?.id === default_model_config_id && defaultModel?.name ? defaultModel.name : vo.label || '',
model_config_id: default_model_config_id || '',
model_parameters: {...rest},
list: []

View File

@@ -1,8 +1,8 @@
/*
* @Author: ZhaoYing
* @Date: 2026-02-06 21:09:42
* @Last Modified by: ZhaoYing
* @Last Modified time: 2026-02-06 21:09:42
* @Last Modified by: ZhaoYing
* @Last Modified time: 2026-02-09 16:41:31
*/
/**
* File Upload Component
@@ -25,8 +25,8 @@ import { Upload, Progress, App } from 'antd';
import type { UploadProps, UploadFile } from 'antd';
import type { UploadProps as RcUploadProps } from 'antd/es/upload/interface';
import { useTranslation } from 'react-i18next';
import { cookieUtils } from '@/utils/request'
import { fileUploadUrl } from '@/api/fileStorage'
import { request } from '@/utils/request'
import { fileUploadUrlWithoutApiPrefix } from '@/api/fileStorage'
interface UploadFilesProps extends Omit<UploadProps, 'onChange'> {
/** Upload API endpoint */
@@ -99,7 +99,7 @@ export interface UploadFilesRef {
* Supports single/multiple file uploads, drag-and-drop, file validation, and preview
*/
const UploadFiles = forwardRef<UploadFilesRef, UploadFilesProps>(({
action = fileUploadUrl,
action = fileUploadUrlWithoutApiPrefix,
multiple = false,
fileList: propFileList = [],
onChange,
@@ -110,6 +110,7 @@ const UploadFiles = forwardRef<UploadFilesRef, UploadFilesProps>(({
maxCount = 1,
onRemove: customOnRemove,
update,
requestConfig,
...props
}, ref) => {
const { t } = useTranslation();
@@ -163,6 +164,24 @@ const UploadFiles = forwardRef<UploadFilesRef, UploadFilesProps>(({
return isAutoUpload;
};
/**
* Custom upload request handler
*/
const handleCustomRequest: RcUploadProps['customRequest'] = async (options) => {
const { file, onSuccess, onError } = options;
try {
const formData = new FormData();
formData.append('file', file);
const response = await request.uploadFile(action, formData, requestConfig);
onSuccess?.({data: response});
} catch (error) {
onError?.(error as Error);
}
};
/**
* Handles upload state changes
*/
@@ -207,13 +226,10 @@ const UploadFiles = forwardRef<UploadFilesRef, UploadFilesProps>(({
// Generate upload component configuration
const uploadProps: UploadProps = {
action,
customRequest: handleCustomRequest,
multiple: multiple && maxCount > 1,
fileList,
beforeUpload,
headers: {
authorization: `Bearer ${cookieUtils.get('authToken')}`,
},
onChange: handleChange,
accept,
disabled,

View File

@@ -2,7 +2,7 @@
* @Author: ZhaoYing
* @Date: 2026-02-03 16:58:03
* @Last Modified by: ZhaoYing
* @Last Modified time: 2026-02-06 21:11:23
* @Last Modified time: 2026-02-09 16:37:49
*/
/**
* Conversation Page
@@ -35,7 +35,7 @@ import MemoryFunctionCheckedIcon from '@/assets/images/conversation/memoryFuncti
import { type SSEMessage } from '@/utils/stream'
import UploadFiles from './components/FileUpload'
// import AudioRecorder from '@/components/AudioRecorder'
import { shareFileUploadUrl } from '@/api/fileStorage'
import { shareFileUploadUrlWithoutApiPrefix } from '@/api/fileStorage'
import UploadFileListModal from './components/UploadFileListModal'
/**
@@ -350,11 +350,16 @@ const Conversation: FC = () => {
{
key: 'upload', label: (
<UploadFiles
action={shareFileUploadUrl}
action={shareFileUploadUrlWithoutApiPrefix}
fileType={['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg']}
onChange={fileChange}
fileList={[]}
update={update}
requestConfig={{
headers: {
'Content-Type': 'multipart/form-data',
authorization: `Bearer ${shareToken || ''}`,
} }}
/>
)
},