diff --git a/web/.eslintrc.js b/web/.eslintrc.js index 8f9843ed6..73f6aff9e 100644 --- a/web/.eslintrc.js +++ b/web/.eslintrc.js @@ -1,5 +1,43 @@ // .eslintrc.js module.exports = { - // Umi ้กน็›ฎ extends: [require.resolve('umi/eslint'), 'plugin:react-hooks/recommended'], + plugins: ['check-file'], + rules: { + '@typescript-eslint/no-use-before-define': [ + 'warn', + { + functions: false, + variables: true, + }, + ], + 'check-file/filename-naming-convention': [ + 'error', + { + '**/*.{jsx,tsx}': 'KEBAB_CASE', + '**/*.{js,ts}': 'KEBAB_CASE', + }, + ], + 'check-file/folder-naming-convention': [ + 'error', + { + 'src/**/': 'KEBAB_CASE', + 'mocks/*/': 'KEBAB_CASE', + }, + ], + 'react/no-unescaped-entities': [ + 'warn', + { + forbid: [ + { + char: "'", + alternatives: [''', '''], + }, + { + char: '"', + alternatives: ['"', '"'], + }, + ], + }, + ], + }, }; diff --git a/web/.umirc.ts b/web/.umirc.ts index dab80fcb2..5b697cf99 100644 --- a/web/.umirc.ts +++ b/web/.umirc.ts @@ -3,6 +3,7 @@ import TerserPlugin from 'terser-webpack-plugin'; import { defineConfig } from 'umi'; import { appName } from './src/conf.json'; import routes from './src/routes'; +const ESLintPlugin = require('eslint-webpack-plugin'); export default defineConfig({ title: appName, @@ -52,6 +53,15 @@ export default defineConfig({ memo.optimization.minimizer('terser').use(TerserPlugin); // Fixed the issue that the page displayed an error after packaging lexical with terser + memo.plugin('eslint').use(ESLintPlugin, [ + { + extensions: ['js', 'ts', 'tsx'], + failOnError: true, + exclude: ['**/node_modules/**', '**/mfsu**', '**/mfsu-virtual-entry**'], + files: ['src/**/*.{js,ts,tsx}'], + }, + ]); + return memo; }, tailwindcss: {}, diff --git a/web/package-lock.json b/web/package-lock.json index 0df1d78dd..6a643d64b 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -121,6 +121,8 @@ "@umijs/plugins": "^4.1.0", "@welldone-software/why-did-you-render": "^8.0.3", "cross-env": "^7.0.3", + "eslint-plugin-check-file": "^2.8.0", + "eslint-webpack-plugin": "^4.1.0", "html-loader": "^5.1.0", "husky": "^9.0.11", "jest": "^29.7.0", @@ -9147,9 +9149,10 @@ } }, "node_modules/@types/eslint": { - "version": "8.56.1", - "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.1.tgz", - "integrity": "sha512-18PLWRzhy9glDQp3+wOgfLYRWlhgX0azxgJ63rdpoUHyrC9z0f5CkFburjQx4uD7ZCruw85ZtMt6K+L+R8fLJQ==", + "version": "9.6.1", + "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "license": "MIT", "peer": true, "dependencies": { "@types/estree": "*", @@ -16334,6 +16337,27 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/eslint-plugin-check-file": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-check-file/-/eslint-plugin-check-file-2.8.0.tgz", + "integrity": "sha512-FvvafMTam2WJYH9uj+FuMxQ1y+7jY3Z6P9T4j2214cH0FBxNzTcmeCiGTj1Lxp3mI6kbbgsXvmgewvf+llKYyw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "is-glob": "^4.0.3", + "micromatch": "^4.0.5" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "ko_fi", + "url": "https://ko-fi.com/huanluo" + }, + "peerDependencies": { + "eslint": ">=7.28.0" + } + }, "node_modules/eslint-plugin-jest": { "version": "27.2.3", "resolved": "https://registry.npmmirror.com/eslint-plugin-jest/-/eslint-plugin-jest-27.2.3.tgz", @@ -16437,6 +16461,141 @@ "node": ">=10" } }, + "node_modules/eslint-webpack-plugin": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/eslint-webpack-plugin/-/eslint-webpack-plugin-4.1.0.tgz", + "integrity": "sha512-C3wAG2jyockIhN0YRLuKieKj2nx/gnE/VHmoHemD5ifnAtY6ZU+jNPfzPoX4Zd6RIbUyWTiZUh/ofUlBhoAX7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "^8.56.5", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.2.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^8.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/@types/eslint": { + "version": "8.56.12", + "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.12.tgz", + "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -17222,9 +17381,10 @@ } }, "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "license": "ISC", "peer": true }, "node_modules/flatten": { @@ -24121,9 +24281,10 @@ "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==" }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" diff --git a/web/package.json b/web/package.json index e9ffae5ab..2ef31b171 100644 --- a/web/package.json +++ b/web/package.json @@ -132,6 +132,8 @@ "@umijs/plugins": "^4.1.0", "@welldone-software/why-did-you-render": "^8.0.3", "cross-env": "^7.0.3", + "eslint-plugin-check-file": "^2.8.0", + "eslint-webpack-plugin": "^4.1.0", "html-loader": "^5.1.0", "husky": "^9.0.11", "jest": "^29.7.0", diff --git a/web/src/assets/icon/Icon.tsx b/web/src/assets/icon/next-icon.tsx similarity index 100% rename from web/src/assets/icon/Icon.tsx rename to web/src/assets/icon/next-icon.tsx diff --git a/web/src/components/chunk-method-dialog/index.tsx b/web/src/components/chunk-method-dialog/index.tsx index 404ffb223..a5613787f 100644 --- a/web/src/components/chunk-method-dialog/index.tsx +++ b/web/src/components/chunk-method-dialog/index.tsx @@ -80,7 +80,6 @@ export function ChunkMethodDialog({ hideModal, onOk, parserId, - documentId, documentExtension, visible, parserConfig, diff --git a/web/src/components/editable-cell.tsx b/web/src/components/editable-cell.tsx index c8e53275b..f2ad85708 100644 --- a/web/src/components/editable-cell.tsx +++ b/web/src/components/editable-cell.tsx @@ -1,4 +1,5 @@ import { Form, FormInstance, Input, InputRef, Typography } from 'antd'; +import { omit } from 'lodash'; import React, { useContext, useEffect, useRef, useState } from 'react'; const EditableContext = React.createContext | null>(null); @@ -15,15 +16,12 @@ interface Item { address: string; } -export const EditableRow: React.FC = ({ - index, - ...props -}) => { +export const EditableRow: React.FC = ({ ...props }) => { const [form] = Form.useForm(); return (
- +
); diff --git a/web/src/components/highlight-markdown/index.tsx b/web/src/components/highlight-markdown/index.tsx index e7b266dc3..8925ae238 100644 --- a/web/src/components/highlight-markdown/index.tsx +++ b/web/src/components/highlight-markdown/index.tsx @@ -31,7 +31,7 @@ const HightLightMarkdown = ({ components={ { code(props: any) { - const { children, className, node, ...rest } = props; + const { children, className, ...rest } = props; const match = /language-(\w+)/.exec(className || ''); return match ? ( renderReference(children), code(props: any) { - const { children, className, node, ...rest } = props; + const { children, className, ...rest } = props; + const restProps = omit(rest, 'node'); const match = /language-(\w+)/.exec(className || ''); return match ? ( ) : ( - + {children} ); diff --git a/web/src/components/next-message-item/group-button.tsx b/web/src/components/next-message-item/group-button.tsx index 06c528fda..8a6875edd 100644 --- a/web/src/components/next-message-item/group-button.tsx +++ b/web/src/components/next-message-item/group-button.tsx @@ -1,4 +1,4 @@ -import { PromptIcon } from '@/assets/icon/Icon'; +import { PromptIcon } from '@/assets/icon/next-icon'; import CopyToClipboard from '@/components/copy-to-clipboard'; import { useSetModalState } from '@/hooks/common-hooks'; import { IRemoveMessageById } from '@/hooks/logic-hooks'; diff --git a/web/src/components/next-message-item/index.tsx b/web/src/components/next-message-item/index.tsx index 0cba41d4e..27c9583d1 100644 --- a/web/src/components/next-message-item/index.tsx +++ b/web/src/components/next-message-item/index.tsx @@ -17,7 +17,7 @@ import { IRegenerateMessage, IRemoveMessageById } from '@/hooks/logic-hooks'; import { INodeEvent, MessageEventType } from '@/hooks/use-send-message'; import { cn } from '@/lib/utils'; import { AgentChatContext } from '@/pages/agent/context'; -import { WorkFlowTimeline } from '@/pages/agent/log-sheet/workFlowTimeline'; +import { WorkFlowTimeline } from '@/pages/agent/log-sheet/workflow-timeline'; import { IMessage } from '@/pages/chat/interface'; import { isEmpty } from 'lodash'; import { Atom, ChevronDown, ChevronUp } from 'lucide-react'; diff --git a/web/src/components/originui/timeline.tsx b/web/src/components/originui/timeline.tsx index 8b4bbea42..befe5272e 100644 --- a/web/src/components/originui/timeline.tsx +++ b/web/src/components/originui/timeline.tsx @@ -124,7 +124,7 @@ interface TimelineIndicatorProps extends React.HTMLAttributes { } function TimelineIndicator({ - asChild = false, + // asChild = false, className, children, ...props diff --git a/web/src/components/password-input/index.tsx b/web/src/components/password-input/index.tsx index 8c764212b..515e9d4c3 100644 --- a/web/src/components/password-input/index.tsx +++ b/web/src/components/password-input/index.tsx @@ -1,7 +1,6 @@ import { Input } from '@/components/originui/input'; -import { useTranslate } from '@/hooks/common-hooks'; import { EyeIcon, EyeOffIcon } from 'lucide-react'; -import { ChangeEvent, LegacyRef, forwardRef, useId, useState } from 'react'; +import { ChangeEvent, forwardRef, useId, useState } from 'react'; type PropType = { name: string; @@ -10,17 +9,12 @@ type PropType = { onChange: (event: ChangeEvent) => void; }; -function PasswordInput( - props: PropType, - ref: LegacyRef | undefined, -) { +function PasswordInput(props: PropType) { const id = useId(); const [isVisible, setIsVisible] = useState(false); const toggleVisibility = () => setIsVisible((prevState) => !prevState); - const { t } = useTranslate('setting'); - return (
{/* */} diff --git a/web/src/components/ui/command.tsx b/web/src/components/ui/command.tsx index f92a07a86..def05beaf 100644 --- a/web/src/components/ui/command.tsx +++ b/web/src/components/ui/command.tsx @@ -39,7 +39,7 @@ const CommandInput = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( -
+
void; @@ -36,7 +36,7 @@ type SidebarContext = { toggleSidebar: () => void; }; -const SidebarContext = React.createContext(null); +const SidebarContext = React.createContext(null); function useSidebar() { const context = React.useContext(SidebarContext); @@ -116,7 +116,7 @@ const SidebarProvider = React.forwardRef< // This makes it easier to style the sidebar with Tailwind classes. const state = open ? 'expanded' : 'collapsed'; - const contextValue = React.useMemo( + const contextValue = React.useMemo( () => ({ state, open, @@ -580,11 +580,8 @@ const SidebarMenuButton = React.forwardRef< return button; } - if (typeof tooltip === 'string') { - tooltip = { - children: tooltip, - }; - } + const tooltipContent = + typeof tooltip === 'string' ? { children: tooltip } : tooltip; return ( @@ -593,7 +590,7 @@ const SidebarMenuButton = React.forwardRef< side="right" align="center" hidden={state !== 'collapsed' || isMobile} - {...tooltip} + {...tooltipContent} /> ); diff --git a/web/src/hooks/logic-hooks.ts b/web/src/hooks/logic-hooks.ts index 4fe838ac6..c8decba80 100644 --- a/web/src/hooks/logic-hooks.ts +++ b/web/src/hooks/logic-hooks.ts @@ -27,7 +27,7 @@ import { useTranslate } from './common-hooks'; import { useSetPaginationParams } from './route-hook'; import { useFetchTenantInfo, useSaveSetting } from './user-setting-hooks'; -function usePrevious(value: T) { +export function usePrevious(value: T) { const ref = useRef(); useEffect(() => { ref.current = value; diff --git a/web/src/hooks/use-agent-request.ts b/web/src/hooks/use-agent-request.ts index 184383f1e..51d7452d5 100644 --- a/web/src/hooks/use-agent-request.ts +++ b/web/src/hooks/use-agent-request.ts @@ -368,16 +368,7 @@ export const useUploadCanvasFileWithProgress = ( { url: api.uploadAgentFile(identifier || id), data: formData, - onUploadProgress: ({ - loaded, - total, - progress, - bytes, - estimated, - rate, - upload, - lengthComputable, - }) => { + onUploadProgress: ({ progress }) => { files.forEach((file) => { onProgress(file, (progress || 0) * 100); }); diff --git a/web/src/hooks/use-chat-request.ts b/web/src/hooks/use-chat-request.ts index a0147fc16..157eb7607 100644 --- a/web/src/hooks/use-chat-request.ts +++ b/web/src/hooks/use-chat-request.ts @@ -5,7 +5,7 @@ import { IAskRequestBody } from '@/interfaces/request/chat'; import { IClientConversation } from '@/pages/next-chats/chat/interface'; import { useGetSharedChatSearchParams } from '@/pages/next-chats/hooks/use-send-shared-message'; import { isConversationIdExist } from '@/pages/next-chats/utils'; -import chatService from '@/services/next-chat-service '; +import chatService from '@/services/next-chat-service'; import { buildMessageListWithUuid, getConversationId } from '@/utils/chat'; import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { useDebounce } from 'ahooks'; diff --git a/web/src/layouts/next-header.tsx b/web/src/layouts/next-header.tsx index 5178ab361..c798d6e99 100644 --- a/web/src/layouts/next-header.tsx +++ b/web/src/layouts/next-header.tsx @@ -13,8 +13,7 @@ import { LanguageList, LanguageMap, ThemeEnum } from '@/constants/common'; import { useChangeLanguage } from '@/hooks/logic-hooks'; import { useNavigatePage } from '@/hooks/logic-hooks/navigate-hooks'; import { useNavigateWithFromState } from '@/hooks/route-hook'; -import { useFetchUserInfo, useListTenant } from '@/hooks/user-setting-hooks'; -import { TenantRole } from '@/pages/user-setting/constants'; +import { useFetchUserInfo } from '@/hooks/user-setting-hooks'; import { Routes } from '@/routes'; import { camelCase } from 'lodash'; import { @@ -55,11 +54,11 @@ export function Header() { changeLanguage(key); }; - const { data } = useListTenant(); + // const { data } = useListTenant(); - const showBell = useMemo(() => { - return data.some((x) => x.role === TenantRole.Invite); - }, [data]); + // const showBell = useMemo(() => { + // return data.some((x) => x.role === TenantRole.Invite); + // }, [data]); const items = LanguageList.map((x) => ({ key: x, @@ -70,9 +69,9 @@ export function Header() { setTheme(theme === ThemeEnum.Dark ? ThemeEnum.Light : ThemeEnum.Dark); }, [setTheme, theme]); - const handleBellClick = useCallback(() => { - navigate('/user-setting/team'); - }, [navigate]); + // const handleBellClick = useCallback(() => { + // navigate('/user-setting/team'); + // }, [navigate]); const tagsData = useMemo( () => [ diff --git a/web/src/pages/add-knowledge/components/knowledge-file/hooks.ts b/web/src/pages/add-knowledge/components/knowledge-file/hooks.ts index e7ac6f11b..49eccb7eb 100644 --- a/web/src/pages/add-knowledge/components/knowledge-file/hooks.ts +++ b/web/src/pages/add-knowledge/components/knowledge-file/hooks.ts @@ -147,7 +147,7 @@ export const useHandleUploadDocument = () => { const [fileList, setFileList] = useState([]); const [uploadProgress, setUploadProgress] = useState(0); const { uploadDocument, loading } = useUploadNextDocument(); - const { runDocumentByIds, loading: _ } = useRunNextDocument(); + const { runDocumentByIds } = useRunNextDocument(); const onDocumentUploadOk = useCallback( async ({ diff --git a/web/src/pages/add-knowledge/components/knowledge-file/index.tsx b/web/src/pages/add-knowledge/components/knowledge-file/index.tsx index c0d9a7ee1..2787ce476 100644 --- a/web/src/pages/add-knowledge/components/knowledge-file/index.tsx +++ b/web/src/pages/add-knowledge/components/knowledge-file/index.tsx @@ -168,7 +168,7 @@ const KnowledgeFile = () => { ), dataIndex: 'run', key: 'run', - filters: Object.entries(RunningStatus).map(([key, value]) => ({ + filters: Object.values(RunningStatus).map((value) => ({ text: t(`runningStatus${value}`), value: value, })), diff --git a/web/src/pages/add-knowledge/components/knowledge-sidebar/index.tsx b/web/src/pages/add-knowledge/components/knowledge-sidebar/index.tsx index 83bc3c9f0..421a28653 100644 --- a/web/src/pages/add-knowledge/components/knowledge-sidebar/index.tsx +++ b/web/src/pages/add-knowledge/components/knowledge-sidebar/index.tsx @@ -27,7 +27,6 @@ const KnowledgeSidebar = () => { const { knowledgeId } = useGetKnowledgeSearchParams(); const [windowWidth, setWindowWidth] = useState(getWidth()); - const [collapsed, setCollapsed] = useState(false); const { t } = useTranslation(); const { data: knowledgeDetails } = useFetchKnowledgeBaseConfiguration(); @@ -92,14 +91,6 @@ const KnowledgeSidebar = () => { return list; }, [data, getItem]); - useEffect(() => { - if (windowWidth.width > 957) { - setCollapsed(false); - } else { - setCollapsed(true); - } - }, [windowWidth.width]); - useEffect(() => { const widthSize = () => { const width = getWidth(); diff --git a/web/src/pages/agent/canvas/node/retrieval-node.tsx b/web/src/pages/agent/canvas/node/retrieval-node.tsx index bd0885d6f..5703ec1f4 100644 --- a/web/src/pages/agent/canvas/node/retrieval-node.tsx +++ b/web/src/pages/agent/canvas/node/retrieval-node.tsx @@ -4,7 +4,7 @@ import { IRetrievalNode } from '@/interfaces/database/flow'; import { NodeProps, Position } from '@xyflow/react'; import classNames from 'classnames'; import { get } from 'lodash'; -import { memo, useMemo } from 'react'; +import { memo } from 'react'; import { NodeHandleId } from '../../constant'; import { useGetVariableLabelByValue } from '../../hooks/use-get-begin-query'; import { CommonHandle } from './handle'; @@ -21,18 +21,7 @@ function InnerRetrievalNode({ selected, }: NodeProps) { const knowledgeBaseIds: string[] = get(data, 'form.kb_ids', []); - console.log('๐Ÿš€ ~ InnerRetrievalNode ~ knowledgeBaseIds:', knowledgeBaseIds); const { list: knowledgeList } = useFetchKnowledgeList(true); - const knowledgeBases = useMemo(() => { - return knowledgeBaseIds.map((x) => { - const item = knowledgeList.find((y) => x === y.id); - return { - name: item?.name, - avatar: item?.avatar, - id: x, - }; - }); - }, [knowledgeList, knowledgeBaseIds]); const getLabel = useGetVariableLabelByValue(id); diff --git a/web/src/pages/agent/form/categorize-form/use-values.ts b/web/src/pages/agent/form/categorize-form/use-values.ts index a4c0e80aa..a920ec4cc 100644 --- a/web/src/pages/agent/form/categorize-form/use-values.ts +++ b/web/src/pages/agent/form/categorize-form/use-values.ts @@ -1,8 +1,7 @@ import { ModelVariableType } from '@/constants/knowledge'; import { RAGFlowNodeType } from '@/interfaces/database/flow'; -import { get, isEmpty, isPlainObject } from 'lodash'; +import { isEmpty, isPlainObject } from 'lodash'; import { useMemo } from 'react'; -import { buildCategorizeListFromObject } from '../../utils'; const defaultValues = { parameter: ModelVariableType.Precise, @@ -21,9 +20,6 @@ export function useValues(node?: RAGFlowNodeType) { if (isEmpty(formData)) { return defaultValues; } - const items = buildCategorizeListFromObject( - get(node, 'data.form.category_description', {}), - ); if (isPlainObject(formData)) { // const nextValues = { // ...omit(formData, 'category_description'), diff --git a/web/src/pages/agent/form/components/next-dynamic-input-variable.tsx b/web/src/pages/agent/form/components/next-dynamic-input-variable.tsx index 341b49f37..8b4cbd8a9 100644 --- a/web/src/pages/agent/form/components/next-dynamic-input-variable.tsx +++ b/web/src/pages/agent/form/components/next-dynamic-input-variable.tsx @@ -1,6 +1,6 @@ 'use client'; -import { SideDown } from '@/assets/icon/Icon'; +import { SideDown } from '@/assets/icon/next-icon'; import { Button } from '@/components/ui/button'; import { Collapsible, diff --git a/web/src/pages/agent/form/relevant-form/hooks.ts b/web/src/pages/agent/form/relevant-form/hooks.ts index 6f31550fb..413a0ac38 100644 --- a/web/src/pages/agent/form/relevant-form/hooks.ts +++ b/web/src/pages/agent/form/relevant-form/hooks.ts @@ -1,4 +1,3 @@ -import { Edge } from '@xyflow/react'; import pick from 'lodash/pick'; import { useCallback, useEffect } from 'react'; import { IOperatorForm } from '../../interface'; @@ -21,16 +20,12 @@ export const useBuildRelevantOptions = () => { return buildRelevantOptions; }; -const getTargetOfEdge = (edges: Edge[], sourceHandle: string) => - edges.find((x) => x.sourceHandle === sourceHandle)?.target; - /** * monitor changes in the connection and synchronize the target to the yes and no fields of the form * similar to the categorize-form's useHandleFormValuesChange method * @param param0 */ export const useWatchConnectionChanges = ({ nodeId, form }: IOperatorForm) => { - const edges = useGraphStore((state) => state.edges); const getNode = useGraphStore((state) => state.getNode); const node = getNode(nodeId); @@ -40,13 +35,6 @@ export const useWatchConnectionChanges = ({ nodeId, form }: IOperatorForm) => { } }, [node, form]); - const watchConnectionChanges = useCallback(() => { - const edgeList = edges.filter((x) => x.source === nodeId); - const yes = getTargetOfEdge(edgeList, 'yes'); - const no = getTargetOfEdge(edgeList, 'no'); - form?.setFieldsValue({ yes, no }); - }, [edges, nodeId, form]); - useEffect(() => { watchFormChanges(); }, [watchFormChanges]); diff --git a/web/src/pages/agent/log-sheet/index.tsx b/web/src/pages/agent/log-sheet/index.tsx index deb9b3aa3..cbe63ece7 100644 --- a/web/src/pages/agent/log-sheet/index.tsx +++ b/web/src/pages/agent/log-sheet/index.tsx @@ -8,7 +8,7 @@ import { IModalProps } from '@/interfaces/common'; import { NotebookText } from 'lucide-react'; import 'react18-json-view/src/style.css'; import { useCacheChatLog } from '../hooks/use-cache-chat-log'; -import { WorkFlowTimeline } from './workFlowTimeline'; +import { WorkFlowTimeline } from './workflow-timeline'; type LogSheetProps = IModalProps & Pick< diff --git a/web/src/pages/agent/log-sheet/toolTimelineItem.tsx b/web/src/pages/agent/log-sheet/tool-timeline-item.tsx similarity index 99% rename from web/src/pages/agent/log-sheet/toolTimelineItem.tsx rename to web/src/pages/agent/log-sheet/tool-timeline-item.tsx index 8408e43f1..0ee59cf5b 100644 --- a/web/src/pages/agent/log-sheet/toolTimelineItem.tsx +++ b/web/src/pages/agent/log-sheet/tool-timeline-item.tsx @@ -19,7 +19,7 @@ import { JsonViewer, toLowerCaseStringAndDeleteChar, typeMap, -} from './workFlowTimeline'; +} from './workflow-timeline'; type IToolIcon = | Operator.ArXiv | Operator.GitHub diff --git a/web/src/pages/agent/log-sheet/workFlowTimeline.tsx b/web/src/pages/agent/log-sheet/workflow-timeline.tsx similarity index 99% rename from web/src/pages/agent/log-sheet/workFlowTimeline.tsx rename to web/src/pages/agent/log-sheet/workflow-timeline.tsx index f7ec1c3c4..6e6e8050f 100644 --- a/web/src/pages/agent/log-sheet/workFlowTimeline.tsx +++ b/web/src/pages/agent/log-sheet/workflow-timeline.tsx @@ -28,7 +28,7 @@ import JsonView from 'react18-json-view'; import { Operator } from '../constant'; import { useCacheChatLog } from '../hooks/use-cache-chat-log'; import OperatorIcon from '../operator-icon'; -import ToolTimelineItem from './toolTimelineItem'; +import ToolTimelineItem from './tool-timeline-item'; type LogFlowTimelineProps = Pick< ReturnType, 'currentEventListWithoutMessage' | 'currentMessageId' diff --git a/web/src/pages/chat/chat-configuration-modal/editable-cell.tsx b/web/src/pages/chat/chat-configuration-modal/editable-cell.tsx index f8b65cf9f..712473fbd 100644 --- a/web/src/pages/chat/chat-configuration-modal/editable-cell.tsx +++ b/web/src/pages/chat/chat-configuration-modal/editable-cell.tsx @@ -1,4 +1,5 @@ import { Form, FormInstance, Input, InputRef } from 'antd'; +import { omit } from 'lodash'; import React, { useContext, useEffect, useRef, useState } from 'react'; const EditableContext = React.createContext | null>(null); @@ -14,15 +15,12 @@ interface Item { address: string; } -export const EditableRow: React.FC = ({ - index, - ...props -}) => { +export const EditableRow: React.FC = ({ ...props }) => { const [form] = Form.useForm(); return (
- +
); diff --git a/web/src/pages/chat/markdown-content/index.tsx b/web/src/pages/chat/markdown-content/index.tsx index 2d6393d42..2da6a577f 100644 --- a/web/src/pages/chat/markdown-content/index.tsx +++ b/web/src/pages/chat/markdown-content/index.tsx @@ -28,6 +28,7 @@ import { import { currentReg, replaceTextByOldReg } from '../utils'; import classNames from 'classnames'; +import { omit } from 'lodash'; import { pipe } from 'lodash/fp'; import styles from './index.less'; @@ -247,11 +248,12 @@ const MarkdownContent = ({ 'custom-typography': ({ children }: { children: string }) => renderReference(children), code(props: any) { - const { children, className, node, ...rest } = props; + const { children, className, ...rest } = props; + const restProps = omit(rest, 'node'); const match = /language-(\w+)/.exec(className || ''); return match ? ( ) : ( - + {children} ); diff --git a/web/src/pages/chat/shared-hooks.ts b/web/src/pages/chat/shared-hooks.ts index 03906b15b..be5d49ffe 100644 --- a/web/src/pages/chat/shared-hooks.ts +++ b/web/src/pages/chat/shared-hooks.ts @@ -26,7 +26,7 @@ export const useGetSharedChatSearchParams = () => { const data = Object.fromEntries( searchParams .entries() - .filter(([key, value]) => key.startsWith(data_prefix)) + .filter(([key]) => key.startsWith(data_prefix)) .map(([key, value]) => [key.replace(data_prefix, ''), value]), ); return { diff --git a/web/src/pages/chunk/parsed-result/add-knowledge/components/knowledge-chunk/components/chunk-creating-modal/index.tsx b/web/src/pages/chunk/parsed-result/add-knowledge/components/knowledge-chunk/components/chunk-creating-modal/index.tsx index f3be633f0..66cf4d619 100644 --- a/web/src/pages/chunk/parsed-result/add-knowledge/components/knowledge-chunk/components/chunk-creating-modal/index.tsx +++ b/web/src/pages/chunk/parsed-result/add-knowledge/components/knowledge-chunk/components/chunk-creating-modal/index.tsx @@ -19,7 +19,6 @@ import { Switch } from '@/components/ui/switch'; import { Textarea } from '@/components/ui/textarea'; import { useFetchChunk } from '@/hooks/chunk-hooks'; import { IModalProps } from '@/interfaces/common'; -import { IChunk } from '@/interfaces/database/knowledge'; import { Trash2 } from 'lucide-react'; import React, { useCallback, useEffect, useState } from 'react'; import { FieldValues, FormProvider, useForm } from 'react-hook-form'; @@ -31,11 +30,6 @@ import { } from '../../utils'; import { TagFeatureItem } from './tag-feature-item'; -type FieldType = Pick< - IChunk, - 'content_with_weight' | 'tag_kwd' | 'question_kwd' | 'important_kwd' ->; - interface kFProps { doc_id: string; chunkId: string | undefined; diff --git a/web/src/pages/chunk/parsed-result/add-knowledge/components/knowledge-chunk/components/document-preview/csv-preview.tsx b/web/src/pages/chunk/parsed-result/add-knowledge/components/knowledge-chunk/components/document-preview/csv-preview.tsx index 0f5a9444d..bde425f95 100644 --- a/web/src/pages/chunk/parsed-result/add-knowledge/components/knowledge-chunk/components/document-preview/csv-preview.tsx +++ b/web/src/pages/chunk/parsed-result/add-knowledge/components/knowledge-chunk/components/document-preview/csv-preview.tsx @@ -36,7 +36,7 @@ const CSVFileViewer: React.FC = () => { const res = await request(url, { method: 'GET', responseType: 'blob', - onError: (err) => { + onError: () => { message.error('file load failed'); setIsLoading(false); }, diff --git a/web/src/pages/dataset/testing/index.tsx b/web/src/pages/dataset/testing/index.tsx index e7a644441..6c64d97ac 100644 --- a/web/src/pages/dataset/testing/index.tsx +++ b/web/src/pages/dataset/testing/index.tsx @@ -1,13 +1,9 @@ import { useTestRetrieval } from '@/hooks/use-knowledge-request'; -import { useCallback, useState } from 'react'; +import { useState } from 'react'; import { TopTitle } from '../dataset-title'; import TestingForm from './testing-form'; import { TestingResult } from './testing-result'; -function Vertical() { - return
xxx
; -} - export default function RetrievalTesting() { const { loading, @@ -21,15 +17,7 @@ export default function RetrievalTesting() { filterValue, } = useTestRetrieval(); - const [count, setCount] = useState(1); - - const addCount = useCallback(() => { - setCount(2); - }, []); - - const removeCount = useCallback(() => { - setCount(1); - }, []); + const [count] = useState(1); return (
diff --git a/web/src/pages/flow/constant.tsx b/web/src/pages/flow/constant.tsx index 4cec8debb..ce146ae00 100644 --- a/web/src/pages/flow/constant.tsx +++ b/web/src/pages/flow/constant.tsx @@ -3,7 +3,7 @@ import { KeywordIcon, QWeatherIcon, WikipediaIcon, -} from '@/assets/icon/Icon'; +} from '@/assets/icon/next-icon'; import { ReactComponent as AkShareIcon } from '@/assets/svg/akshare.svg'; import { ReactComponent as ArXivIcon } from '@/assets/svg/arxiv.svg'; import { ReactComponent as baiduFanyiIcon } from '@/assets/svg/baidu-fanyi.svg'; diff --git a/web/src/pages/flow/form/iteration-from/index.tsx b/web/src/pages/flow/form/iteration-from/index.tsx index f0f23918a..bff468ff6 100644 --- a/web/src/pages/flow/form/iteration-from/index.tsx +++ b/web/src/pages/flow/form/iteration-from/index.tsx @@ -1,4 +1,4 @@ -import { CommaIcon, SemicolonIcon } from '@/assets/icon/Icon'; +import { CommaIcon, SemicolonIcon } from '@/assets/icon/next-icon'; import { Form, Select } from 'antd'; import { CornerDownLeft, diff --git a/web/src/pages/flow/form/relevant-form/hooks.ts b/web/src/pages/flow/form/relevant-form/hooks.ts index 6f31550fb..5a9340cd3 100644 --- a/web/src/pages/flow/form/relevant-form/hooks.ts +++ b/web/src/pages/flow/form/relevant-form/hooks.ts @@ -1,4 +1,3 @@ -import { Edge } from '@xyflow/react'; import pick from 'lodash/pick'; import { useCallback, useEffect } from 'react'; import { IOperatorForm } from '../../interface'; @@ -21,8 +20,8 @@ export const useBuildRelevantOptions = () => { return buildRelevantOptions; }; -const getTargetOfEdge = (edges: Edge[], sourceHandle: string) => - edges.find((x) => x.sourceHandle === sourceHandle)?.target; +// const getTargetOfEdge = (edges: Edge[], sourceHandle: string) => +// edges.find((x) => x.sourceHandle === sourceHandle)?.target; /** * monitor changes in the connection and synchronize the target to the yes and no fields of the form @@ -30,7 +29,7 @@ const getTargetOfEdge = (edges: Edge[], sourceHandle: string) => * @param param0 */ export const useWatchConnectionChanges = ({ nodeId, form }: IOperatorForm) => { - const edges = useGraphStore((state) => state.edges); + // const edges = useGraphStore((state) => state.edges); const getNode = useGraphStore((state) => state.getNode); const node = getNode(nodeId); @@ -40,12 +39,12 @@ export const useWatchConnectionChanges = ({ nodeId, form }: IOperatorForm) => { } }, [node, form]); - const watchConnectionChanges = useCallback(() => { - const edgeList = edges.filter((x) => x.source === nodeId); - const yes = getTargetOfEdge(edgeList, 'yes'); - const no = getTargetOfEdge(edgeList, 'no'); - form?.setFieldsValue({ yes, no }); - }, [edges, nodeId, form]); + // const watchConnectionChanges = useCallback(() => { + // const edgeList = edges.filter((x) => x.source === nodeId); + // const yes = getTargetOfEdge(edgeList, 'yes'); + // const no = getTargetOfEdge(edgeList, 'no'); + // form?.setFieldsValue({ yes, no }); + // }, [edges, nodeId, form]); useEffect(() => { watchFormChanges(); diff --git a/web/src/pages/flow/hooks/use-save-graph.ts b/web/src/pages/flow/hooks/use-save-graph.ts index 9567b56f2..89507bdae 100644 --- a/web/src/pages/flow/hooks/use-save-graph.ts +++ b/web/src/pages/flow/hooks/use-save-graph.ts @@ -50,10 +50,14 @@ export const useSaveGraphBeforeOpeningDebugDrawer = (show: () => void) => { }; export const useWatchAgentChange = (chatDrawerVisible: boolean) => { + console.log( + '๐Ÿš€ ~ useWatchAgentChange ~ chatDrawerVisible:', + chatDrawerVisible, + ); const [time, setTime] = useState(); const nodes = useGraphStore((state) => state.nodes); const edges = useGraphStore((state) => state.edges); - const { saveGraph } = useSaveGraph(); + // const { saveGraph } = useSaveGraph(); const { data: flowDetail } = useFetchFlow(); const setSaveTime = useCallback((updateTime: number) => { @@ -64,12 +68,12 @@ export const useWatchAgentChange = (chatDrawerVisible: boolean) => { setSaveTime(flowDetail?.update_time); }, [flowDetail, setSaveTime]); - const saveAgent = useCallback(async () => { - if (!chatDrawerVisible) { - const ret = await saveGraph(); - setSaveTime(ret.data.update_time); - } - }, [chatDrawerVisible, saveGraph, setSaveTime]); + // const saveAgent = useCallback(async () => { + // if (!chatDrawerVisible) { + // const ret = await saveGraph(); + // setSaveTime(ret.data.update_time); + // } + // }, [chatDrawerVisible, saveGraph, setSaveTime]); useDebounceEffect( () => { diff --git a/web/src/pages/login-next/hooks.ts b/web/src/pages/login-next/hooks.ts index 9fd6650ec..2641a34b3 100644 --- a/web/src/pages/login-next/hooks.ts +++ b/web/src/pages/login-next/hooks.ts @@ -11,6 +11,7 @@ export enum Step { export const useSwitchStep = (step: Step) => { const [_, setSearchParams] = useSearchParams(); + console.log('๐Ÿš€ ~ useSwitchStep ~ _:', _); const switchStep = useCallback(() => { setSearchParams(new URLSearchParams({ step: step.toString() })); }, [setSearchParams, step]); diff --git a/web/src/pages/next-chats/hooks/use-send-shared-message.ts b/web/src/pages/next-chats/hooks/use-send-shared-message.ts index e241422aa..d48978dc0 100644 --- a/web/src/pages/next-chats/hooks/use-send-shared-message.ts +++ b/web/src/pages/next-chats/hooks/use-send-shared-message.ts @@ -16,7 +16,7 @@ export const useGetSharedChatSearchParams = () => { const data = Object.fromEntries( searchParams .entries() - .filter(([key, value]) => key.startsWith(data_prefix)) + .filter(([key]) => key.startsWith(data_prefix)) .map(([key, value]) => [key.replace(data_prefix, ''), value]), ); return { diff --git a/web/src/pages/next-search/search-setting.tsx b/web/src/pages/next-search/search-setting.tsx index 22100e989..739374596 100644 --- a/web/src/pages/next-search/search-setting.tsx +++ b/web/src/pages/next-search/search-setting.tsx @@ -116,8 +116,7 @@ const SearchSetting: React.FC = ({ })(); } }, [avatarFile]); - const { list: datasetListOrigin, loading: datasetLoading } = - useFetchKnowledgeList(); + const { list: datasetListOrigin } = useFetchKnowledgeList(); useEffect(() => { const datasetListMap = datasetListOrigin.map((item: IKnowledge) => { diff --git a/web/src/pages/next-searches/index.tsx b/web/src/pages/next-searches/index.tsx index 18b49b1c9..3f7828c2a 100644 --- a/web/src/pages/next-searches/index.tsx +++ b/web/src/pages/next-searches/index.tsx @@ -30,7 +30,7 @@ type SearchFormValues = z.infer; export default function SearchList() { // const { data } = useFetchFlowList(); const { t } = useTranslate('search'); - const { isLoading, isError, createSearch } = useCreateSearch(); + const { isLoading, createSearch } = useCreateSearch(); const { data: list, searchParams, diff --git a/web/src/pages/search/hooks.ts b/web/src/pages/search/hooks.ts index cc915c1c9..a6e97aa36 100644 --- a/web/src/pages/search/hooks.ts +++ b/web/src/pages/search/hooks.ts @@ -24,7 +24,7 @@ export const useSendQuestion = (kbIds: string[]) => { api.ask, ); const { testChunk, loading } = useTestChunkRetrieval(); - const { testChunkAll, loading: loadingAll } = useTestChunkAllRetrieval(); + const { testChunkAll } = useTestChunkAllRetrieval(); const [sendingLoading, setSendingLoading] = useState(false); const [currentAnswer, setCurrentAnswer] = useState({} as IAnswer); const { fetchRelatedQuestions, data: relatedQuestions } = @@ -102,7 +102,14 @@ export const useSendQuestion = (kbIds: string[]) => { size, }); }, - [sendingLoading, searchStr, kbIds, testChunk, selectedDocumentIds], + [ + searchStr, + sendingLoading, + testChunk, + kbIds, + selectedDocumentIds, + testChunkAll, + ], ); useEffect(() => { diff --git a/web/src/pages/user-setting/constants.tsx b/web/src/pages/user-setting/constants.tsx index ecf555d62..22fadbab1 100644 --- a/web/src/pages/user-setting/constants.tsx +++ b/web/src/pages/user-setting/constants.tsx @@ -5,7 +5,7 @@ import { PasswordIcon, ProfileIcon, TeamIcon, -} from '@/assets/icon/Icon'; +} from '@/assets/icon/next-icon'; import { IconFont } from '@/components/icon-font'; import { LLMFactory } from '@/constants/llm'; import { UserSettingRouteKey } from '@/constants/setting'; diff --git a/web/src/pages/user-setting/setting-locale/index.tsx b/web/src/pages/user-setting/setting-locale/index.tsx index 9e6165532..891f8fd98 100644 --- a/web/src/pages/user-setting/setting-locale/index.tsx +++ b/web/src/pages/user-setting/setting-locale/index.tsx @@ -1,5 +1,5 @@ import { translationTable } from '@/locales/config'; -import TranslationTable from './TranslationTable'; +import TranslationTable from './translation-table'; function UserSettingLocale() { return ( diff --git a/web/src/pages/user-setting/setting-locale/TranslationTable.tsx b/web/src/pages/user-setting/setting-locale/translation-table.tsx similarity index 100% rename from web/src/pages/user-setting/setting-locale/TranslationTable.tsx rename to web/src/pages/user-setting/setting-locale/translation-table.tsx diff --git a/web/src/pages/user-setting/setting-model/azure-openai-modal/index.tsx b/web/src/pages/user-setting/setting-model/azure-openai-modal/index.tsx index 25e7043d3..72d442ae3 100644 --- a/web/src/pages/user-setting/setting-model/azure-openai-modal/index.tsx +++ b/web/src/pages/user-setting/setting-model/azure-openai-modal/index.tsx @@ -46,7 +46,7 @@ const AzureOpenAIModal = ({ { value: 'image2text', label: 'image2text' }, ], }; - const getOptions = (factory: string) => { + const getOptions = () => { return optionsMap.Default; }; const handleKeyDown = async (e: React.KeyboardEvent) => { @@ -132,7 +132,7 @@ const AzureOpenAIModal = ({ type: 'number', message: t('maxTokensInvalidMessage'), }, - ({ getFieldValue }) => ({ + ({}) => ({ validator(_, value) { if (value < 0) { return Promise.reject(new Error(t('maxTokensMinMessage'))); diff --git a/web/src/pages/user-setting/setting-model/bedrock-modal/index.tsx b/web/src/pages/user-setting/setting-model/bedrock-modal/index.tsx index 4786667c5..d3351ef06 100644 --- a/web/src/pages/user-setting/setting-model/bedrock-modal/index.tsx +++ b/web/src/pages/user-setting/setting-model/bedrock-modal/index.tsx @@ -121,7 +121,7 @@ const BedrockModal = ({ type: 'number', message: t('maxTokensInvalidMessage'), }, - ({ getFieldValue }) => ({ + ({}) => ({ validator(_, value) { if (value < 0) { return Promise.reject(new Error(t('maxTokensMinMessage'))); diff --git a/web/src/pages/user-setting/setting-model/fish-audio-modal/index.tsx b/web/src/pages/user-setting/setting-model/fish-audio-modal/index.tsx index 05d6c1262..8ce0b246e 100644 --- a/web/src/pages/user-setting/setting-model/fish-audio-modal/index.tsx +++ b/web/src/pages/user-setting/setting-model/fish-audio-modal/index.tsx @@ -103,7 +103,7 @@ const FishAudioModal = ({ type: 'number', message: t('maxTokensInvalidMessage'), }, - ({ getFieldValue }) => ({ + ({}) => ({ validator(_, value) { if (value < 0) { return Promise.reject(new Error(t('maxTokensMinMessage'))); diff --git a/web/src/pages/user-setting/setting-model/google-modal/index.tsx b/web/src/pages/user-setting/setting-model/google-modal/index.tsx index a87954383..4339a3958 100644 --- a/web/src/pages/user-setting/setting-model/google-modal/index.tsx +++ b/web/src/pages/user-setting/setting-model/google-modal/index.tsx @@ -110,7 +110,7 @@ const GoogleModal = ({ type: 'number', message: t('maxTokensInvalidMessage'), }, - ({ getFieldValue }) => ({ + ({}) => ({ validator(_, value) { if (value < 0) { return Promise.reject(new Error(t('maxTokensMinMessage'))); diff --git a/web/src/pages/user-setting/setting-model/hooks.ts b/web/src/pages/user-setting/setting-model/hooks.ts index 4c66f05de..0505b37cd 100644 --- a/web/src/pages/user-setting/setting-model/hooks.ts +++ b/web/src/pages/user-setting/setting-model/hooks.ts @@ -114,7 +114,6 @@ export const useSubmitOllama = () => { const [initialValues, setInitialValues] = useState< Partial | undefined >(); - const [originalModelName, setOriginalModelName] = useState(''); const { addLlm, loading } = useAddLlm(); const { visible: llmAddingVisible, diff --git a/web/src/pages/user-setting/setting-model/hunyuan-modal/index.tsx b/web/src/pages/user-setting/setting-model/hunyuan-modal/index.tsx index 22dcea637..df3ea27d0 100644 --- a/web/src/pages/user-setting/setting-model/hunyuan-modal/index.tsx +++ b/web/src/pages/user-setting/setting-model/hunyuan-modal/index.tsx @@ -1,7 +1,7 @@ import { useTranslate } from '@/hooks/common-hooks'; import { IModalProps } from '@/interfaces/common'; import { IAddLlmRequestBody } from '@/interfaces/request/llm'; -import { Form, Input, Modal, Select } from 'antd'; +import { Form, Input, Modal } from 'antd'; import omit from 'lodash/omit'; type FieldType = IAddLlmRequestBody & { @@ -10,8 +10,6 @@ type FieldType = IAddLlmRequestBody & { hunyuan_sk: string; }; -const { Option } = Select; - const HunyuanModal = ({ visible, hideModal, diff --git a/web/src/pages/user-setting/setting-model/index.tsx b/web/src/pages/user-setting/setting-model/index.tsx index ab13c9f0f..8dc3eb97c 100644 --- a/web/src/pages/user-setting/setting-model/index.tsx +++ b/web/src/pages/user-setting/setting-model/index.tsx @@ -34,7 +34,6 @@ import { CircleHelp } from 'lucide-react'; import { useCallback, useMemo } from 'react'; import SettingTitle from '../components/setting-title'; import { isLocalLlmFactory } from '../utils'; -import TencentCloudModal from './Tencent-modal'; import ApiKeyModal from './api-key-modal'; import AzureOpenAIModal from './azure-openai-modal'; import BedrockModal from './bedrock-modal'; @@ -58,6 +57,7 @@ import { } from './hooks'; import HunyuanModal from './hunyuan-modal'; import styles from './index.less'; +import TencentCloudModal from './next-tencent-modal'; import OllamaModal from './ollama-modal'; import SparkModal from './spark-modal'; import SystemModelSettingModal from './system-model-setting-modal'; diff --git a/web/src/pages/user-setting/setting-model/Tencent-modal/index.tsx b/web/src/pages/user-setting/setting-model/next-tencent-modal/index.tsx similarity index 100% rename from web/src/pages/user-setting/setting-model/Tencent-modal/index.tsx rename to web/src/pages/user-setting/setting-model/next-tencent-modal/index.tsx diff --git a/web/src/pages/user-setting/setting-model/spark-modal/index.tsx b/web/src/pages/user-setting/setting-model/spark-modal/index.tsx index 451b7f8df..5b59781fd 100644 --- a/web/src/pages/user-setting/setting-model/spark-modal/index.tsx +++ b/web/src/pages/user-setting/setting-model/spark-modal/index.tsx @@ -140,7 +140,7 @@ const SparkModal = ({ type: 'number', message: t('maxTokensInvalidMessage'), }, - ({ getFieldValue }) => ({ + ({}) => ({ validator(_, value) { if (value < 0) { return Promise.reject(new Error(t('maxTokensMinMessage'))); diff --git a/web/src/pages/user-setting/setting-model/volcengine-modal/index.tsx b/web/src/pages/user-setting/setting-model/volcengine-modal/index.tsx index fef688e8f..411d887ff 100644 --- a/web/src/pages/user-setting/setting-model/volcengine-modal/index.tsx +++ b/web/src/pages/user-setting/setting-model/volcengine-modal/index.tsx @@ -113,7 +113,7 @@ const VolcEngineModal = ({ type: 'number', message: t('maxTokensInvalidMessage'), }, - ({ getFieldValue }) => ({ + ({}) => ({ validator(_, value) { if (value < 0) { return Promise.reject(new Error(t('maxTokensMinMessage'))); diff --git a/web/src/pages/user-setting/setting-model/yiyan-modal/index.tsx b/web/src/pages/user-setting/setting-model/yiyan-modal/index.tsx index c4e90597c..8c9b4d3e9 100644 --- a/web/src/pages/user-setting/setting-model/yiyan-modal/index.tsx +++ b/web/src/pages/user-setting/setting-model/yiyan-modal/index.tsx @@ -108,7 +108,7 @@ const YiyanModal = ({ type: 'number', message: t('maxTokensInvalidMessage'), }, - ({ getFieldValue }) => ({ + ({}) => ({ validator(_, value) { if (value < 0) { return Promise.reject(new Error(t('maxTokensMinMessage'))); diff --git a/web/src/services/next-chat-service .ts b/web/src/services/next-chat-service.ts similarity index 99% rename from web/src/services/next-chat-service .ts rename to web/src/services/next-chat-service.ts index 50a29c974..4e353d06f 100644 --- a/web/src/services/next-chat-service .ts +++ b/web/src/services/next-chat-service.ts @@ -4,7 +4,7 @@ import { registerNextServer } from '@/utils/register-server'; const { getDialog, setDialog, - listDialog, + // listDialog, removeDialog, getConversation, getConversationSSE, diff --git a/web/src/utils/register-server.ts b/web/src/utils/register-server.ts index c70ebaf32..045a7050c 100644 --- a/web/src/utils/register-server.ts +++ b/web/src/utils/register-server.ts @@ -1,3 +1,4 @@ +/* eslint-disable guard-for-in */ import { AxiosRequestConfig, AxiosResponse } from 'axios'; import { isObject } from 'lodash'; import omit from 'lodash/omit';