diff --git a/web/package.json b/web/package.json index db6a8408..0284f397 100644 --- a/web/package.json +++ b/web/package.json @@ -30,7 +30,7 @@ "@lexical/list": "^0.39.0", "@lexical/react": "^0.39.0", "@lexical/rich-text": "^0.39.0", - "antd": "^5.27.4", + "antd": "^5.29.2", "axios": "^1.12.2", "clsx": "^2.1.1", "codemirror": "^6.0.2", diff --git a/web/src/App.tsx b/web/src/App.tsx index 1d298358..a10f9409 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -21,7 +21,6 @@ import { useTranslation } from 'react-i18next'; import { lightTheme } from './styles/antdThemeConfig.ts' import router from './routes'; import { useI18n } from '@/store/locale' -import LayoutBg from '@/components/Layout/LayoutBg' import dayjs from 'dayjs' import 'dayjs/locale/en' import 'dayjs/locale/zh-cn' @@ -61,7 +60,6 @@ function App() { theme={lightTheme} > - }> { } }) } +// Get workspace API call statistics +export const getWorkspaceApiStatistics = (data: { start_date: number; end_date: number; }) => { + return request.get(`/apps/workspace/api-statistics`, data) +} // Export application export const appExport = (app_id: string, appName: string, data?: { release_id: string }) => { return request.getDownloadFile(`/apps/${app_id}/export`, `${appName}.yml`, data) @@ -165,4 +169,9 @@ export const cancelShare = (app_id: string, target_workspace_id?: string) => { export const cancelSpaceShare = (target_workspace_id?: string) => { return request.delete(`/apps/share/${target_workspace_id}`) } - +// Application conversation logs +export const getAppLogsUrl = (app_id: string) => `/apps/${app_id}/logs` +// Get full conversation message history +export const getAppLogDetail = (app_id: string, conversation_id: string) => { + return request.get(`/apps/${app_id}/logs/${conversation_id}`) +} \ No newline at end of file diff --git a/web/src/api/fileStorage.ts b/web/src/api/fileStorage.ts index ce133565..83f5b212 100644 --- a/web/src/api/fileStorage.ts +++ b/web/src/api/fileStorage.ts @@ -2,7 +2,7 @@ * @Author: ZhaoYing * @Date: 2026-02-03 13:59:56 * @Last Modified by: ZhaoYing - * @Last Modified time: 2026-02-09 16:24:05 + * @Last Modified time: 2026-03-23 18:05:43 */ import { request, API_PREFIX } from '@/utils/request' @@ -32,4 +32,13 @@ export const deleteFile = (fileId: string) => { } export const shareFileUploadUrlWithoutApiPrefix = `/storage/share/files` -export const shareFileUploadUrl = `${API_PREFIX}${shareFileUploadUrlWithoutApiPrefix}` \ No newline at end of file +export const shareFileUploadUrl = `${API_PREFIX}${shareFileUploadUrlWithoutApiPrefix}` + +// Get file info +export const getFileInfoByUrl = (url: string) => { + return request.get('/storage/files/info-by-url', {url}) +} +// Get file status +export const getFileStatusById = (file_id: string) => { + return request.get(`/storage/files/${file_id}/status`) +} \ No newline at end of file diff --git a/web/src/api/memory.ts b/web/src/api/memory.ts index 9a464893..1ec2d7dc 100644 --- a/web/src/api/memory.ts +++ b/web/src/api/memory.ts @@ -2,7 +2,7 @@ * @Author: ZhaoYing * @Date: 2026-02-03 14:00:06 * @Last Modified by: ZhaoYing - * @Last Modified time: 2026-03-19 18:35:10 + * @Last Modified time: 2026-03-24 17:48:01 */ import { request } from '@/utils/request' import type { AxiosRequestConfig } from 'axios' @@ -87,12 +87,13 @@ export const getUserSummary = (end_user_id: string) => { export const getNodeStatistics = (end_user_id: string) => { return request.get(`/memory-storage/analytics/node_statistics`, { end_user_id }) } -// Basic information -export const getEndUserProfile = (end_user_id: string) => { - return request.get(`/memory-storage/read_end_user/profile`, { end_user_id }) +// 查询用户别名及信息 +export const getEndUserInfo = (end_user_id: string) => { + return request.get(`/memory-storage/end_user_info`, { end_user_id }) } -export const updatedEndUserProfile = (values: EndUser) => { - return request.post(`/memory-storage/updated_end_user/profile`, values) +// 更新用户别名及信息 +export const updatedEndUserInfo = (values: EndUser) => { + return request.post(`/memory-storage/end_user_info/updated`, values) } // User Memory - Relationship network export const getMemorySearchEdges = (end_user_id: string, config?: AxiosRequestConfig) => { diff --git a/web/src/assets/font/MiSans/MiSans-Bold.woff2 b/web/src/assets/font/MiSans/MiSans-Bold.woff2 new file mode 100644 index 00000000..e4a21bee Binary files /dev/null and b/web/src/assets/font/MiSans/MiSans-Bold.woff2 differ diff --git a/web/src/assets/font/MiSans/MiSans-Demibold.woff2 b/web/src/assets/font/MiSans/MiSans-Demibold.woff2 new file mode 100644 index 00000000..70205afb Binary files /dev/null and b/web/src/assets/font/MiSans/MiSans-Demibold.woff2 differ diff --git a/web/src/assets/font/MiSans/MiSans-ExtraLight.woff2 b/web/src/assets/font/MiSans/MiSans-ExtraLight.woff2 new file mode 100644 index 00000000..45d16c98 Binary files /dev/null and b/web/src/assets/font/MiSans/MiSans-ExtraLight.woff2 differ diff --git a/web/src/assets/font/MiSans/MiSans-Heavy.woff2 b/web/src/assets/font/MiSans/MiSans-Heavy.woff2 new file mode 100644 index 00000000..09ee22e3 Binary files /dev/null and b/web/src/assets/font/MiSans/MiSans-Heavy.woff2 differ diff --git a/web/src/assets/font/MiSans/MiSans-Light.woff2 b/web/src/assets/font/MiSans/MiSans-Light.woff2 new file mode 100644 index 00000000..a2bb950b Binary files /dev/null and b/web/src/assets/font/MiSans/MiSans-Light.woff2 differ diff --git a/web/src/assets/font/MiSans/MiSans-Medium.woff2 b/web/src/assets/font/MiSans/MiSans-Medium.woff2 new file mode 100644 index 00000000..617f7407 Binary files /dev/null and b/web/src/assets/font/MiSans/MiSans-Medium.woff2 differ diff --git a/web/src/assets/font/MiSans/MiSans-Normal.woff2 b/web/src/assets/font/MiSans/MiSans-Normal.woff2 new file mode 100644 index 00000000..d24e89dd Binary files /dev/null and b/web/src/assets/font/MiSans/MiSans-Normal.woff2 differ diff --git a/web/src/assets/font/MiSans/MiSans-Regular.woff2 b/web/src/assets/font/MiSans/MiSans-Regular.woff2 new file mode 100644 index 00000000..6a699b50 Binary files /dev/null and b/web/src/assets/font/MiSans/MiSans-Regular.woff2 differ diff --git a/web/src/assets/font/MiSans/MiSans-Semibold.woff2 b/web/src/assets/font/MiSans/MiSans-Semibold.woff2 new file mode 100644 index 00000000..34f43f7c Binary files /dev/null and b/web/src/assets/font/MiSans/MiSans-Semibold.woff2 differ diff --git a/web/src/assets/font/MiSans/MiSans-Thin.woff2 b/web/src/assets/font/MiSans/MiSans-Thin.woff2 new file mode 100644 index 00000000..ec8a3b55 Binary files /dev/null and b/web/src/assets/font/MiSans/MiSans-Thin.woff2 differ diff --git a/web/src/assets/font/MiSans/index.ts b/web/src/assets/font/MiSans/index.ts new file mode 100644 index 00000000..e69de29b diff --git a/web/src/assets/images/CloudUploadOutlined.svg b/web/src/assets/images/CloudUploadOutlined.svg new file mode 100644 index 00000000..86fdf286 --- /dev/null +++ b/web/src/assets/images/CloudUploadOutlined.svg @@ -0,0 +1,26 @@ + + + 编组 12 + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/application/arrow_right.svg b/web/src/assets/images/application/arrow_right.svg new file mode 100644 index 00000000..06400efc --- /dev/null +++ b/web/src/assets/images/application/arrow_right.svg @@ -0,0 +1,17 @@ + + + 编组 25 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/application/clean.svg b/web/src/assets/images/application/clean.svg index 5d134404..a728abaa 100644 --- a/web/src/assets/images/application/clean.svg +++ b/web/src/assets/images/application/clean.svg @@ -1,13 +1,15 @@ 编组 11 - - - - - - - + + + + + + + + + diff --git a/web/src/assets/images/application/copy.svg b/web/src/assets/images/application/copy.svg new file mode 100644 index 00000000..1bd47c0b --- /dev/null +++ b/web/src/assets/images/application/copy.svg @@ -0,0 +1,18 @@ + + + 复制 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/application/debuggingEmpty.png b/web/src/assets/images/application/debuggingEmpty.png index 0879d4e3..f5d4ef0d 100644 Binary files a/web/src/assets/images/application/debuggingEmpty.png and b/web/src/assets/images/application/debuggingEmpty.png differ diff --git a/web/src/assets/images/application/model.svg b/web/src/assets/images/application/model.svg index 4d482df5..a93f5771 100644 --- a/web/src/assets/images/application/model.svg +++ b/web/src/assets/images/application/model.svg @@ -1,12 +1,12 @@ -_模型预测 - - - - - - + + + + + + diff --git a/web/src/assets/images/application/model_hover.svg b/web/src/assets/images/application/model_hover.svg deleted file mode 100644 index 04e25219..00000000 --- a/web/src/assets/images/application/model_hover.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - -_模型预测 - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/application/save.svg b/web/src/assets/images/application/save.svg new file mode 100644 index 00000000..02dbf635 --- /dev/null +++ b/web/src/assets/images/application/save.svg @@ -0,0 +1,19 @@ + + + 保存 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/application/set.svg b/web/src/assets/images/application/set.svg new file mode 100644 index 00000000..797d2bad --- /dev/null +++ b/web/src/assets/images/application/set.svg @@ -0,0 +1,15 @@ + + + 设置-灰 + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/close.svg b/web/src/assets/images/close.svg index cba672fc..d6e1a9b4 100644 --- a/web/src/assets/images/close.svg +++ b/web/src/assets/images/close.svg @@ -1,11 +1,11 @@ 关闭 - - - - - + + + + + diff --git a/web/src/assets/images/common/arrow_right_dark.svg b/web/src/assets/images/common/arrow_right_dark.svg new file mode 100644 index 00000000..b20a440c --- /dev/null +++ b/web/src/assets/images/common/arrow_right_dark.svg @@ -0,0 +1,18 @@ + + + 编组 5 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/arrow_up.svg b/web/src/assets/images/common/arrow_up.svg new file mode 100644 index 00000000..a5105d46 --- /dev/null +++ b/web/src/assets/images/common/arrow_up.svg @@ -0,0 +1,14 @@ + + + 下拉 + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/caret_right_outlined.svg b/web/src/assets/images/common/caret_right_outlined.svg new file mode 100644 index 00000000..fcb3c68c --- /dev/null +++ b/web/src/assets/images/common/caret_right_outlined.svg @@ -0,0 +1,16 @@ + + + 编组 38 + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/check_green.svg b/web/src/assets/images/common/check_green.svg new file mode 100644 index 00000000..a16b1ee2 --- /dev/null +++ b/web/src/assets/images/common/check_green.svg @@ -0,0 +1,20 @@ + + + 完成 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/copy_dark.svg b/web/src/assets/images/common/copy_dark.svg new file mode 100644 index 00000000..faa6fca1 --- /dev/null +++ b/web/src/assets/images/common/copy_dark.svg @@ -0,0 +1,14 @@ + + + 复制 + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/dash.svg b/web/src/assets/images/common/dash.svg new file mode 100644 index 00000000..cf9efb7d --- /dev/null +++ b/web/src/assets/images/common/dash.svg @@ -0,0 +1,15 @@ + + + 编组 27@3x + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/delete.svg b/web/src/assets/images/common/delete.svg new file mode 100644 index 00000000..4eb610ed --- /dev/null +++ b/web/src/assets/images/common/delete.svg @@ -0,0 +1,30 @@ + + + 编组 33 + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/delete_dark.svg b/web/src/assets/images/common/delete_dark.svg new file mode 100644 index 00000000..cf93cfd6 --- /dev/null +++ b/web/src/assets/images/common/delete_dark.svg @@ -0,0 +1,16 @@ + + + 删除 + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/delete_hover.svg b/web/src/assets/images/common/delete_hover.svg new file mode 100644 index 00000000..bf38179b --- /dev/null +++ b/web/src/assets/images/common/delete_hover.svg @@ -0,0 +1,20 @@ + + + 编组 33 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/delete_red.svg b/web/src/assets/images/common/delete_red.svg new file mode 100644 index 00000000..58ad4d41 --- /dev/null +++ b/web/src/assets/images/common/delete_red.svg @@ -0,0 +1,30 @@ + + + 编组 33 + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/edit.svg b/web/src/assets/images/common/edit.svg new file mode 100644 index 00000000..cf00d703 --- /dev/null +++ b/web/src/assets/images/common/edit.svg @@ -0,0 +1,27 @@ + + + 编辑 + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/global_outline.svg b/web/src/assets/images/common/global_outline.svg new file mode 100644 index 00000000..86301a0e --- /dev/null +++ b/web/src/assets/images/common/global_outline.svg @@ -0,0 +1,20 @@ + + + 互联网 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/more.svg b/web/src/assets/images/common/more.svg new file mode 100644 index 00000000..0d4d9cd2 --- /dev/null +++ b/web/src/assets/images/common/more.svg @@ -0,0 +1,14 @@ + + + 更多 + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/more_hover.svg b/web/src/assets/images/common/more_hover.svg new file mode 100644 index 00000000..04fc6eb5 --- /dev/null +++ b/web/src/assets/images/common/more_hover.svg @@ -0,0 +1,16 @@ + + + 更多 + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/plus.svg b/web/src/assets/images/common/plus.svg new file mode 100644 index 00000000..5a2d7b83 --- /dev/null +++ b/web/src/assets/images/common/plus.svg @@ -0,0 +1,11 @@ + + + 形状结合@2x + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/plus_dark.svg b/web/src/assets/images/common/plus_dark.svg new file mode 100644 index 00000000..b0882a02 --- /dev/null +++ b/web/src/assets/images/common/plus_dark.svg @@ -0,0 +1,15 @@ + + + 编组 5 + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/plus_grey.svg b/web/src/assets/images/common/plus_grey.svg new file mode 100644 index 00000000..05fb64e3 --- /dev/null +++ b/web/src/assets/images/common/plus_grey.svg @@ -0,0 +1,13 @@ + + + 形状结合@2x + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/question.svg b/web/src/assets/images/common/question.svg new file mode 100644 index 00000000..f8b0fee4 --- /dev/null +++ b/web/src/assets/images/common/question.svg @@ -0,0 +1,15 @@ + + + 问号小 + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/return.svg b/web/src/assets/images/common/return.svg new file mode 100644 index 00000000..cb8166c0 --- /dev/null +++ b/web/src/assets/images/common/return.svg @@ -0,0 +1,17 @@ + + + 退出 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/common/save.svg b/web/src/assets/images/common/save.svg new file mode 100644 index 00000000..5970236d --- /dev/null +++ b/web/src/assets/images/common/save.svg @@ -0,0 +1,19 @@ + + + 保存 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/conversation/audio.svg b/web/src/assets/images/conversation/audio.svg index 57a5ca49..c7c4e1fd 100644 --- a/web/src/assets/images/conversation/audio.svg +++ b/web/src/assets/images/conversation/audio.svg @@ -1,17 +1,28 @@ - - 编组 15 - - - - - - - - - - - + + 语音 + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/audio_ing.svg b/web/src/assets/images/conversation/audio_ing.svg deleted file mode 100644 index 280a1bd9..00000000 --- a/web/src/assets/images/conversation/audio_ing.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - 编组 15 - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/conversation/conversation.svg b/web/src/assets/images/conversation/conversation.svg index 2ebc02fb..a21f34bc 100644 --- a/web/src/assets/images/conversation/conversation.svg +++ b/web/src/assets/images/conversation/conversation.svg @@ -1,11 +1,12 @@ - + 对话 - - - - - + + + + + + diff --git a/web/src/assets/images/conversation/conversationEmpty.svg b/web/src/assets/images/conversation/conversationEmpty.svg index 2b642355..8320fd75 100644 --- a/web/src/assets/images/conversation/conversationEmpty.svg +++ b/web/src/assets/images/conversation/conversationEmpty.svg @@ -1,21 +1,23 @@ 编组 14 - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/deepThinking.svg b/web/src/assets/images/conversation/deepThinking.svg index b7658bf4..58ad411f 100644 --- a/web/src/assets/images/conversation/deepThinking.svg +++ b/web/src/assets/images/conversation/deepThinking.svg @@ -1,16 +1,29 @@ 深度思考 - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/delete.svg b/web/src/assets/images/conversation/delete.svg index 27f1c15f..b46dea12 100644 --- a/web/src/assets/images/conversation/delete.svg +++ b/web/src/assets/images/conversation/delete.svg @@ -5,7 +5,7 @@ - + diff --git a/web/src/assets/images/conversation/exclamation_circle.svg b/web/src/assets/images/conversation/exclamation_circle.svg new file mode 100644 index 00000000..9b96bbce --- /dev/null +++ b/web/src/assets/images/conversation/exclamation_circle.svg @@ -0,0 +1,15 @@ + + + 告警实心 + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/conversation/link.svg b/web/src/assets/images/conversation/link.svg index 18031b71..17298c10 100644 --- a/web/src/assets/images/conversation/link.svg +++ b/web/src/assets/images/conversation/link.svg @@ -1,18 +1,26 @@ - - 链接 - - - - - - - - - - - - + + 编组 6 + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/loading.svg b/web/src/assets/images/conversation/loading.svg index 01adc786..7bed9e7f 100644 --- a/web/src/assets/images/conversation/loading.svg +++ b/web/src/assets/images/conversation/loading.svg @@ -1,13 +1,24 @@ - - 编组 5 - - - - - - - + + 编组 14 + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/memoryFunction.svg b/web/src/assets/images/conversation/memoryFunction.svg index f63dc231..d0f3daf8 100644 --- a/web/src/assets/images/conversation/memoryFunction.svg +++ b/web/src/assets/images/conversation/memoryFunction.svg @@ -1,15 +1,26 @@ - brain-2-line - - - - - - - - - + 1 + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/memoryFunctionChecked.svg b/web/src/assets/images/conversation/memoryFunctionChecked.svg index db12f037..cf136428 100644 --- a/web/src/assets/images/conversation/memoryFunctionChecked.svg +++ b/web/src/assets/images/conversation/memoryFunctionChecked.svg @@ -1,14 +1,27 @@ - brain-2-line - - - - - - - - + 1 + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/normalReply.svg b/web/src/assets/images/conversation/normalReply.svg new file mode 100644 index 00000000..19b8c28d --- /dev/null +++ b/web/src/assets/images/conversation/normalReply.svg @@ -0,0 +1,28 @@ + + + 正常 + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/conversation/online.svg b/web/src/assets/images/conversation/online.svg index 0ae567ca..c9c5812b 100644 --- a/web/src/assets/images/conversation/online.svg +++ b/web/src/assets/images/conversation/online.svg @@ -1,17 +1,28 @@ - 互联网 - - - - - - - - - - - + 联网 + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/onlineChecked.svg b/web/src/assets/images/conversation/onlineChecked.svg index 89fd61c4..fdd2b4b2 100644 --- a/web/src/assets/images/conversation/onlineChecked.svg +++ b/web/src/assets/images/conversation/onlineChecked.svg @@ -1,16 +1,29 @@ - 互联网 - - - - - - - - - - + 联网 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/quickReply.svg b/web/src/assets/images/conversation/quickReply.svg new file mode 100644 index 00000000..9a90ef1c --- /dev/null +++ b/web/src/assets/images/conversation/quickReply.svg @@ -0,0 +1,28 @@ + + + 快速回复 + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/conversation/redbear.png b/web/src/assets/images/conversation/redbear.png new file mode 100644 index 00000000..8fd5e2f6 Binary files /dev/null and b/web/src/assets/images/conversation/redbear.png differ diff --git a/web/src/assets/images/conversation/send.svg b/web/src/assets/images/conversation/send.svg index a44dcc40..5e9f5a21 100644 --- a/web/src/assets/images/conversation/send.svg +++ b/web/src/assets/images/conversation/send.svg @@ -1,15 +1,27 @@ - - 发送 - - - - - - - - - + + 发送-2@2x + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/sendDisabled.svg b/web/src/assets/images/conversation/sendDisabled.svg index bf774bfd..7eb01380 100644 --- a/web/src/assets/images/conversation/sendDisabled.svg +++ b/web/src/assets/images/conversation/sendDisabled.svg @@ -1,16 +1,26 @@ - - 发送-2 - - - - - - - - - - + + 发送-2@2x + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/variables.svg b/web/src/assets/images/conversation/variables.svg new file mode 100644 index 00000000..e95c6922 --- /dev/null +++ b/web/src/assets/images/conversation/variables.svg @@ -0,0 +1,31 @@ + + + 变量 (1) + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/copy_active.svg b/web/src/assets/images/copy_active.svg index 29a0f520..27f3c265 100644 --- a/web/src/assets/images/copy_active.svg +++ b/web/src/assets/images/copy_active.svg @@ -2,7 +2,7 @@ 复制 - + diff --git a/web/src/assets/images/deleteBg.svg b/web/src/assets/images/deleteBg.svg index 47deed9a..90409bdb 100644 --- a/web/src/assets/images/deleteBg.svg +++ b/web/src/assets/images/deleteBg.svg @@ -1,13 +1,13 @@ 编组 8 - - - - - - - + + + + + + + diff --git a/web/src/assets/images/deleteBorder.svg b/web/src/assets/images/deleteBorder.svg index 6e90bf4a..62b7bf96 100644 --- a/web/src/assets/images/deleteBorder.svg +++ b/web/src/assets/images/deleteBorder.svg @@ -1,12 +1,12 @@ 编组 8 - - - - - - + + + + + + diff --git a/web/src/assets/images/edit.svg b/web/src/assets/images/edit.svg index 67b90d2b..f503f005 100644 --- a/web/src/assets/images/edit.svg +++ b/web/src/assets/images/edit.svg @@ -2,7 +2,7 @@ 编辑 - + diff --git a/web/src/assets/images/editBg.svg b/web/src/assets/images/editBg.svg index 54ce218f..cfdaceef 100644 --- a/web/src/assets/images/editBg.svg +++ b/web/src/assets/images/editBg.svg @@ -1,13 +1,13 @@ 编组 13 - - - - - - - + + + + + + + diff --git a/web/src/assets/images/editBorder.svg b/web/src/assets/images/editBorder.svg index 6a0bd89f..4f6b0762 100644 --- a/web/src/assets/images/editBorder.svg +++ b/web/src/assets/images/editBorder.svg @@ -1,12 +1,12 @@ 编组 13 - - - - - - + + + + + + diff --git a/web/src/assets/images/edit_active.svg b/web/src/assets/images/edit_active.svg new file mode 100644 index 00000000..7beb376b --- /dev/null +++ b/web/src/assets/images/edit_active.svg @@ -0,0 +1,14 @@ + + + 编辑 + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/edit_hover.svg b/web/src/assets/images/edit_hover.svg index 6cb4e043..b69ed65a 100644 --- a/web/src/assets/images/edit_hover.svg +++ b/web/src/assets/images/edit_hover.svg @@ -2,7 +2,7 @@ 编辑 - + diff --git a/web/src/assets/images/empty/noData.png b/web/src/assets/images/empty/noData.png new file mode 100644 index 00000000..5258d466 Binary files /dev/null and b/web/src/assets/images/empty/noData.png differ diff --git a/web/src/assets/images/home/application.svg b/web/src/assets/images/home/application.svg new file mode 100644 index 00000000..65ce7ccd --- /dev/null +++ b/web/src/assets/images/home/application.svg @@ -0,0 +1,20 @@ + + + icon_应用管理 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/home/arrow_top_right.svg b/web/src/assets/images/home/arrow_top_right.svg deleted file mode 100644 index fe969a19..00000000 --- a/web/src/assets/images/home/arrow_top_right.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - 编组 16 - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/home/arrow_top_right_hover.svg b/web/src/assets/images/home/arrow_top_right_hover.svg deleted file mode 100644 index 903f9618..00000000 --- a/web/src/assets/images/home/arrow_top_right_hover.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - 编组 16 - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/home/arrow_up.svg b/web/src/assets/images/home/arrow_up.svg new file mode 100644 index 00000000..914cb156 --- /dev/null +++ b/web/src/assets/images/home/arrow_up.svg @@ -0,0 +1,15 @@ + + + 箭头_向上 + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/home/chunk_count.svg b/web/src/assets/images/home/chunk_count.svg index 830dac67..544f3cc6 100644 --- a/web/src/assets/images/home/chunk_count.svg +++ b/web/src/assets/images/home/chunk_count.svg @@ -1,22 +1,16 @@ 编组 32 - - - - - - - - - - - - - - - - + + + + + + + + + + diff --git a/web/src/assets/images/home/knowledge.svg b/web/src/assets/images/home/knowledge.svg new file mode 100644 index 00000000..91624510 --- /dev/null +++ b/web/src/assets/images/home/knowledge.svg @@ -0,0 +1,19 @@ + + + 知识库 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/home/memoryConversation.svg b/web/src/assets/images/home/memoryConversation.svg new file mode 100644 index 00000000..59f74de2 --- /dev/null +++ b/web/src/assets/images/home/memoryConversation.svg @@ -0,0 +1,19 @@ + + + 编组 10 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/home/statements_count.svg b/web/src/assets/images/home/statements_count.svg index a20666d1..6d545356 100644 --- a/web/src/assets/images/home/statements_count.svg +++ b/web/src/assets/images/home/statements_count.svg @@ -1,15 +1,18 @@ 编组 38 - - - - - - - - - + + + + + + + + + + + + diff --git a/web/src/assets/images/home/temporal_count.svg b/web/src/assets/images/home/temporal_count.svg index 050697bc..739acb30 100644 --- a/web/src/assets/images/home/temporal_count.svg +++ b/web/src/assets/images/home/temporal_count.svg @@ -1,17 +1,20 @@ 编组 39 - - - - - - - - - - - + + + + + + + + + + + + + + diff --git a/web/src/assets/images/home/totalMemoryCapacity.png b/web/src/assets/images/home/totalMemoryCapacity.png new file mode 100644 index 00000000..4a58cfad Binary files /dev/null and b/web/src/assets/images/home/totalMemoryCapacity.png differ diff --git a/web/src/assets/images/home/triplet_count.svg b/web/src/assets/images/home/triplet_count.svg index ebcfd0aa..603ede84 100644 --- a/web/src/assets/images/home/triplet_count.svg +++ b/web/src/assets/images/home/triplet_count.svg @@ -1,15 +1,14 @@ 编组 37 - - - - - - - - - + + + + + + + + diff --git a/web/src/assets/images/index/apps.svg b/web/src/assets/images/index/apps.svg index 58907fd6..b49bda51 100644 --- a/web/src/assets/images/index/apps.svg +++ b/web/src/assets/images/index/apps.svg @@ -1,14 +1,14 @@ 编组 34 - - - - + + + + - + diff --git a/web/src/assets/images/index/arrow_down.svg b/web/src/assets/images/index/arrow_down.svg index b77a3f8a..366e5848 100644 --- a/web/src/assets/images/index/arrow_down.svg +++ b/web/src/assets/images/index/arrow_down.svg @@ -1,10 +1,10 @@ 箭头_向上 - - - - + + + + diff --git a/web/src/assets/images/index/arrow_down_d.svg b/web/src/assets/images/index/arrow_down_d.svg index 40e5d94b..7393ca80 100644 --- a/web/src/assets/images/index/arrow_down_d.svg +++ b/web/src/assets/images/index/arrow_down_d.svg @@ -1,10 +1,10 @@ 编组 30 - - - - + + + + diff --git a/web/src/assets/images/index/arrow_up.svg b/web/src/assets/images/index/arrow_up.svg index 62aeee96..8a8bae53 100644 --- a/web/src/assets/images/index/arrow_up.svg +++ b/web/src/assets/images/index/arrow_up.svg @@ -1,10 +1,10 @@ 箭头_向上 - - - - + + + + diff --git a/web/src/assets/images/index/arrow_up_d.svg b/web/src/assets/images/index/arrow_up_d.svg index 3c19fef3..3529a291 100644 --- a/web/src/assets/images/index/arrow_up_d.svg +++ b/web/src/assets/images/index/arrow_up_d.svg @@ -1,10 +1,10 @@ 编组 30 - - - - + + + + diff --git a/web/src/assets/images/index/guide_bg@2x.png b/web/src/assets/images/index/guide_bg@2x.png index 3b7490fb..fbf452e6 100644 Binary files a/web/src/assets/images/index/guide_bg@2x.png and b/web/src/assets/images/index/guide_bg@2x.png differ diff --git a/web/src/assets/images/index/help_center.svg b/web/src/assets/images/index/help_center.svg index 6d272121..28595b0a 100644 --- a/web/src/assets/images/index/help_center.svg +++ b/web/src/assets/images/index/help_center.svg @@ -1,13 +1,13 @@ 编组 17 - - - - - - - + + + + + + + diff --git a/web/src/assets/images/index/index_bg@2x.png b/web/src/assets/images/index/index_bg@2x.png index d20ee4d3..fbf30083 100644 Binary files a/web/src/assets/images/index/index_bg@2x.png and b/web/src/assets/images/index/index_bg@2x.png differ diff --git a/web/src/assets/images/index/model_mgt.svg b/web/src/assets/images/index/model_mgt.svg index 89e13ec3..536f8877 100644 --- a/web/src/assets/images/index/model_mgt.svg +++ b/web/src/assets/images/index/model_mgt.svg @@ -1,26 +1,26 @@ 编组 25 - - - - - - + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/web/src/assets/images/index/models.svg b/web/src/assets/images/index/models.svg index 890f240a..60863681 100644 --- a/web/src/assets/images/index/models.svg +++ b/web/src/assets/images/index/models.svg @@ -1,9 +1,9 @@ 编组 14 - - - + + + diff --git a/web/src/assets/images/index/space_mgt.svg b/web/src/assets/images/index/space_mgt.svg index af1db66c..a71f7431 100644 --- a/web/src/assets/images/index/space_mgt.svg +++ b/web/src/assets/images/index/space_mgt.svg @@ -1,13 +1,13 @@ 编组 26 - - - - - - - + + + + + + + diff --git a/web/src/assets/images/index/spaces.svg b/web/src/assets/images/index/spaces.svg index 1c61bc6b..e79eb113 100644 --- a/web/src/assets/images/index/spaces.svg +++ b/web/src/assets/images/index/spaces.svg @@ -7,10 +7,10 @@ - - - - + + + + diff --git a/web/src/assets/images/index/user_mgt.svg b/web/src/assets/images/index/user_mgt.svg index d53a97b9..4ec237aa 100644 --- a/web/src/assets/images/index/user_mgt.svg +++ b/web/src/assets/images/index/user_mgt.svg @@ -1,13 +1,13 @@ 编组 24 - - - - - - - + + + + + + + diff --git a/web/src/assets/images/index/users.svg b/web/src/assets/images/index/users.svg index 545d9636..bfb37872 100644 --- a/web/src/assets/images/index/users.svg +++ b/web/src/assets/images/index/users.svg @@ -1,10 +1,10 @@ 编组 33 - - - - + + + + diff --git a/web/src/assets/images/memory/arrow_right.svg b/web/src/assets/images/memory/arrow_right.svg index 0d17ec3b..090330e9 100644 --- a/web/src/assets/images/memory/arrow_right.svg +++ b/web/src/assets/images/memory/arrow_right.svg @@ -1,12 +1,12 @@ - 下拉备份 - - - - - - + 下拉 + + + + + + diff --git a/web/src/assets/images/memory/clock_orange.svg b/web/src/assets/images/memory/clock_orange.svg new file mode 100644 index 00000000..5c2b58cf --- /dev/null +++ b/web/src/assets/images/memory/clock_orange.svg @@ -0,0 +1,18 @@ + + + 时间戳 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/memory/debug.svg b/web/src/assets/images/memory/debug.svg new file mode 100644 index 00000000..325a355a --- /dev/null +++ b/web/src/assets/images/memory/debug.svg @@ -0,0 +1,15 @@ + + + 配置管理 + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menu/apiKey.png b/web/src/assets/images/menu/apiKey.png deleted file mode 100644 index 53d19428..00000000 Binary files a/web/src/assets/images/menu/apiKey.png and /dev/null differ diff --git a/web/src/assets/images/menu/apiKey_active.png b/web/src/assets/images/menu/apiKey_active.png deleted file mode 100644 index 4f8d1cfa..00000000 Binary files a/web/src/assets/images/menu/apiKey_active.png and /dev/null differ diff --git a/web/src/assets/images/menu/dashboard.svg b/web/src/assets/images/menu/dashboard.svg deleted file mode 100644 index 43e05b3a..00000000 --- a/web/src/assets/images/menu/dashboard.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - 编组 27 - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/dashboard_active.svg b/web/src/assets/images/menu/dashboard_active.svg deleted file mode 100644 index 3f1bc65c..00000000 --- a/web/src/assets/images/menu/dashboard_active.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - 编组 27 - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/knowledge.svg b/web/src/assets/images/menu/knowledge.svg deleted file mode 100644 index 3fc1ec0f..00000000 --- a/web/src/assets/images/menu/knowledge.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - 知识库 - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/knowledge_active.svg b/web/src/assets/images/menu/knowledge_active.svg deleted file mode 100644 index 9b09bbf4..00000000 --- a/web/src/assets/images/menu/knowledge_active.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - 知识库 - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/member.svg b/web/src/assets/images/menu/member.svg deleted file mode 100644 index 56cca8c1..00000000 --- a/web/src/assets/images/menu/member.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - 用户总数总计 - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/member_active.svg b/web/src/assets/images/menu/member_active.svg deleted file mode 100644 index 30cf9261..00000000 --- a/web/src/assets/images/menu/member_active.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - 用户总数总计 - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/memory.svg b/web/src/assets/images/menu/memory.svg deleted file mode 100644 index 71696861..00000000 --- a/web/src/assets/images/menu/memory.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - brain-2-line - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/memoryConversation.svg b/web/src/assets/images/menu/memoryConversation.svg deleted file mode 100644 index 369cbc5a..00000000 --- a/web/src/assets/images/menu/memoryConversation.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - 编组 10 - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/memoryConversation_active.svg b/web/src/assets/images/menu/memoryConversation_active.svg deleted file mode 100644 index c79a75f6..00000000 --- a/web/src/assets/images/menu/memoryConversation_active.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - 编组 10 - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/memory_active.svg b/web/src/assets/images/menu/memory_active.svg deleted file mode 100644 index eabe9221..00000000 --- a/web/src/assets/images/menu/memory_active.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - brain-2-line - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/model.svg b/web/src/assets/images/menu/model.svg deleted file mode 100644 index bbb7e103..00000000 --- a/web/src/assets/images/menu/model.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - -_模型预测 - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/model_active.svg b/web/src/assets/images/menu/model_active.svg deleted file mode 100644 index 274b146e..00000000 --- a/web/src/assets/images/menu/model_active.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - -_模型预测 - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/ontology.svg b/web/src/assets/images/menu/ontology.svg deleted file mode 100644 index 9bfda42b..00000000 --- a/web/src/assets/images/menu/ontology.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - 本体管理备份 - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/ontology_active.svg b/web/src/assets/images/menu/ontology_active.svg deleted file mode 100644 index 1271c2c3..00000000 --- a/web/src/assets/images/menu/ontology_active.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - 本体管理 - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/pricing.svg b/web/src/assets/images/menu/pricing.svg deleted file mode 100644 index 5510ba23..00000000 --- a/web/src/assets/images/menu/pricing.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - 菜单-收费管理 - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/pricing_active.svg b/web/src/assets/images/menu/pricing_active.svg deleted file mode 100644 index f708877d..00000000 --- a/web/src/assets/images/menu/pricing_active.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - 菜单-收费管理 - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/prompt.svg b/web/src/assets/images/menu/prompt.svg deleted file mode 100644 index ffef9a34..00000000 --- a/web/src/assets/images/menu/prompt.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - 提示词备份 - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/prompt_active.svg b/web/src/assets/images/menu/prompt_active.svg deleted file mode 100644 index ac45e13c..00000000 --- a/web/src/assets/images/menu/prompt_active.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - 提示词 - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/skills.svg b/web/src/assets/images/menu/skills.svg deleted file mode 100644 index ac121d1e..00000000 --- a/web/src/assets/images/menu/skills.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - 技能点 - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/skills_active.svg b/web/src/assets/images/menu/skills_active.svg deleted file mode 100644 index 789b5586..00000000 --- a/web/src/assets/images/menu/skills_active.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - 技能点备份 - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/space.svg b/web/src/assets/images/menu/space.svg deleted file mode 100644 index c82c7922..00000000 --- a/web/src/assets/images/menu/space.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - 模型管理 - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/spaceConfig.svg b/web/src/assets/images/menu/spaceConfig.svg deleted file mode 100644 index bcfeae12..00000000 --- a/web/src/assets/images/menu/spaceConfig.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - 模型 (1) - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/spaceConfig_active.svg b/web/src/assets/images/menu/spaceConfig_active.svg deleted file mode 100644 index 41b25689..00000000 --- a/web/src/assets/images/menu/spaceConfig_active.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - 模型 (1) - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/space_active.svg b/web/src/assets/images/menu/space_active.svg deleted file mode 100644 index 69b1629c..00000000 --- a/web/src/assets/images/menu/space_active.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - 模型管理 - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/tool.png b/web/src/assets/images/menu/tool.png deleted file mode 100644 index 669238e8..00000000 Binary files a/web/src/assets/images/menu/tool.png and /dev/null differ diff --git a/web/src/assets/images/menu/tool_active.png b/web/src/assets/images/menu/tool_active.png deleted file mode 100644 index 252cd702..00000000 Binary files a/web/src/assets/images/menu/tool_active.png and /dev/null differ diff --git a/web/src/assets/images/menu/user.svg b/web/src/assets/images/menu/user.svg deleted file mode 100644 index b1eaf5b9..00000000 --- a/web/src/assets/images/menu/user.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - 138设置、系统设置、功能设置、属性 - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/userMemory1.svg b/web/src/assets/images/menu/userMemory1.svg deleted file mode 100644 index c4b9cd51..00000000 --- a/web/src/assets/images/menu/userMemory1.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - 编组 29 - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menu/user_active.svg b/web/src/assets/images/menu/user_active.svg deleted file mode 100644 index 38de2069..00000000 --- a/web/src/assets/images/menu/user_active.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - 138设置、系统设置、功能设置、属性 - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/menuNew/apiKey.svg b/web/src/assets/images/menuNew/apiKey.svg new file mode 100644 index 00000000..c31e2d5c --- /dev/null +++ b/web/src/assets/images/menuNew/apiKey.svg @@ -0,0 +1,13 @@ + + + api + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/apiKey_active.svg b/web/src/assets/images/menuNew/apiKey_active.svg new file mode 100644 index 00000000..7520cb86 --- /dev/null +++ b/web/src/assets/images/menuNew/apiKey_active.svg @@ -0,0 +1,13 @@ + + + api + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menu/application.svg b/web/src/assets/images/menuNew/application.svg similarity index 65% rename from web/src/assets/images/menu/application.svg rename to web/src/assets/images/menuNew/application.svg index 37967d3a..a8fe8fc0 100644 --- a/web/src/assets/images/menu/application.svg +++ b/web/src/assets/images/menuNew/application.svg @@ -1,11 +1,11 @@ 应用管理 - - - - - + + + + + diff --git a/web/src/assets/images/menu/application_active.svg b/web/src/assets/images/menuNew/application_active.svg similarity index 65% rename from web/src/assets/images/menu/application_active.svg rename to web/src/assets/images/menuNew/application_active.svg index 3fe48200..0d8f91f9 100644 --- a/web/src/assets/images/menu/application_active.svg +++ b/web/src/assets/images/menuNew/application_active.svg @@ -1,11 +1,11 @@ 应用管理 - - - - - + + + + + diff --git a/web/src/assets/images/menuNew/dashboard.svg b/web/src/assets/images/menuNew/dashboard.svg new file mode 100644 index 00000000..d35e35fb --- /dev/null +++ b/web/src/assets/images/menuNew/dashboard.svg @@ -0,0 +1,18 @@ + + + 编组 27 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/dashboard_active.svg b/web/src/assets/images/menuNew/dashboard_active.svg new file mode 100644 index 00000000..4a0f57b6 --- /dev/null +++ b/web/src/assets/images/menuNew/dashboard_active.svg @@ -0,0 +1,18 @@ + + + 编组 27 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/knowledge.svg b/web/src/assets/images/menuNew/knowledge.svg new file mode 100644 index 00000000..2d7a28de --- /dev/null +++ b/web/src/assets/images/menuNew/knowledge.svg @@ -0,0 +1,20 @@ + + + 知识库 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/knowledge_active.svg b/web/src/assets/images/menuNew/knowledge_active.svg new file mode 100644 index 00000000..0a2fba96 --- /dev/null +++ b/web/src/assets/images/menuNew/knowledge_active.svg @@ -0,0 +1,20 @@ + + + 知识库 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/member.svg b/web/src/assets/images/menuNew/member.svg new file mode 100644 index 00000000..35edbe1a --- /dev/null +++ b/web/src/assets/images/menuNew/member.svg @@ -0,0 +1,18 @@ + + + 用户总数总计 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/member_active.svg b/web/src/assets/images/menuNew/member_active.svg new file mode 100644 index 00000000..96269cd5 --- /dev/null +++ b/web/src/assets/images/menuNew/member_active.svg @@ -0,0 +1,18 @@ + + + 用户总数总计 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/memory.svg b/web/src/assets/images/menuNew/memory.svg new file mode 100644 index 00000000..17c8368b --- /dev/null +++ b/web/src/assets/images/menuNew/memory.svg @@ -0,0 +1,16 @@ + + + brain-2-line + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/memoryConversation.svg b/web/src/assets/images/menuNew/memoryConversation.svg new file mode 100644 index 00000000..f74146b0 --- /dev/null +++ b/web/src/assets/images/menuNew/memoryConversation.svg @@ -0,0 +1,13 @@ + + + 对话 + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/memoryConversation_active.svg b/web/src/assets/images/menuNew/memoryConversation_active.svg new file mode 100644 index 00000000..c2c4aae3 --- /dev/null +++ b/web/src/assets/images/menuNew/memoryConversation_active.svg @@ -0,0 +1,13 @@ + + + 对话 + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/memory_active.svg b/web/src/assets/images/menuNew/memory_active.svg new file mode 100644 index 00000000..3aa5ff94 --- /dev/null +++ b/web/src/assets/images/menuNew/memory_active.svg @@ -0,0 +1,16 @@ + + + brain-2-line + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/menuFold.svg b/web/src/assets/images/menuNew/menuFold.svg new file mode 100644 index 00000000..3350cfc4 --- /dev/null +++ b/web/src/assets/images/menuNew/menuFold.svg @@ -0,0 +1,15 @@ + + + 收起 + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/model.svg b/web/src/assets/images/menuNew/model.svg new file mode 100644 index 00000000..8fdc015a --- /dev/null +++ b/web/src/assets/images/menuNew/model.svg @@ -0,0 +1,13 @@ + + + -_模型预测 + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/model_active.svg b/web/src/assets/images/menuNew/model_active.svg new file mode 100644 index 00000000..6145f360 --- /dev/null +++ b/web/src/assets/images/menuNew/model_active.svg @@ -0,0 +1,11 @@ + + + -_模型预测 + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/ontology.svg b/web/src/assets/images/menuNew/ontology.svg new file mode 100644 index 00000000..68798ccd --- /dev/null +++ b/web/src/assets/images/menuNew/ontology.svg @@ -0,0 +1,17 @@ + + + 本体管理 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/ontology_active.svg b/web/src/assets/images/menuNew/ontology_active.svg new file mode 100644 index 00000000..f05a1069 --- /dev/null +++ b/web/src/assets/images/menuNew/ontology_active.svg @@ -0,0 +1,17 @@ + + + 本体管理 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/pricing.svg b/web/src/assets/images/menuNew/pricing.svg new file mode 100644 index 00000000..8c412ac0 --- /dev/null +++ b/web/src/assets/images/menuNew/pricing.svg @@ -0,0 +1,13 @@ + + + 收费管理 + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/pricing_active.svg b/web/src/assets/images/menuNew/pricing_active.svg new file mode 100644 index 00000000..54a0afb4 --- /dev/null +++ b/web/src/assets/images/menuNew/pricing_active.svg @@ -0,0 +1,11 @@ + + + 收费管理 + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/prompt.svg b/web/src/assets/images/menuNew/prompt.svg new file mode 100644 index 00000000..8007982b --- /dev/null +++ b/web/src/assets/images/menuNew/prompt.svg @@ -0,0 +1,21 @@ + + + 提示词 + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/prompt_active.svg b/web/src/assets/images/menuNew/prompt_active.svg new file mode 100644 index 00000000..4c94cac2 --- /dev/null +++ b/web/src/assets/images/menuNew/prompt_active.svg @@ -0,0 +1,21 @@ + + + 提示词 + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/skills.svg b/web/src/assets/images/menuNew/skills.svg new file mode 100644 index 00000000..3c8dd525 --- /dev/null +++ b/web/src/assets/images/menuNew/skills.svg @@ -0,0 +1,18 @@ + + + skills-icon + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/skills_active.svg b/web/src/assets/images/menuNew/skills_active.svg new file mode 100644 index 00000000..86191a8a --- /dev/null +++ b/web/src/assets/images/menuNew/skills_active.svg @@ -0,0 +1,16 @@ + + + skills-icon + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/space.svg b/web/src/assets/images/menuNew/space.svg new file mode 100644 index 00000000..d0e7a5e4 --- /dev/null +++ b/web/src/assets/images/menuNew/space.svg @@ -0,0 +1,15 @@ + + + 模型管理 + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/spaceConfig.svg b/web/src/assets/images/menuNew/spaceConfig.svg new file mode 100644 index 00000000..f03b2f05 --- /dev/null +++ b/web/src/assets/images/menuNew/spaceConfig.svg @@ -0,0 +1,19 @@ + + + 空间配置 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/spaceConfig_active.svg b/web/src/assets/images/menuNew/spaceConfig_active.svg new file mode 100644 index 00000000..578963a0 --- /dev/null +++ b/web/src/assets/images/menuNew/spaceConfig_active.svg @@ -0,0 +1,19 @@ + + + 空间配置 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/space_active.svg b/web/src/assets/images/menuNew/space_active.svg new file mode 100644 index 00000000..e55efb3e --- /dev/null +++ b/web/src/assets/images/menuNew/space_active.svg @@ -0,0 +1,13 @@ + + + 模型管理 + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/tool.svg b/web/src/assets/images/menuNew/tool.svg new file mode 100644 index 00000000..0a14a626 --- /dev/null +++ b/web/src/assets/images/menuNew/tool.svg @@ -0,0 +1,18 @@ + + + 工具管理 (2) + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/tool_active.svg b/web/src/assets/images/menuNew/tool_active.svg new file mode 100644 index 00000000..00544dac --- /dev/null +++ b/web/src/assets/images/menuNew/tool_active.svg @@ -0,0 +1,16 @@ + + + 工具管理 (2) + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menuNew/user.svg b/web/src/assets/images/menuNew/user.svg new file mode 100644 index 00000000..d04fb501 --- /dev/null +++ b/web/src/assets/images/menuNew/user.svg @@ -0,0 +1,13 @@ + + + 用户管理 + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/menu/userMemory.svg b/web/src/assets/images/menuNew/userMemory.svg similarity index 76% rename from web/src/assets/images/menu/userMemory.svg rename to web/src/assets/images/menuNew/userMemory.svg index c4b9cd51..9eb5b1fc 100644 --- a/web/src/assets/images/menu/userMemory.svg +++ b/web/src/assets/images/menuNew/userMemory.svg @@ -1,11 +1,11 @@ 编组 29 - - - - - + + + + + diff --git a/web/src/assets/images/menu/userMemory_active.svg b/web/src/assets/images/menuNew/userMemory_active.svg similarity index 76% rename from web/src/assets/images/menu/userMemory_active.svg rename to web/src/assets/images/menuNew/userMemory_active.svg index 554dc0bc..d31e4859 100644 --- a/web/src/assets/images/menu/userMemory_active.svg +++ b/web/src/assets/images/menuNew/userMemory_active.svg @@ -1,11 +1,11 @@ 编组 29 - - - - - + + + + + diff --git a/web/src/assets/images/menuNew/user_active.svg b/web/src/assets/images/menuNew/user_active.svg new file mode 100644 index 00000000..33778047 --- /dev/null +++ b/web/src/assets/images/menuNew/user_active.svg @@ -0,0 +1,11 @@ + + + 用户管理 + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/model/volcano.png b/web/src/assets/images/model/volcano.png new file mode 100644 index 00000000..9aeb3bf3 Binary files /dev/null and b/web/src/assets/images/model/volcano.png differ diff --git a/web/src/assets/images/question.svg b/web/src/assets/images/question.svg new file mode 100644 index 00000000..539ab03a --- /dev/null +++ b/web/src/assets/images/question.svg @@ -0,0 +1,17 @@ + + + 问号小 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/refresh.svg b/web/src/assets/images/refresh.svg index c592feff..79d2f836 100644 --- a/web/src/assets/images/refresh.svg +++ b/web/src/assets/images/refresh.svg @@ -1,12 +1,16 @@ - - 刷新 - - - - - - + + 编组 28 + + + + + + + + + + diff --git a/web/src/assets/images/refresh_hover.svg b/web/src/assets/images/refresh_dark.svg similarity index 97% rename from web/src/assets/images/refresh_hover.svg rename to web/src/assets/images/refresh_dark.svg index 1d4dcf7c..07864e99 100644 --- a/web/src/assets/images/refresh_hover.svg +++ b/web/src/assets/images/refresh_dark.svg @@ -2,7 +2,7 @@ 刷新 - + diff --git a/web/src/assets/images/tool/market.png b/web/src/assets/images/tool/market.png new file mode 100644 index 00000000..9639e253 Binary files /dev/null and b/web/src/assets/images/tool/market.png differ diff --git a/web/src/assets/images/userMemory/aboutMe.svg b/web/src/assets/images/userMemory/aboutMe.svg new file mode 100644 index 00000000..16630fdb --- /dev/null +++ b/web/src/assets/images/userMemory/aboutMe.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/aboutMe_active.svg b/web/src/assets/images/userMemory/aboutMe_active.svg new file mode 100644 index 00000000..53e6362e --- /dev/null +++ b/web/src/assets/images/userMemory/aboutMe_active.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/aboutUs.svg b/web/src/assets/images/userMemory/aboutUs.svg index 1d75eeae..b8fa9e45 100644 --- a/web/src/assets/images/userMemory/aboutUs.svg +++ b/web/src/assets/images/userMemory/aboutUs.svg @@ -1,13 +1,15 @@ - + - - - - - - - + + + + + + + + + diff --git a/web/src/assets/images/userMemory/ai.png b/web/src/assets/images/userMemory/ai.png new file mode 100644 index 00000000..3783a543 Binary files /dev/null and b/web/src/assets/images/userMemory/ai.png differ diff --git a/web/src/assets/images/userMemory/arrow_right.svg b/web/src/assets/images/userMemory/arrow_right.svg index aca820f8..3fa0eb49 100644 --- a/web/src/assets/images/userMemory/arrow_right.svg +++ b/web/src/assets/images/userMemory/arrow_right.svg @@ -1,12 +1,14 @@ 编组 5 - - - - - - + + + + + + + + diff --git a/web/src/assets/images/userMemory/arrow_right_dark.svg b/web/src/assets/images/userMemory/arrow_right_dark.svg new file mode 100644 index 00000000..38cfd953 --- /dev/null +++ b/web/src/assets/images/userMemory/arrow_right_dark.svg @@ -0,0 +1,16 @@ + + + 编组 5 + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/arrow_right_hover.svg b/web/src/assets/images/userMemory/arrow_right_hover.svg index 0fed7c6b..444a7a03 100644 --- a/web/src/assets/images/userMemory/arrow_right_hover.svg +++ b/web/src/assets/images/userMemory/arrow_right_hover.svg @@ -1,12 +1,14 @@ 编组 5 - - - - - - + + + + + + + + diff --git a/web/src/assets/images/userMemory/chat.svg b/web/src/assets/images/userMemory/chat.svg new file mode 100644 index 00000000..11b34345 --- /dev/null +++ b/web/src/assets/images/userMemory/chat.svg @@ -0,0 +1,17 @@ + + + 编组 61 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/close.svg b/web/src/assets/images/userMemory/close.svg new file mode 100644 index 00000000..1b511252 --- /dev/null +++ b/web/src/assets/images/userMemory/close.svg @@ -0,0 +1,13 @@ + + + 关闭 + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/down.svg b/web/src/assets/images/userMemory/down.svg index ae263f65..07a70e0d 100644 --- a/web/src/assets/images/userMemory/down.svg +++ b/web/src/assets/images/userMemory/down.svg @@ -1,13 +1,15 @@ - 下拉备份 - - - - - - - + 下拉 + + + + + + + + + diff --git a/web/src/assets/images/userMemory/download.svg b/web/src/assets/images/userMemory/download.svg new file mode 100644 index 00000000..1aa4f1ac --- /dev/null +++ b/web/src/assets/images/userMemory/download.svg @@ -0,0 +1,21 @@ + + + 更多 + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/download_hover.svg b/web/src/assets/images/userMemory/download_hover.svg new file mode 100644 index 00000000..5079a1ff --- /dev/null +++ b/web/src/assets/images/userMemory/download_hover.svg @@ -0,0 +1,22 @@ + + + 更多 + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/entity.svg b/web/src/assets/images/userMemory/entity.svg new file mode 100644 index 00000000..ad6a2692 --- /dev/null +++ b/web/src/assets/images/userMemory/entity.svg @@ -0,0 +1,20 @@ + + + 编组 5 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/file.svg b/web/src/assets/images/userMemory/file.svg new file mode 100644 index 00000000..6bfd562e --- /dev/null +++ b/web/src/assets/images/userMemory/file.svg @@ -0,0 +1,85 @@ + + + 编组 9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TEXT + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/forget.png b/web/src/assets/images/userMemory/forget.png new file mode 100644 index 00000000..f38ff9bd Binary files /dev/null and b/web/src/assets/images/userMemory/forget.png differ diff --git a/web/src/assets/images/userMemory/interestDistribution.svg b/web/src/assets/images/userMemory/interestDistribution.svg index f39d3bb3..d26a9952 100644 --- a/web/src/assets/images/userMemory/interestDistribution.svg +++ b/web/src/assets/images/userMemory/interestDistribution.svg @@ -1,16 +1,18 @@ - + 兴趣爱好 - - - - - - - - - - + + + + + + + + + + + + diff --git a/web/src/assets/images/userMemory/interestDistribution_active.svg b/web/src/assets/images/userMemory/interestDistribution_active.svg new file mode 100644 index 00000000..87b8d548 --- /dev/null +++ b/web/src/assets/images/userMemory/interestDistribution_active.svg @@ -0,0 +1,21 @@ + + + 兴趣爱好 + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/logo.png b/web/src/assets/images/userMemory/logo.png new file mode 100644 index 00000000..ab37dda6 Binary files /dev/null and b/web/src/assets/images/userMemory/logo.png differ diff --git a/web/src/assets/images/userMemory/logout.svg b/web/src/assets/images/userMemory/logout.svg new file mode 100644 index 00000000..8c21f4e2 --- /dev/null +++ b/web/src/assets/images/userMemory/logout.svg @@ -0,0 +1,13 @@ + + + 退出 (1) + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/long_term_number.svg b/web/src/assets/images/userMemory/long_term_number.svg new file mode 100644 index 00000000..134af714 --- /dev/null +++ b/web/src/assets/images/userMemory/long_term_number.svg @@ -0,0 +1,19 @@ + + + 编组 5 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/me.svg b/web/src/assets/images/userMemory/me.svg new file mode 100644 index 00000000..b8fa9e45 --- /dev/null +++ b/web/src/assets/images/userMemory/me.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/memoryInsight.svg b/web/src/assets/images/userMemory/memoryInsight.svg new file mode 100644 index 00000000..7dfa3dcf --- /dev/null +++ b/web/src/assets/images/userMemory/memoryInsight.svg @@ -0,0 +1,32 @@ + + + 编组 26 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/memoryInsight_active.svg b/web/src/assets/images/userMemory/memoryInsight_active.svg new file mode 100644 index 00000000..43c73a4b --- /dev/null +++ b/web/src/assets/images/userMemory/memoryInsight_active.svg @@ -0,0 +1,15 @@ + + + 热点洞察 + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/mp3.svg b/web/src/assets/images/userMemory/mp3.svg new file mode 100644 index 00000000..6bc6f2c6 --- /dev/null +++ b/web/src/assets/images/userMemory/mp3.svg @@ -0,0 +1,60 @@ + + + 编组 9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MP3 + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/pause.svg b/web/src/assets/images/userMemory/pause.svg new file mode 100644 index 00000000..95e5d0ca --- /dev/null +++ b/web/src/assets/images/userMemory/pause.svg @@ -0,0 +1,20 @@ + + + 播放 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/play.svg b/web/src/assets/images/userMemory/play.svg new file mode 100644 index 00000000..a3caf5be --- /dev/null +++ b/web/src/assets/images/userMemory/play.svg @@ -0,0 +1,15 @@ + + + 播放 + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/play_opacity.svg b/web/src/assets/images/userMemory/play_opacity.svg new file mode 100644 index 00000000..78de47cf --- /dev/null +++ b/web/src/assets/images/userMemory/play_opacity.svg @@ -0,0 +1,15 @@ + + + 播放 + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/play_speed.svg b/web/src/assets/images/userMemory/play_speed.svg new file mode 100644 index 00000000..0245a19e --- /dev/null +++ b/web/src/assets/images/userMemory/play_speed.svg @@ -0,0 +1,13 @@ + + + iconfont-PREV + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/question.svg b/web/src/assets/images/userMemory/question.svg new file mode 100644 index 00000000..f8b0fee4 --- /dev/null +++ b/web/src/assets/images/userMemory/question.svg @@ -0,0 +1,15 @@ + + + 问号小 + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/refresh.svg b/web/src/assets/images/userMemory/refresh.svg new file mode 100644 index 00000000..46627009 --- /dev/null +++ b/web/src/assets/images/userMemory/refresh.svg @@ -0,0 +1,20 @@ + + + 重新生成 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/retrieval_number.svg b/web/src/assets/images/userMemory/retrieval_number.svg new file mode 100644 index 00000000..0257ad37 --- /dev/null +++ b/web/src/assets/images/userMemory/retrieval_number.svg @@ -0,0 +1,22 @@ + + + 编组 5 + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/up_border.svg b/web/src/assets/images/userMemory/up_border.svg index a7fe9978..9435cb19 100644 --- a/web/src/assets/images/userMemory/up_border.svg +++ b/web/src/assets/images/userMemory/up_border.svg @@ -1,12 +1,12 @@ 下拉备份 - - + + - - - + + + diff --git a/web/src/assets/images/userMemory/user.png b/web/src/assets/images/userMemory/user.png new file mode 100644 index 00000000..671ab044 Binary files /dev/null and b/web/src/assets/images/userMemory/user.png differ diff --git a/web/src/assets/images/userMemory/userProfile.svg b/web/src/assets/images/userMemory/userProfile.svg new file mode 100644 index 00000000..fd996bf0 --- /dev/null +++ b/web/src/assets/images/userMemory/userProfile.svg @@ -0,0 +1,22 @@ + + + 知识库 + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/userMemory/userProfile_active.svg b/web/src/assets/images/userMemory/userProfile_active.svg new file mode 100644 index 00000000..76a1e9e8 --- /dev/null +++ b/web/src/assets/images/userMemory/userProfile_active.svg @@ -0,0 +1,22 @@ + + + 知识库 + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/agent_arbitration.png b/web/src/assets/images/workflow/agent_arbitration.png deleted file mode 100644 index d555e3e2..00000000 Binary files a/web/src/assets/images/workflow/agent_arbitration.png and /dev/null differ diff --git a/web/src/assets/images/workflow/agent_collaboration.png b/web/src/assets/images/workflow/agent_collaboration.png deleted file mode 100644 index 7a92aecf..00000000 Binary files a/web/src/assets/images/workflow/agent_collaboration.png and /dev/null differ diff --git a/web/src/assets/images/workflow/agent_scheduling.png b/web/src/assets/images/workflow/agent_scheduling.png deleted file mode 100644 index 97028422..00000000 Binary files a/web/src/assets/images/workflow/agent_scheduling.png and /dev/null differ diff --git a/web/src/assets/images/workflow/aggregator.png b/web/src/assets/images/workflow/aggregator.png deleted file mode 100644 index 6253733a..00000000 Binary files a/web/src/assets/images/workflow/aggregator.png and /dev/null differ diff --git a/web/src/assets/images/workflow/aggregator.svg b/web/src/assets/images/workflow/aggregator.svg new file mode 100644 index 00000000..c757e1a1 --- /dev/null +++ b/web/src/assets/images/workflow/aggregator.svg @@ -0,0 +1,31 @@ + + + 编组 6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/assigner.png b/web/src/assets/images/workflow/assigner.png deleted file mode 100644 index 4370bfdd..00000000 Binary files a/web/src/assets/images/workflow/assigner.png and /dev/null differ diff --git a/web/src/assets/images/workflow/assigner.svg b/web/src/assets/images/workflow/assigner.svg new file mode 100644 index 00000000..c653694f --- /dev/null +++ b/web/src/assets/images/workflow/assigner.svg @@ -0,0 +1,30 @@ + + + 编组 6 + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/break.png b/web/src/assets/images/workflow/break.png deleted file mode 100644 index 473ab068..00000000 Binary files a/web/src/assets/images/workflow/break.png and /dev/null differ diff --git a/web/src/assets/images/workflow/break.svg b/web/src/assets/images/workflow/break.svg new file mode 100644 index 00000000..aefc203a --- /dev/null +++ b/web/src/assets/images/workflow/break.svg @@ -0,0 +1,30 @@ + + + 编组 14 + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/classification.png b/web/src/assets/images/workflow/classification.png deleted file mode 100644 index 87d34bb8..00000000 Binary files a/web/src/assets/images/workflow/classification.png and /dev/null differ diff --git a/web/src/assets/images/workflow/code_execution.png b/web/src/assets/images/workflow/code_execution.png deleted file mode 100644 index 7f802b3c..00000000 Binary files a/web/src/assets/images/workflow/code_execution.png and /dev/null differ diff --git a/web/src/assets/images/workflow/code_execution.svg b/web/src/assets/images/workflow/code_execution.svg new file mode 100644 index 00000000..4d749ddd --- /dev/null +++ b/web/src/assets/images/workflow/code_execution.svg @@ -0,0 +1,27 @@ + + + 编组 13 + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/condition.png b/web/src/assets/images/workflow/condition.png deleted file mode 100644 index a0bf9160..00000000 Binary files a/web/src/assets/images/workflow/condition.png and /dev/null differ diff --git a/web/src/assets/images/workflow/condition.svg b/web/src/assets/images/workflow/condition.svg new file mode 100644 index 00000000..addb1122 --- /dev/null +++ b/web/src/assets/images/workflow/condition.svg @@ -0,0 +1,27 @@ + + + 编组 14 + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/delete.svg b/web/src/assets/images/workflow/delete.svg new file mode 100644 index 00000000..238a729c --- /dev/null +++ b/web/src/assets/images/workflow/delete.svg @@ -0,0 +1,23 @@ + + + 编组 33 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/delete_hover.svg b/web/src/assets/images/workflow/delete_hover.svg new file mode 100644 index 00000000..2f145453 --- /dev/null +++ b/web/src/assets/images/workflow/delete_hover.svg @@ -0,0 +1,23 @@ + + + 编组 33 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/end.png b/web/src/assets/images/workflow/end.png deleted file mode 100644 index 7f4628c6..00000000 Binary files a/web/src/assets/images/workflow/end.png and /dev/null differ diff --git a/web/src/assets/images/workflow/end.svg b/web/src/assets/images/workflow/end.svg new file mode 100644 index 00000000..7c8eb34e --- /dev/null +++ b/web/src/assets/images/workflow/end.svg @@ -0,0 +1,23 @@ + + + 编组 13 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/file_fold.svg b/web/src/assets/images/workflow/file_fold.svg new file mode 100644 index 00000000..b50f10de --- /dev/null +++ b/web/src/assets/images/workflow/file_fold.svg @@ -0,0 +1,13 @@ + + + 文件夹 + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/http_request.png b/web/src/assets/images/workflow/http_request.png deleted file mode 100644 index 64e55d36..00000000 Binary files a/web/src/assets/images/workflow/http_request.png and /dev/null differ diff --git a/web/src/assets/images/workflow/http_request.svg b/web/src/assets/images/workflow/http_request.svg new file mode 100644 index 00000000..36c8995f --- /dev/null +++ b/web/src/assets/images/workflow/http_request.svg @@ -0,0 +1,27 @@ + + + 编组 12 + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/iteration.png b/web/src/assets/images/workflow/iteration.png deleted file mode 100644 index dd73767b..00000000 Binary files a/web/src/assets/images/workflow/iteration.png and /dev/null differ diff --git a/web/src/assets/images/workflow/iteration.svg b/web/src/assets/images/workflow/iteration.svg new file mode 100644 index 00000000..5bc4d840 --- /dev/null +++ b/web/src/assets/images/workflow/iteration.svg @@ -0,0 +1,32 @@ + + + 编组 6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/llm.png b/web/src/assets/images/workflow/llm.png deleted file mode 100644 index 5d9e7465..00000000 Binary files a/web/src/assets/images/workflow/llm.png and /dev/null differ diff --git a/web/src/assets/images/workflow/llm.svg b/web/src/assets/images/workflow/llm.svg new file mode 100644 index 00000000..54cee4e0 --- /dev/null +++ b/web/src/assets/images/workflow/llm.svg @@ -0,0 +1,20 @@ + + + 编组 14 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/loop.png b/web/src/assets/images/workflow/loop.png deleted file mode 100644 index a4313229..00000000 Binary files a/web/src/assets/images/workflow/loop.png and /dev/null differ diff --git a/web/src/assets/images/workflow/loop.svg b/web/src/assets/images/workflow/loop.svg new file mode 100644 index 00000000..78fbe8a2 --- /dev/null +++ b/web/src/assets/images/workflow/loop.svg @@ -0,0 +1,27 @@ + + + 编组 15 + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/memory-read.png b/web/src/assets/images/workflow/memory-read.png deleted file mode 100644 index 4b0cdc1d..00000000 Binary files a/web/src/assets/images/workflow/memory-read.png and /dev/null differ diff --git a/web/src/assets/images/workflow/memory-read.svg b/web/src/assets/images/workflow/memory-read.svg new file mode 100644 index 00000000..d385748e --- /dev/null +++ b/web/src/assets/images/workflow/memory-read.svg @@ -0,0 +1,26 @@ + + + 编组 13 + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/memory-write.png b/web/src/assets/images/workflow/memory-write.png deleted file mode 100644 index 83a50fd4..00000000 Binary files a/web/src/assets/images/workflow/memory-write.png and /dev/null differ diff --git a/web/src/assets/images/workflow/memory-write.svg b/web/src/assets/images/workflow/memory-write.svg new file mode 100644 index 00000000..404275b4 --- /dev/null +++ b/web/src/assets/images/workflow/memory-write.svg @@ -0,0 +1,29 @@ + + + 编组 13 + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/memory_enhancement.png b/web/src/assets/images/workflow/memory_enhancement.png deleted file mode 100644 index 998c02fe..00000000 Binary files a/web/src/assets/images/workflow/memory_enhancement.png and /dev/null differ diff --git a/web/src/assets/images/workflow/menuFold.svg b/web/src/assets/images/workflow/menuFold.svg new file mode 100644 index 00000000..77dc38ac --- /dev/null +++ b/web/src/assets/images/workflow/menuFold.svg @@ -0,0 +1,17 @@ + + + 收起 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/minus.png b/web/src/assets/images/workflow/minus.png new file mode 100644 index 00000000..8dabd4dc Binary files /dev/null and b/web/src/assets/images/workflow/minus.png differ diff --git a/web/src/assets/images/workflow/model_selection.png b/web/src/assets/images/workflow/model_selection.png deleted file mode 100644 index e3e93962..00000000 Binary files a/web/src/assets/images/workflow/model_selection.png and /dev/null differ diff --git a/web/src/assets/images/workflow/model_voting.png b/web/src/assets/images/workflow/model_voting.png deleted file mode 100644 index 8324541e..00000000 Binary files a/web/src/assets/images/workflow/model_voting.png and /dev/null differ diff --git a/web/src/assets/images/workflow/node_plus.png b/web/src/assets/images/workflow/node_plus.png new file mode 100644 index 00000000..61e83c65 Binary files /dev/null and b/web/src/assets/images/workflow/node_plus.png differ diff --git a/web/src/assets/images/workflow/output_audit.png b/web/src/assets/images/workflow/output_audit.png deleted file mode 100644 index 50128f82..00000000 Binary files a/web/src/assets/images/workflow/output_audit.png and /dev/null differ diff --git a/web/src/assets/images/workflow/parallel.png b/web/src/assets/images/workflow/parallel.png deleted file mode 100644 index e77d79d8..00000000 Binary files a/web/src/assets/images/workflow/parallel.png and /dev/null differ diff --git a/web/src/assets/images/workflow/parameter_extraction.png b/web/src/assets/images/workflow/parameter_extraction.png deleted file mode 100644 index d4b50ee0..00000000 Binary files a/web/src/assets/images/workflow/parameter_extraction.png and /dev/null differ diff --git a/web/src/assets/images/workflow/parameter_extraction.svg b/web/src/assets/images/workflow/parameter_extraction.svg new file mode 100644 index 00000000..f3472516 --- /dev/null +++ b/web/src/assets/images/workflow/parameter_extraction.svg @@ -0,0 +1,22 @@ + + + 编组 15 + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/plus.png b/web/src/assets/images/workflow/plus.png new file mode 100644 index 00000000..05f5066a Binary files /dev/null and b/web/src/assets/images/workflow/plus.png differ diff --git a/web/src/assets/images/workflow/process_evolution.png b/web/src/assets/images/workflow/process_evolution.png deleted file mode 100644 index 8262c00d..00000000 Binary files a/web/src/assets/images/workflow/process_evolution.png and /dev/null differ diff --git a/web/src/assets/images/workflow/question-classifier.png b/web/src/assets/images/workflow/question-classifier.png index 754a0a62..9a95e4ab 100644 Binary files a/web/src/assets/images/workflow/question-classifier.png and b/web/src/assets/images/workflow/question-classifier.png differ diff --git a/web/src/assets/images/workflow/question-classifier.svg b/web/src/assets/images/workflow/question-classifier.svg new file mode 100644 index 00000000..3a85ff8b --- /dev/null +++ b/web/src/assets/images/workflow/question-classifier.svg @@ -0,0 +1,23 @@ + + + 编组 14 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/rag.png b/web/src/assets/images/workflow/rag.png deleted file mode 100644 index 3749dbfa..00000000 Binary files a/web/src/assets/images/workflow/rag.png and /dev/null differ diff --git a/web/src/assets/images/workflow/rag.svg b/web/src/assets/images/workflow/rag.svg new file mode 100644 index 00000000..e9648fc8 --- /dev/null +++ b/web/src/assets/images/workflow/rag.svg @@ -0,0 +1,26 @@ + + + 编组 14 + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/reasoning_control.png b/web/src/assets/images/workflow/reasoning_control.png deleted file mode 100644 index 649e165c..00000000 Binary files a/web/src/assets/images/workflow/reasoning_control.png and /dev/null differ diff --git a/web/src/assets/images/workflow/refresh_active.svg b/web/src/assets/images/workflow/refresh_active.svg new file mode 100644 index 00000000..f9b0b3d8 --- /dev/null +++ b/web/src/assets/images/workflow/refresh_active.svg @@ -0,0 +1,18 @@ + + + 刷新 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/robot-2-line@2x.png b/web/src/assets/images/workflow/robot-2-line@2x.png deleted file mode 100644 index f1dc247e..00000000 Binary files a/web/src/assets/images/workflow/robot-2-line@2x.png and /dev/null differ diff --git a/web/src/assets/images/workflow/self_optimization.png b/web/src/assets/images/workflow/self_optimization.png deleted file mode 100644 index 08ed8598..00000000 Binary files a/web/src/assets/images/workflow/self_optimization.png and /dev/null differ diff --git a/web/src/assets/images/workflow/self_reflection.png b/web/src/assets/images/workflow/self_reflection.png deleted file mode 100644 index 099aac60..00000000 Binary files a/web/src/assets/images/workflow/self_reflection.png and /dev/null differ diff --git a/web/src/assets/images/workflow/sensitive_detection.png b/web/src/assets/images/workflow/sensitive_detection.png deleted file mode 100644 index 637a4f13..00000000 Binary files a/web/src/assets/images/workflow/sensitive_detection.png and /dev/null differ diff --git a/web/src/assets/images/workflow/start.png b/web/src/assets/images/workflow/start.png deleted file mode 100644 index f6828988..00000000 Binary files a/web/src/assets/images/workflow/start.png and /dev/null differ diff --git a/web/src/assets/images/workflow/start.svg b/web/src/assets/images/workflow/start.svg new file mode 100644 index 00000000..7b89c1f7 --- /dev/null +++ b/web/src/assets/images/workflow/start.svg @@ -0,0 +1,21 @@ + + + 编组 12 + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/task_planning.png b/web/src/assets/images/workflow/task_planning.png deleted file mode 100644 index 33f322fd..00000000 Binary files a/web/src/assets/images/workflow/task_planning.png and /dev/null differ diff --git a/web/src/assets/images/workflow/template_rendering.png b/web/src/assets/images/workflow/template_rendering.png deleted file mode 100644 index 064caeb6..00000000 Binary files a/web/src/assets/images/workflow/template_rendering.png and /dev/null differ diff --git a/web/src/assets/images/workflow/template_rendering.svg b/web/src/assets/images/workflow/template_rendering.svg new file mode 100644 index 00000000..e52bf30d --- /dev/null +++ b/web/src/assets/images/workflow/template_rendering.svg @@ -0,0 +1,26 @@ + + + 编组 13 + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/assets/images/workflow/tools.png b/web/src/assets/images/workflow/tools.png deleted file mode 100644 index 49ff2fa4..00000000 Binary files a/web/src/assets/images/workflow/tools.png and /dev/null differ diff --git a/web/src/assets/images/workflow/tools.svg b/web/src/assets/images/workflow/tools.svg new file mode 100644 index 00000000..7c772245 --- /dev/null +++ b/web/src/assets/images/workflow/tools.svg @@ -0,0 +1,23 @@ + + + 编组 6 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/components/AudioRecorder/index.tsx b/web/src/components/AudioRecorder/index.tsx index 639a9109..8df31398 100644 --- a/web/src/components/AudioRecorder/index.tsx +++ b/web/src/components/AudioRecorder/index.tsx @@ -2,12 +2,13 @@ * @Author: ZhaoYing * @Date: 2026-02-06 21:11:51 * @Last Modified by: ZhaoYing - * @Last Modified time: 2026-03-17 18:39:09 + * @Last Modified time: 2026-03-20 14:25:26 */ import { type FC, useRef, useState } from 'react' import RecordRTC from 'recordrtc' -import { App } from 'antd' +import { App, Tooltip } from 'antd' import { useTranslation } from 'react-i18next'; +import clsx from 'clsx'; import { fileUploadUrlWithoutApiPrefix } from '@/api/fileStorage' import { request } from '@/utils/request' @@ -91,14 +92,17 @@ const AudioRecorder: FC = ({ // Toggle between recording/idle states on click; // swap background image to reflect current state return ( -
+ +
+ ) } diff --git a/web/src/components/BtnTabs/index.tsx b/web/src/components/BtnTabs/index.tsx new file mode 100644 index 00000000..772a4c8d --- /dev/null +++ b/web/src/components/BtnTabs/index.tsx @@ -0,0 +1,49 @@ +/* + * @Author: ZhaoYing + * @Date: 2026-03-19 14:05:09 + * @Last Modified by: ZhaoYing + * @Last Modified time: 2026-03-19 14:05:09 + */ +import { type FC } from 'react' +import { Flex } from 'antd'; +import clsx from 'clsx' + +/** A single tab item with a display label and unique key */ +interface Tab { + label: string + key: string +} + +/** Props for the BtnTabs component */ +interface BtnTabsProps { + /** List of tab items to render */ + items: Tab[] + /** Key of the currently active tab */ + activeKey: string + /** Callback fired when a tab is clicked */ + onChange: (key: string) => void; + /** Optional extra class name for the container */ + className?: string; +} + +/** Button-style tab switcher — renders tabs as pill-shaped buttons with active highlight */ +const BtnTabs: FC = ({ items, activeKey, onChange, className }) => { + return ( + + {items.map((tab) => ( +
onChange(tab.key)} + className={clsx('rb:px-2 rb:py-1 rb:rounded-[13px] rb:text-[12px] rb:leading-4.5 rb:cursor-pointer', { + 'rb:bg-[#F6F6F6]': activeKey !== tab.key, + 'rb:bg-[#171719] rb:text-white': activeKey === tab.key, + })} + > + {tab.label} +
+ ))} +
+ ) +} + +export default BtnTabs diff --git a/web/src/components/ButtonCheckbox/index.tsx b/web/src/components/ButtonCheckbox/index.tsx index 18bca7c6..8c52701b 100644 --- a/web/src/components/ButtonCheckbox/index.tsx +++ b/web/src/components/ButtonCheckbox/index.tsx @@ -2,7 +2,7 @@ * @Author: ZhaoYing * @Date: 2026-02-02 15:01:59 * @Last Modified by: ZhaoYing - * @Last Modified time: 2026-03-19 13:41:26 + * @Last Modified time: 2026-03-19 20:45:13 */ /** @@ -64,13 +64,11 @@ const ButtonCheckbox: FC = ({ align="center" justify={cicle ? 'center' : 'start'} gap={4} - className={clsx("rb:flex rb:items-center rb:cursor-pointer rb:px-2! rb:border rb:hover:bg-[#F6F6F6]", { - 'rb:size-7 rb:rounded-[14px] rb:border-[0.5px] rb:border-[#EBEBEB]': cicle, - 'rb:rounded-lg rb:text-[12px] rb:h-6': !cicle, + className={clsx("rb:border rb:rounded-lg rb:px-2! rb:text-[12px] rb:h-6 rb:cursor-pointer", { // Checked state: blue background and border - "rb:bg-[rgba(21,94,239,0.06)] rb:border-[rgba(21,94,239,0.25)] rb:hover:bg-[rgba(21,94,239,0.06)] rb:text-[#155EEF]": checked, + "rb:bg-[#FAFAFA] rb:border-[#171719]": checked, // Unchecked state: gray border and dark text - "rb:border-[#DFE4ED] rb:text-[#212332]": !checked, + "rb:border-[#EBEBEB] rb:text-[#212332] rb:hover:bg-[#F0F3F8]": !checked, "rb:opacity-65 rb:cursor-not-allowed!": disabled })} onClick={handleChange} diff --git a/web/src/components/Charts/AreaLineChart.tsx b/web/src/components/Charts/AreaLineChart.tsx new file mode 100644 index 00000000..40bfabb1 --- /dev/null +++ b/web/src/components/Charts/AreaLineChart.tsx @@ -0,0 +1,306 @@ +/* + * @Author: ZhaoYing + * @Date: 2026-02-10 13:36:03 + * @Last Modified by: ZhaoYing + * @Last Modified time: 2026-02-25 13:51:52 + */ +/* + * AreaLineChart Component + * + * A reusable area line chart component built with ECharts that displays time-series data + * with gradient-filled areas under the lines. Supports multiple data series with + * customizable colors and responsive behavior. + * + * Features: + * - Multiple line series with gradient area fills + * - Gradient line colors (white to color to white) + * - Customizable x-axis key for flexible data structures + * - Date-based x-axis with formatted labels (DD/MM) + * - Responsive resizing using ResizeObserver + * - Interactive tooltips on hover + * - Customizable grid layout and colors + * - Legend at the bottom for series identification + * - Empty state when no data is available + * - Smooth rendering with requestAnimationFrame + */ +import { type FC, useEffect, useRef, useMemo } from 'react' +import ReactEcharts from 'echarts-for-react'; +import * as echarts from 'echarts'; + +import { formatDateTime } from '@/utils/format'; +import Empty from '@/components/Empty' + +/** Base configuration for all line series */ +const SeriesConfig = { + type: 'line', + stack: 'Total', + symbol: 'circle', + symbolSize: 5, + showSymbol: true, + label: { + show: false, + position: 'top' + }, + emphasis: { + focus: 'series' + }, +} + +/** Default color palette for area line series */ +const Colors = ['#155EEF', '#FFB048', '#4DA8FF'] + +/** + * Data structure for chart data points + * Flexible structure allowing any string key with string or number values + * + * @interface ChartData + * @property {string | number} [key: string] - Dynamic properties for x-axis and data series + */ +export interface ChartData { + [key: string]: string | number; +} + +/** + * Props for the AreaLineChart component + * + * @interface AreaLineChartProps + * @property {string} xAxisKey - Key name in chartData to use for x-axis values + * @property {ChartData[]} chartData - Array of data points with dynamic properties + * @property {Record} seriesList - Map of data keys to display names + * @property {string} [className] - Additional CSS classes for the container + * @property {number} [height] - Height of the chart in pixels + * @property {string[]} [colors] - Custom color array for line series and gradients + * @property {any} [grid] - ECharts grid configuration for chart positioning + */ +interface AreaLineChartProps { + xAxisKey: string; + chartData: ChartData[]; + seriesList: Record; + className?: string; + height?: number; + colors?: string[]; + grid?: any; + lineStyle?: any; + showLegend?: boolean; + smooth?: boolean; +} + +/** + * AreaLineChart Component + * + * Renders a multi-series area line chart with gradient fills. + * The area gradient goes from the series color at the top to white at the bottom. + * The line gradient goes from white to the series color and back to white. + * Automatically resizes when container dimensions change. + * + * @param {AreaLineChartProps} props - Component props + * @returns {JSX.Element} Rendered area line chart or empty state + * + * @example + * ```tsx + * + * ``` + */ +const AreaLineChart: FC = ({ + xAxisKey, + chartData, + seriesList, + height, + colors = Colors, + grid = { + top: 7, + left: 4, + right: 16, + bottom: 32, + containLabel: true + }, + lineStyle, + showLegend = true, + smooth = true +}) => { + /** Reference to the ECharts instance for programmatic control */ + const chartRef = useRef(null); + /** Flag to prevent multiple simultaneous resize operations */ + const resizeScheduledRef = useRef(false) + + /** + * Generate series configuration for each data series with gradient effects + * Creates area fills with vertical gradients (color to white) + * and line colors with horizontal gradients (white to color to white) + * + * @returns {Array} Array of ECharts series configurations with gradient styles + */ + const getSeries = () => { + return Object.entries(seriesList).map(([key, name], index) => ({ + ...SeriesConfig, + name: name, + data: chartData.map(vo => vo[key as keyof ChartData]), + areaStyle: { + opacity: 0.8, + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: colors[index] + }, + { + offset: 1, + color: '#FFFFFF' + } + ]) + }, + lineStyle: lineStyle || { + width: 3, + color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ + { + offset: 0, + color: '#FFFFFF' + }, + { + offset: 0.8, + color: colors[index] + }, + { + offset: 1, + color: '#FFFFFF' + } + ]) + }, + smooth + })) + } + /** + * Memoized legend data to prevent unnecessary recalculations + * Formats series list for display in chart legend + */ + const formatSeriesList = useMemo(() => { + return Object.entries(seriesList).map(([_key, name]) => ({ + ...SeriesConfig, + name: name, + })) + }, [seriesList]) + + /** + * Set up responsive behavior using ResizeObserver + * Resizes chart when parent container dimensions change + */ + useEffect(() => { + const handleResize = () => { + if (chartRef.current && !resizeScheduledRef.current) { + resizeScheduledRef.current = true + requestAnimationFrame(() => { + chartRef.current?.getEchartsInstance().resize(); + resizeScheduledRef.current = false + }); + } + } + + const resizeObserver = new ResizeObserver(handleResize) + const chartElement = chartRef.current?.getEchartsInstance().getDom().parentElement + if (chartElement) { + resizeObserver.observe(chartElement) + } + + return () => { + resizeObserver.disconnect() + } + }, [chartData]) + + return ( +
+ {chartData && chartData.length > 0 + ? formatDateTime(item[xAxisKey], 'DD/MM')), + boundaryGap: false, + axisLabel: { + color: '#5B6167', + fontFamily: 'PingFangSC, PingFang SC', + lineHeight: 17, + }, + axisLine: { + show: false, + lineStyle: { + color: '#EBEBEB', + } + }, + splitLine: { + show: false, + }, + axisTick: { + show: false + } + }, + yAxis: { + type: 'value', + axisLabel: { + color: '#A8A9AA', + fontFamily: 'PingFangSC, PingFang SC', + align: 'right', + lineHeight: 17, + }, + axisLine: { + lineStyle: { + color: '#EBEBEB', + } + }, + }, + series: getSeries() + }} + style={{ height: `${height}px`, width: '100%', minWidth: '100%', boxSizing: 'border-box' }} + opts={{ renderer: 'canvas' }} + notMerge={true} + lazyUpdate={true} + /> + : + } +
+ ) +} + +export default AreaLineChart diff --git a/web/src/components/Charts/BarChart.tsx b/web/src/components/Charts/BarChart.tsx new file mode 100644 index 00000000..e476a2cb --- /dev/null +++ b/web/src/components/Charts/BarChart.tsx @@ -0,0 +1,295 @@ +/* + * @Author: ZhaoYing + * @Date: 2026-02-10 13:36:03 + * @Last Modified by: ZhaoYing + * @Last Modified time: 2026-02-25 13:49:04 + */ +/* + * BarChart Component + * + * A reusable area line chart component built with ECharts that displays time-series data + * with gradient-filled areas under the lines. Supports multiple data series with + * customizable colors and responsive behavior. + * + * Features: + * - Multiple line series with gradient area fills + * - Gradient line colors (white to color to white) + * - Customizable x-axis key for flexible data structures + * - Date-based x-axis with formatted labels (DD/MM) + * - Responsive resizing using ResizeObserver + * - Interactive tooltips on hover + * - Customizable grid layout and colors + * - Legend at the bottom for series identification + * - Empty state when no data is available + * - Smooth rendering with requestAnimationFrame + */ +import { type FC, useEffect, useRef, useMemo } from 'react' +import ReactEcharts from 'echarts-for-react'; +import * as echarts from 'echarts'; + +import { formatDateTime } from '@/utils/format'; +import Empty from '@/components/Empty' + +/** Base configuration for all line series */ +const SeriesConfig = { + type: 'bar', + stack: 'Total', + symbol: 'circle', + symbolSize: 5, + showSymbol: true, + label: { + show: false, + position: 'top' + }, + emphasis: { + focus: 'series' + }, + showBackground: true, +} + +/** Default color palette for area line series */ +const Colors = ['#155EEF', '#FFB048', '#4DA8FF'] + +/** + * Data structure for chart data points + * Flexible structure allowing any string key with string or number values + * + * @interface ChartData + * @property {string | number} [key: string] - Dynamic properties for x-axis and data series + */ +export interface ChartData { + [key: string]: string | number; +} + +/** + * Props for the BarChart component + * + * @interface BarChartProps + * @property {string} xAxisKey - Key name in chartData to use for x-axis values + * @property {ChartData[]} chartData - Array of data points with dynamic properties + * @property {Record} seriesList - Map of data keys to display names + * @property {string} [className] - Additional CSS classes for the container + * @property {number} [height] - Height of the chart in pixels + * @property {string[]} [colors] - Custom color array for line series and gradients + * @property {any} [grid] - ECharts grid configuration for chart positioning + */ +interface BarChartProps { + xAxisKey: string; + chartData: ChartData[]; + seriesList: Record; + className?: string; + height?: number; + colors?: string[]; + grid?: any; + itemStyle?: any; + showLegend?: boolean; + showBackground?: boolean; +} + +/** + * BarChart Component + * + * Renders a multi-series area line chart with gradient fills. + * The area gradient goes from the series color at the top to white at the bottom. + * The line gradient goes from white to the series color and back to white. + * Automatically resizes when container dimensions change. + * + * @param {BarChartProps} props - Component props + * @returns {JSX.Element} Rendered area line chart or empty state + * + * @example + * ```tsx + * + * ``` + */ +const BarChart: FC = ({ + xAxisKey, + chartData, + seriesList, + height, + colors = Colors, + grid = { + top: 7, + left: 4, + right: 16, + bottom: 32, + containLabel: true + }, + itemStyle, + showLegend = true, + showBackground = true, +}) => { + /** Reference to the ECharts instance for programmatic control */ + const chartRef = useRef(null); + /** Flag to prevent multiple simultaneous resize operations */ + const resizeScheduledRef = useRef(false) + + /** + * Generate series configuration for each data series with gradient effects + * Creates area fills with vertical gradients (color to white) + * and line colors with horizontal gradients (white to color to white) + * + * @returns {Array} Array of ECharts series configurations with gradient styles + */ + const getSeries = () => { + return Object.entries(seriesList).map(([key, name], index) => ({ + ...SeriesConfig, + name: name, + data: chartData.map(vo => vo[key as keyof ChartData]), + barWidth: 16, + itemStyle: itemStyle || { + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: colors[index] + }, + { + offset: 1, + color: '#FFFFFF' + } + ]), + }, + emphasis: { + itemStyle: { + } + }, + barGap: '-100%', + showBackground: showBackground, + })) + } + /** + * Memoized legend data to prevent unnecessary recalculations + * Formats series list for display in chart legend + */ + const formatSeriesList = useMemo(() => { + return Object.entries(seriesList).map(([_key, name]) => ({ + ...SeriesConfig, + name: name, + })) + }, [seriesList]) + + /** + * Set up responsive behavior using ResizeObserver + * Resizes chart when parent container dimensions change + */ + useEffect(() => { + const handleResize = () => { + if (chartRef.current && !resizeScheduledRef.current) { + resizeScheduledRef.current = true + requestAnimationFrame(() => { + chartRef.current?.getEchartsInstance().resize(); + resizeScheduledRef.current = false + }); + } + } + + const resizeObserver = new ResizeObserver(handleResize) + const chartElement = chartRef.current?.getEchartsInstance().getDom().parentElement + if (chartElement) { + resizeObserver.observe(chartElement) + } + + return () => { + resizeObserver.disconnect() + } + }, [chartData]) + + return ( +
+ {chartData && chartData.length > 0 + ? formatDateTime(item[xAxisKey], 'DD/MM')), + boundaryGap: false, + axisLabel: { + color: '#5B6167', + fontFamily: 'PingFangSC, PingFang SC', + lineHeight: 17, + }, + axisLine: { + show: false, + itemStyle: { + color: '#EBEBEB', + } + }, + splitLine: { + show: false, + }, + axisTick: { + show: false + } + }, + yAxis: { + type: 'value', + axisLabel: { + color: '#A8A9AA', + fontFamily: 'PingFangSC, PingFang SC', + align: 'right', + lineHeight: 17, + }, + axisLine: { + itemStyle: { + color: '#EBEBEB', + } + }, + }, + series: getSeries() + }} + style={{ height: `${height}px`, width: '100%', minWidth: '100%', boxSizing: 'border-box' }} + opts={{ renderer: 'canvas' }} + notMerge={true} + lazyUpdate={true} + /> + : + } +
+ ) +} + +export default BarChart diff --git a/web/src/components/Charts/GraphNetworkChart.tsx b/web/src/components/Charts/GraphNetworkChart.tsx new file mode 100644 index 00000000..8f4ec796 --- /dev/null +++ b/web/src/components/Charts/GraphNetworkChart.tsx @@ -0,0 +1,200 @@ +/* + * @Author: ZhaoYing + * @Date: 2026-02-10 14:06:09 + * @Last Modified by: ZhaoYing + * @Last Modified time: 2026-02-10 14:06:09 + */ +/** + * GraphNetworkChart Component + * + * A force-directed graph visualization component built with ECharts. + * Displays nodes and edges in an interactive network diagram with physics-based layout. + * Supports zooming, panning, dragging nodes, and click interactions. + */ +import { type FC, useEffect, useRef, type SetStateAction, type Dispatch } from 'react' +import ReactEcharts from 'echarts-for-react'; + +import PageEmpty from '@/components/Empty/PageEmpty' + +// Default color palette for node categories +const Colors = ['#171719', '#155EEF', '#9C6FFF', '#FF8A4C'] + +/** + * Node interface representing a graph node/vertex + */ +export interface Node { + id: string; // Unique identifier for the node + label: string; // Display label for the node + category: number; // Category index for grouping and coloring + symbolSize: number; // Size of the node symbol in pixels + name: string; // Node name (used in ECharts) + itemStyle: { + color: string; // Custom color for this node + } + caption: string; // Additional description or caption + [key: string]: any; // Allow additional custom properties +} + +/** + * Edge interface representing a connection between two nodes + */ +export interface Edge { + id: string; // Unique identifier for the edge + source: string; // Source node ID + target: string; // Target node ID + type: string; // Type/category of the relationship + caption: string; // Description of the relationship + value: number; // Numeric value associated with the edge + weight: number; // Weight/strength of the connection +} + +/** + * Props for the GraphNetworkChart component + */ +interface GraphNetworkChartProps { + nodes: Node[]; // Array of nodes to display in the graph + links: Edge[]; // Array of edges connecting the nodes + categories: { name: string }[]; // Category definitions for node grouping + colors?: string[]; // Optional custom color palette (defaults to Colors) + onNodeClick: Dispatch>; // Callback when a node is clicked +} + +const GraphNetworkChart: FC = ({ + nodes, + links, + categories, + colors = Colors, + onNodeClick, +}) => { + // Reference to the ECharts instance for programmatic control + const chartRef = useRef(null); + + // Flag to prevent multiple simultaneous resize operations (debouncing) + const resizeScheduledRef = useRef(false) + + /** + * Effect: Handle responsive chart resizing + * + * Uses ResizeObserver to detect container size changes and resize the chart accordingly. + * Implements requestAnimationFrame for smooth, debounced resize operations. + * Re-runs when nodes change to ensure proper sizing with new data. + */ + useEffect(() => { + const handleResize = () => { + if (chartRef.current && !resizeScheduledRef.current) { + resizeScheduledRef.current = true + // Use requestAnimationFrame for smooth, optimized resize + requestAnimationFrame(() => { + chartRef.current?.getEchartsInstance().resize(); + resizeScheduledRef.current = false + }); + } + } + + // Observe the chart container for size changes + const resizeObserver = new ResizeObserver(handleResize) + const chartElement = chartRef.current?.getEchartsInstance().getDom().parentElement + if (chartElement) { + resizeObserver.observe(chartElement) + } + + // Cleanup: disconnect observer when component unmounts + return () => { + resizeObserver.disconnect() + } + }, [nodes]) + + return ( +
+ {/* Render chart only if nodes exist, otherwise show empty state */} + {nodes && nodes.length > 0 + ? { + // Only trigger callback for node clicks (not edges or background) + if (params.dataType === 'node') { + onNodeClick(params.data) + } + } + }} + /> + : + } +
+ ) +} + +export default GraphNetworkChart diff --git a/web/src/components/Charts/LineChart.tsx b/web/src/components/Charts/LineChart.tsx new file mode 100644 index 00000000..e5217336 --- /dev/null +++ b/web/src/components/Charts/LineChart.tsx @@ -0,0 +1,260 @@ +/* + * @Author: ZhaoYing + * @Date: 2026-02-10 13:35:55 + * @Last Modified by: ZhaoYing + * @Last Modified time: 2026-02-10 13:35:55 + */ +/* + * LineChart Component + * + * A reusable line chart component built with ECharts for displaying time-series data + * with multiple data series. Supports customizable colors, responsive behavior, + * and interactive tooltips. + * + * Features: + * - Multiple line series with different colors + * - Date-based x-axis with formatted labels (DD/MM) + * - Responsive resizing using ResizeObserver + * - Interactive tooltips on hover + * - Customizable grid layout and colors + * - Legend at the bottom for series identification + * - Empty state when no data is available + * - Smooth rendering with requestAnimationFrame + */ +import { type FC, useEffect, useRef, useMemo } from 'react' +import ReactEcharts from 'echarts-for-react'; + +import { formatDateTime } from '@/utils/format'; +import Empty from '@/components/Empty' + +/** Base configuration for all line series */ +const SeriesConfig = { + type: 'line', + stack: 'Total', + symbol: 'circle', + symbolSize: 5, + showSymbol: true, + label: { + show: false, + position: 'top' + }, + emphasis: { + focus: 'series' + }, +} + +/** Default color palette for line series */ +const Colors = ['#171719', '#155EEF', '#FF5D34'] + +/** + * Data structure for chart data points + * + * @interface ChartData + * @property {string | number} date - Date value for x-axis (timestamp or date string) + * @property {string | number} [key: string] - Dynamic properties for different data series + */ +export interface ChartData { + date: string | number; + [key: string]: string | number; +} + +/** + * Props for the LineChart component + * + * @interface LineChartProps + * @property {ChartData[]} chartData - Array of data points with date and series values + * @property {Record} seriesList - Map of data keys to display names + * @property {string} [className] - Additional CSS classes for the container + * @property {number} [height] - Height of the chart in pixels + * @property {string[]} [colors] - Custom color array for line series + * @property {any} [grid] - ECharts grid configuration for chart positioning + */ +interface LineChartProps { + chartData: ChartData[]; + seriesList: Record; + className?: string; + height?: number; + colors?: string[]; + grid?: any; +} + +/** + * LineChart Component + * + * Renders a multi-series line chart with date-based x-axis. + * Automatically resizes when container dimensions change. + * + * @param {LineChartProps} props - Component props + * @returns {JSX.Element} Rendered line chart or empty state + * + * @example + * ```tsx + * + * ``` + */ +const LineChart: FC = ({ + chartData, + seriesList, + height, + colors = Colors, + grid = { + top: 7, + right: 16, + } +}) => { + /** Reference to the ECharts instance for programmatic control */ + const chartRef = useRef(null); + /** Flag to prevent multiple simultaneous resize operations */ + const resizeScheduledRef = useRef(false) + + /** + * Generate series configuration for each data series + * Maps seriesList keys to chart series with corresponding data and colors + * + * @returns {Array} Array of ECharts series configurations + */ + const getSeries = () => { + return Object.entries(seriesList).map(([key, name], index) => ({ + ...SeriesConfig, + name: name, + data: chartData.map(vo => vo[key as keyof ChartData]), + lineStyle: { + width: 2, + color: colors[index] + }, + })) + } + /** + * Memoized legend data to prevent unnecessary recalculations + * Formats series list for display in chart legend + */ + const formatSeriesList = useMemo(() => { + return Object.entries(seriesList).map(([_key, name]) => ({ + ...SeriesConfig, + name: name, + })) + }, [seriesList]) + + /** + * Set up responsive behavior using ResizeObserver + * Resizes chart when parent container dimensions change + */ + useEffect(() => { + const handleResize = () => { + if (chartRef.current && !resizeScheduledRef.current) { + resizeScheduledRef.current = true + requestAnimationFrame(() => { + chartRef.current?.getEchartsInstance().resize(); + resizeScheduledRef.current = false + }); + } + } + + const resizeObserver = new ResizeObserver(handleResize) + const chartElement = chartRef.current?.getEchartsInstance().getDom().parentElement + if (chartElement) { + resizeObserver.observe(chartElement) + } + + return () => { + resizeObserver.disconnect() + } + }, [chartData]) + + return ( +
+ {chartData && chartData.length > 0 + ? formatDateTime(item.date, 'DD/MM')), + boundaryGap: false, + axisLabel: { + color: '#5B6167', + fontFamily: 'PingFangSC, PingFang SC', + lineHeight: 17, + }, + axisLine: { + show: false, + lineStyle: { + color: '#EBEBEB', + } + }, + splitLine: { + show: false, + }, + axisTick: { + show: false + } + }, + yAxis: { + type: 'value', + axisLabel: { + color: '#A8A9AA', + fontFamily: 'PingFangSC, PingFang SC', + align: 'right', + lineHeight: 17, + }, + axisLine: { + lineStyle: { + color: '#EBEBEB', + } + }, + }, + series: getSeries() + }} + style={{ height: '100%', width: '100%', minWidth: '100%', boxSizing: 'border-box' }} + opts={{ renderer: 'canvas' }} + notMerge={true} + lazyUpdate={true} + /> + : + } +
+ ) +} + +export default LineChart diff --git a/web/src/components/Charts/PieChart.tsx b/web/src/components/Charts/PieChart.tsx new file mode 100644 index 00000000..b0c67549 --- /dev/null +++ b/web/src/components/Charts/PieChart.tsx @@ -0,0 +1,204 @@ +/* + * @Author: ZhaoYing + * @Date: 2026-02-10 13:35:45 + * @Last Modified by: ZhaoYing + * @Last Modified time: 2026-03-16 11:34:30 + */ +/* + * PieChart Component + * + * A reusable pie chart component built with ECharts that displays data distribution + * in a donut chart format with customizable colors and responsive behavior. + * + * Features: + * - Donut-style pie chart with percentage labels + * - Customizable color palette + * - Responsive resizing using ResizeObserver + * - Hover tooltips showing percentage values + * - Legend at the bottom with horizontal layout + * - Empty state when no data is available + * - Shadow effects for better visual depth + */ +import { type FC, useEffect, useRef } from 'react' +import ReactEcharts from 'echarts-for-react'; + +import Empty from '@/components/Empty' + +/** Default color palette for pie chart segments */ +const Colors = ['#171719', '#155EEF', '#4DA8FF', '#9C6FFF', '#ABEBFF', '#DFE4ED'] + +/** + * Data structure for each pie chart segment + * + * @interface ChartData + * @property {string} name - Label for the segment (displayed in legend) + * @property {number} value - Numeric value for the segment (determines size) + */ +export interface ChartData { + name: string; + value: number; +} + +/** + * Props for the PieChart component + * + * @interface PieChartProps + * @property {ChartData[]} chartData - Array of data points to display in the chart + * @property {number} [height=260] - Height of the chart in pixels + * @property {string[]} [colors] - Custom color array for chart segments (defaults to Colors) + */ +interface PieChartProps { + chartData: ChartData[]; + height?: number; + colors?: string[]; + itemGap?: number; + seriesWidth?: number; + seriesHeight?: number; + seriesLabel?: boolean; + seriesTop?: number; +} + +/** + * PieChart Component + * + * Renders a donut-style pie chart with percentage labels and legend. + * Automatically resizes when container dimensions change. + * + * @param {PieChartProps} props - Component props + * @returns {JSX.Element} Rendered pie chart or empty state + * + * @example + * ```tsx + * + * ``` + */ +const PieChart: FC = ({ + chartData, + height = 260, + seriesWidth = 182, + seriesHeight = 182, + colors = Colors, + itemGap = 48, + seriesLabel = true, + seriesTop = 24, +}) => { + /** Reference to the ECharts instance for programmatic control */ + const chartRef = useRef(null); + /** Flag to prevent multiple simultaneous resize operations */ + const resizeScheduledRef = useRef(false) + + /** + * Set up responsive behavior using ResizeObserver + * Resizes chart when parent container dimensions change + */ + useEffect(() => { + const handleResize = () => { + if (chartRef.current && !resizeScheduledRef.current) { + resizeScheduledRef.current = true + // Use requestAnimationFrame for smooth resize performance + requestAnimationFrame(() => { + chartRef.current?.getEchartsInstance().resize(); + resizeScheduledRef.current = false + }); + } + } + + const resizeObserver = new ResizeObserver(handleResize) + const chartElement = chartRef.current?.getEchartsInstance().getDom().parentElement + if (chartElement) { + resizeObserver.observe(chartElement) + } + + // Cleanup: disconnect observer when component unmounts + return () => { + resizeObserver.disconnect() + } + }, [chartData]) + + return ( +
+ {chartData && chartData.length > 0 + ? + : + } +
+ ) +} + +export default PieChart diff --git a/web/src/components/Chat/ChatContent.tsx b/web/src/components/Chat/ChatContent.tsx index c7d3cffb..a1439746 100644 --- a/web/src/components/Chat/ChatContent.tsx +++ b/web/src/components/Chat/ChatContent.tsx @@ -2,7 +2,7 @@ * @Author: ZhaoYing * @Date: 2025-12-10 16:46:17 * @Last Modified by: ZhaoYing - * @Last Modified time: 2026-03-19 19:45:40 + * @Last Modified time: 2026-03-23 18:24:33 */ import { type FC, useRef, useEffect, useState } from 'react' import clsx from 'clsx' @@ -38,7 +38,8 @@ const ChatContent: FC = ({ const audioRef = useRef(null) const [playingIndex, setPlayingIndex] = useState(null) - const handlePlay = (index: number, audio_url: string) => { + const handlePlay = (index: number, audio_url: string, audio_status?: string) => { + if (audio_status !== 'completed' && !audio_status) return if (playingIndex === index) { audioRef.current?.pause() setPlayingIndex(null) @@ -114,7 +115,7 @@ const ChatContent: FC = ({ : <> {/* Top label (such as timestamp, username, etc.) */} {labelPosition === 'top' && -
+
{labelFormat(item)}
} @@ -162,14 +163,17 @@ const ChatContent: FC = ({ })} } {/* Message bubble */} -
+ {item.status &&
} {item.subContent && renderRuntime && renderRuntime(item, index)} {/* Render message content using Markdown component */} @@ -177,11 +181,16 @@ const ChatContent: FC = ({ {item.meta_data?.audio_url && <> - {playingIndex !== index - ? handlePlay(index, item.meta_data?.audio_url!)} /> + {playingIndex !== index && item.meta_data?.audio_status === 'pending' + ? + : playingIndex !== index + ? handlePlay(index, item.meta_data?.audio_url!, item.meta_data?.audio_status)} /> :
handlePlay(index, item.meta_data?.audio_url!)} + onClick={() => handlePlay(index, item.meta_data?.audio_url!, item.meta_data?.audio_status)} /> } @@ -189,7 +198,7 @@ const ChatContent: FC = ({
{/* Bottom label (such as timestamp, username, etc.) */} {labelPosition === 'bottom' && -
+
{labelFormat(item)}
} diff --git a/web/src/components/Chat/ChatInput.tsx b/web/src/components/Chat/ChatInput.tsx index aa0dd2f6..6495ff06 100644 --- a/web/src/components/Chat/ChatInput.tsx +++ b/web/src/components/Chat/ChatInput.tsx @@ -2,15 +2,12 @@ * @Author: ZhaoYing * @Date: 2025-12-10 16:46:14 * @Last Modified by: ZhaoYing - * @Last Modified time: 2026-03-19 18:44:51 + * @Last Modified time: 2026-03-23 17:46:25 */ -import { type FC, useEffect, useMemo } from 'react' -import { Flex, Input, Form, Spin } from 'antd' +import { type FC, useEffect, useMemo, useState } from 'react' +import { Flex, Input, Spin } from 'antd' import clsx from 'clsx' -import SendIcon from '@/assets/images/conversation/send.svg' -import SendDisabledIcon from '@/assets/images/conversation/sendDisabled.svg' -import LoadingIcon from '@/assets/images/conversation/loading.svg' import type { ChatInputProps } from './types' /** @@ -27,37 +24,27 @@ const ChatInput: FC = ({ className = '', onChange }) => { - const [form] = Form.useForm() - const values = Form.useWatch([], form) - // Monitor form value changes to control send button state + const [inputValue, setInputValue] = useState('') + const [isFocus, setIsFocus] = useState(false) - // Clear form when external message is empty + // Clear input when external message is cleared useEffect(() => { - if (!message) { - form.setFieldsValue({ - message: undefined, - }) - } - }, [form, message]) - + if (!message) setInputValue('') + }, [message]) + // Clear input when loading useEffect(() => { - if (loading) { - form.setFieldsValue({ - message: undefined, - }) - } + if (loading) setInputValue('') }, [loading]) - const handleDelete = (file: any) => { fileChange?.(fileList?.filter(item => { return item.thumbUrl && file.thumbUrl ? item.thumbUrl !== file.thumbUrl : item.url && file.url ? item.url !== file.url - : item.uid !== file.uid + : item.uid !== file.uid }) || []) } - // Convert file object to preview URL + const previewFileList = useMemo(() => { return fileList?.map(file => ({ ...file, @@ -66,24 +53,27 @@ const ChatInput: FC = ({ }, [fileList]) const handleSend = () => { - if (loading || !values || !values?.message || values?.message?.trim() === '') return - onSend(values.message) + if (loading || !inputValue || inputValue.trim() === '') return + onSend(inputValue) } - console.log('previewFileList', previewFileList) + const canSend = !loading && inputValue.trim() !== '' return (
- - {previewFileList.length > 0 &&
+ + {previewFileList.length > 0 &&
+ {previewFileList.map((file) => { - if (file.type.includes('image')) { + if (file.type?.includes('image')) { return ( -
- {file.name} + {file.name}
handleDelete(file)} @@ -92,30 +82,30 @@ const ChatInput: FC = ({ ) } - if (file.type.includes('video')) { + if (file.type?.includes('video')) { return ( -
-
) } - if (file.type.includes('audio')) { + if (file.type?.includes('audio')) { return ( -
-
@@ -124,68 +114,86 @@ const ChatInput: FC = ({ } return ( -
- {file.type.includes('pdf') - ?
- : (file.type.includes('excel') || file.type.includes('spreadsheetml.sheet') || file.type.includes('csv')) - ?
- : (file.type.includes('doc') || file.type.includes('docx') || file.type.includes('word') || file.type.includes('wordprocessingml.document')) - ?
- : null - } +
{file.name}
-
{file.type} · {file.size}
+
{file.type?.split('/')[file.type?.split('/').length - 1]} · {file.size}
handleDelete(file)} >
-
+
) })} -
} - {/* Message input form */} -
- - onChange?.(e.target.value)} - onKeyDown={(e) => { - // Enter to send, Shift+Enter for new line - if (e.key === 'Enter' && !e.shiftKey && (e.target as HTMLTextAreaElement).value?.trim() !== '' && !loading) { - e.preventDefault(); - handleSend(); - } - }} - /> - -
+ +
} + {/* Message input area */} + { + setInputValue(e.target.value) + onChange?.(e.target.value) + }} + onKeyDown={(e) => { + // Enter to send, Shift+Enter for new line + if (e.key === 'Enter' && !e.shiftKey && (e.target as HTMLTextAreaElement).value?.trim() !== '' && !loading) { + e.preventDefault(); + handleSend(); + } + }} + onFocus={() => setIsFocus(true)} + onBlur={() => setIsFocus(false)} + /> {/* Bottom action area */} - - {/* Child component content (such as buttons) */} +
{children}
-
- {/* Send button - display different icons based on state */} - {loading - ? - : !values || !values?.message || values?.message?.trim() === '' - ? - : - } -
+ +
+
diff --git a/web/src/components/Chat/ChatToolbar.tsx b/web/src/components/Chat/ChatToolbar.tsx index 936e7e63..3fbc0e3a 100644 --- a/web/src/components/Chat/ChatToolbar.tsx +++ b/web/src/components/Chat/ChatToolbar.tsx @@ -2,12 +2,11 @@ * @Author: ZhaoYing * @Date: 2026-03-17 14:22:25 * @Last Modified by: ZhaoYing - * @Last Modified time: 2026-03-19 18:59:37 + * @Last Modified time: 2026-03-23 17:42:38 */ // Toolbar component for chat input area, supporting file upload, audio recording, and variable configuration import { useRef, forwardRef, useImperativeHandle, type ReactNode, useEffect } from 'react' -import { Flex, Dropdown, Divider, App, Form, type MenuProps } from 'antd' -import { SettingOutlined } from '@ant-design/icons' +import { Flex, Dropdown, Divider, App, Form, type MenuProps, Tooltip } from 'antd' import { useTranslation } from 'react-i18next' import clsx from 'clsx' @@ -19,6 +18,7 @@ import type { FeaturesConfigForm } from '@/views/ApplicationConfig/types' import type { UploadFileListModalRef } from '@/views/Conversation/types' import type { VariableConfigModalRef } from '@/views/Workflow/types' import type { Variable } from '@/views/Workflow/components/Properties/VariableList/types' +import { getFileInfoByUrl } from '@/api/fileStorage'; // Exposed methods via ref for parent components to access/set form state export interface ChatToolbarRef { @@ -31,7 +31,8 @@ export interface ChatToolbarRef { // Props for configuring toolbar features, upload settings, and event callbacks export interface ChatToolbarProps { features: FeaturesConfigForm - extra?: ReactNode + leftExtra?: ReactNode; + rightExtra?: ReactNode uploadAction?: string uploadRequestConfig?: { data?: Record @@ -52,7 +53,8 @@ interface FormValues { const max_file_count = 1; const ChatToolbar = forwardRef(({ features, - extra, + leftExtra, + rightExtra, uploadAction, uploadRequestConfig, onFilesChange, @@ -96,8 +98,6 @@ const ChatToolbar = forwardRef(({ } form.setFieldValue('files', [...lastFiles]) onFilesChange?.([...lastFiles]) - - console.log('lastFiles', lastFiles) } // Append recorded audio file to the file list and notify parent @@ -111,9 +111,33 @@ const ChatToolbar = forwardRef(({ // Merge a batch of files (e.g. from remote URL modal) into the file list const addFileList = (list?: any[]) => { if (!list?.length) return - const files = [...(queryValues?.files || []), ...list] + const uploadingList = list.map(f => ({ ...f, status: 'uploading' })) + const files = [...(queryValues?.files || []), ...uploadingList] form.setFieldValue('files', files) onFilesChange?.(files) + + uploadingList.forEach(file => { + getFileInfoByUrl(file.url) + .then((res) => { + const { file_name, file_size, content_type } = res as { file_name: string; file_size: number; content_type: string; } + const current: any[] = form.getFieldValue('files') || [] + const updated = current.map(f => f.uid === file.uid ? { + ...f, + status: 'done', + name: file_name, + size: file_size, + type: content_type, + } : f) + form.setFieldValue('files', updated) + onFilesChange?.(updated) + }) + .catch(() => { + const current: any[] = form.getFieldValue('files') || [] + const updated = current.map(f => f.uid === file.uid ? { ...f, status: 'error' } : f) + form.setFieldValue('files', updated) + onFilesChange?.(updated) + }) + }) } // Persist variable values from the config modal and notify parent @@ -163,28 +187,34 @@ const ChatToolbar = forwardRef(({ return (
- +