fix(agent): redirect to blank page when navigating home from model page
This commit is contained in:
@@ -11,6 +11,7 @@ export default {
|
|||||||
yes: 'Yes',
|
yes: 'Yes',
|
||||||
no: 'No',
|
no: 'No',
|
||||||
total: 'Total',
|
total: 'Total',
|
||||||
|
know: 'Known',
|
||||||
rename: 'Rename',
|
rename: 'Rename',
|
||||||
name: 'Name',
|
name: 'Name',
|
||||||
save: 'Save',
|
save: 'Save',
|
||||||
@@ -106,6 +107,7 @@ export default {
|
|||||||
noMoreData: `That's all. Nothing more.`,
|
noMoreData: `That's all. Nothing more.`,
|
||||||
},
|
},
|
||||||
knowledgeDetails: {
|
knowledgeDetails: {
|
||||||
|
pleaseAddEmbeddingModel: 'Please add embedding model and LLM in the model provider first, then set them in "Set Default Model".',
|
||||||
localUpload: 'Local Upload',
|
localUpload: 'Local Upload',
|
||||||
fileSize: 'File Size',
|
fileSize: 'File Size',
|
||||||
fileType: 'File Type',
|
fileType: 'File Type',
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ export default {
|
|||||||
yes: '是',
|
yes: '是',
|
||||||
no: '否',
|
no: '否',
|
||||||
total: '总共',
|
total: '总共',
|
||||||
|
know: '知道了',
|
||||||
rename: '重命名',
|
rename: '重命名',
|
||||||
name: '名称',
|
name: '名称',
|
||||||
save: '保存',
|
save: '保存',
|
||||||
@@ -99,6 +100,7 @@ export default {
|
|||||||
noMoreData: '没有更多数据了',
|
noMoreData: '没有更多数据了',
|
||||||
},
|
},
|
||||||
knowledgeDetails: {
|
knowledgeDetails: {
|
||||||
|
pleaseAddEmbeddingModel: '请先在模型提供商中添加嵌入模型和LLM,然后在"设置默认模型"中设置它们。',
|
||||||
localUpload: '本地上传',
|
localUpload: '本地上传',
|
||||||
fileSize: '文件大小',
|
fileSize: '文件大小',
|
||||||
fileType: '文件类型',
|
fileType: '文件类型',
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
import { useState, useCallback, useEffect, useRef } from 'react';
|
import { useState, useCallback, useEffect, useRef } from 'react';
|
||||||
import agentService from '@/services/agent_service';
|
import agentService from '@/services/agent_service';
|
||||||
|
import userService from '@/services/user_service';
|
||||||
import type { IAgent, IGraph } from '@/interfaces/database/agent';
|
import type { IAgent, IGraph } from '@/interfaces/database/agent';
|
||||||
import type { IAgentPaginationParams, IAgentCreateRequestBody, IAgentSettingRequestBody } from '@/interfaces/request/agent';
|
import type { IAgentPaginationParams, IAgentCreateRequestBody, IAgentSettingRequestBody } from '@/interfaces/request/agent';
|
||||||
import logger from '@/utils/logger';
|
import logger from '@/utils/logger';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { useSnackbar } from '@/hooks/useSnackbar';
|
import { useSnackbar } from '@/hooks/useSnackbar';
|
||||||
|
import { useDialog } from '@/hooks/useDialog';
|
||||||
|
import { useNavigate } from 'react-router-dom';
|
||||||
|
import { isEmpty } from 'lodash';
|
||||||
|
|
||||||
export interface UseAgentListState {
|
export interface UseAgentListState {
|
||||||
agents: IAgent[];
|
agents: IAgent[];
|
||||||
@@ -39,6 +43,28 @@ export const useAgentList = (initialParams?: IAgentPaginationParams) => {
|
|||||||
const [currentPage, setCurrentPage] = useState(initialParams?.page || 1);
|
const [currentPage, setCurrentPage] = useState(initialParams?.page || 1);
|
||||||
const [pageSize, setPageSize] = useState(initialParams?.page_size || 10);
|
const [pageSize, setPageSize] = useState(initialParams?.page_size || 10);
|
||||||
const [keywords, setKeywords] = useState(initialParams?.keywords || '');
|
const [keywords, setKeywords] = useState(initialParams?.keywords || '');
|
||||||
|
const { showMessage } = useSnackbar();
|
||||||
|
const dialog = useDialog();
|
||||||
|
const navigate = useNavigate();
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
|
// 查询是否有默认的模型
|
||||||
|
const checkDefaultModel = useCallback(async (id: string) => {
|
||||||
|
const { data: res } = await userService.getTenantInfo();
|
||||||
|
if (res.code === 0) {
|
||||||
|
const { data } = res;
|
||||||
|
if (isEmpty(data.embd_id) || isEmpty(data.llm_id)) {
|
||||||
|
await dialog.warning({
|
||||||
|
title: t('common.warn'),
|
||||||
|
content: t('knowledgeDetails.pleaseAddEmbeddingModel'),
|
||||||
|
confirmText: t('common.know')
|
||||||
|
});
|
||||||
|
navigate(`/models`);
|
||||||
|
} else {
|
||||||
|
navigate(`/route-ragflow/agent/${id}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, [dialog, navigate, showMessage]);
|
||||||
|
|
||||||
const fetchAgentList = useCallback(async (params?: IAgentPaginationParams) => {
|
const fetchAgentList = useCallback(async (params?: IAgentPaginationParams) => {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
@@ -81,6 +107,7 @@ export const useAgentList = (initialParams?: IAgentPaginationParams) => {
|
|||||||
currentPage,
|
currentPage,
|
||||||
pageSize,
|
pageSize,
|
||||||
keywords,
|
keywords,
|
||||||
|
checkDefaultModel,
|
||||||
fetchAgents: fetchAgentList,
|
fetchAgents: fetchAgentList,
|
||||||
setKeywords,
|
setKeywords,
|
||||||
setCurrentPage,
|
setCurrentPage,
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ export default {
|
|||||||
total: 'Total',
|
total: 'Total',
|
||||||
rename: 'Rename',
|
rename: 'Rename',
|
||||||
name: 'Name',
|
name: 'Name',
|
||||||
|
know: 'Known',
|
||||||
save: 'Save',
|
save: 'Save',
|
||||||
namePlaceholder: 'Please input name',
|
namePlaceholder: 'Please input name',
|
||||||
next: 'Next',
|
next: 'Next',
|
||||||
@@ -425,6 +426,7 @@ export default {
|
|||||||
paginationInfo: 'Total {{total}} knowledge bases, page {{current}} of {{totalPages}}',
|
paginationInfo: 'Total {{total}} knowledge bases, page {{current}} of {{totalPages}}',
|
||||||
},
|
},
|
||||||
knowledgeDetails: {
|
knowledgeDetails: {
|
||||||
|
pleaseAddEmbeddingModel: 'Please add embedding model and LLM in the model provider first, then set them in "Set Default Model".',
|
||||||
fileSize: 'File Size',
|
fileSize: 'File Size',
|
||||||
fileType: 'File Type',
|
fileType: 'File Type',
|
||||||
uploadedBy: 'Uploaded by',
|
uploadedBy: 'Uploaded by',
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ export default {
|
|||||||
cancel: '否',
|
cancel: '否',
|
||||||
total: '总共',
|
total: '总共',
|
||||||
rename: '重命名',
|
rename: '重命名',
|
||||||
|
know: '知道了',
|
||||||
name: '名称',
|
name: '名称',
|
||||||
save: '保存',
|
save: '保存',
|
||||||
namePlaceholder: '请输入名称',
|
namePlaceholder: '请输入名称',
|
||||||
@@ -423,6 +424,7 @@ export default {
|
|||||||
paginationInfo: '共 {{total}} 个知识库,第 {{current}} 页,共 {{totalPages}} 页',
|
paginationInfo: '共 {{total}} 个知识库,第 {{current}} 页,共 {{totalPages}} 页',
|
||||||
},
|
},
|
||||||
knowledgeDetails: {
|
knowledgeDetails: {
|
||||||
|
pleaseAddEmbeddingModel: '请先在模型提供商中添加嵌入模型和LLM,然后在"设置默认模型"中设置它们。',
|
||||||
fileSize: '文件大小',
|
fileSize: '文件大小',
|
||||||
fileType: '文件类型',
|
fileType: '文件类型',
|
||||||
uploadedBy: '创建者',
|
uploadedBy: '创建者',
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ import EditAgentDialog from './components/EditAgentDialog';
|
|||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { useDialog } from '@/hooks/useDialog';
|
import { useDialog } from '@/hooks/useDialog';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
|
|
||||||
function AgentListPage() {
|
function AgentListPage() {
|
||||||
const [searchValue, setSearchValue] = useState('');
|
const [searchValue, setSearchValue] = useState('');
|
||||||
const [createOpen, setCreateOpen] = useState(false);
|
const [createOpen, setCreateOpen] = useState(false);
|
||||||
@@ -31,6 +30,7 @@ function AgentListPage() {
|
|||||||
pageSize,
|
pageSize,
|
||||||
setCurrentPage,
|
setCurrentPage,
|
||||||
setKeywords,
|
setKeywords,
|
||||||
|
checkDefaultModel,
|
||||||
refresh,
|
refresh,
|
||||||
} = useAgentList({ page: 1, page_size: 10 });
|
} = useAgentList({ page: 1, page_size: 10 });
|
||||||
|
|
||||||
@@ -40,8 +40,8 @@ function AgentListPage() {
|
|||||||
const ops = useAgentOperations();
|
const ops = useAgentOperations();
|
||||||
|
|
||||||
const totalPages = useMemo(() => {
|
const totalPages = useMemo(() => {
|
||||||
return Math.ceil((agents?.length || 0) / pageSize) || 1;
|
return Math.ceil((total || 0) / pageSize) || 1;
|
||||||
}, [agents, pageSize]);
|
}, [total, pageSize]);
|
||||||
|
|
||||||
const currentPageData = useMemo(() => {
|
const currentPageData = useMemo(() => {
|
||||||
const startIndex = (currentPage - 1) * pageSize;
|
const startIndex = (currentPage - 1) * pageSize;
|
||||||
@@ -108,7 +108,7 @@ function AgentListPage() {
|
|||||||
onCreateAgent={() => setCreateOpen(true)}
|
onCreateAgent={() => setCreateOpen(true)}
|
||||||
onEdit={(agent) => { setEditTarget(agent); setEditOpen(true); }}
|
onEdit={(agent) => { setEditTarget(agent); setEditOpen(true); }}
|
||||||
onView={(agent) => {
|
onView={(agent) => {
|
||||||
navigate(`/route-ragflow/agent/${agent.id}`);
|
checkDefaultModel(agent.id);
|
||||||
}}
|
}}
|
||||||
onDelete={async (agent) => {
|
onDelete={async (agent) => {
|
||||||
const confirmed = await dialog.confirm({
|
const confirmed = await dialog.confirm({
|
||||||
|
|||||||
Reference in New Issue
Block a user