feat(logging): add loglevel package and implement logger utility
refactor(document): update document list filtering and API request handling
This commit is contained in:
@@ -33,11 +33,12 @@ import KnowledgeGraphView from './components/KnowledgeGraphView';
|
||||
import { useDocumentList, useDocumentOperations } from '@/hooks/document-hooks';
|
||||
import { RUNNING_STATUS_KEYS } from '@/constants/knowledge';
|
||||
import { useKnowledgeDetail } from '@/hooks/knowledge-hooks';
|
||||
import logger from '@/utils/logger';
|
||||
|
||||
function KnowledgeBaseDetail() {
|
||||
const { id } = useParams<{ id: string }>();
|
||||
const navigate = useNavigate();
|
||||
|
||||
|
||||
// 状态管理
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
const [searchKeyword, setSearchKeyword] = useState('');
|
||||
@@ -47,17 +48,27 @@ function KnowledgeBaseDetail() {
|
||||
});
|
||||
const [uploadDialogOpen, setUploadDialogOpen] = useState(false);
|
||||
const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);
|
||||
|
||||
|
||||
const [processDetailsDialogOpen, setProcessDetailsDialogOpen] = useState(false);
|
||||
const [selectedFileDetails, setSelectedFileDetails] = useState<IKnowledgeFile | null>(null);
|
||||
|
||||
|
||||
// 标签页状态
|
||||
const [currentTab, setCurrentTab] = useState(0);
|
||||
|
||||
|
||||
// 轮询相关状态
|
||||
const pollingIntervalRef = useRef<any>(null);
|
||||
const [isPolling, setIsPolling] = useState(false);
|
||||
|
||||
// documents filter
|
||||
const [documentsFilter, setDocumentsFilter] = useState<IDocumentInfoFilter | undefined>(undefined);
|
||||
|
||||
const {
|
||||
knowledge: knowledgeBase,
|
||||
refresh: fetchKnowledgeDetail,
|
||||
loading, showKnowledgeGraph,
|
||||
knowledgeGraph
|
||||
} = useKnowledgeDetail(id || '');
|
||||
|
||||
// 使用新的document hooks
|
||||
const {
|
||||
documents: files,
|
||||
@@ -70,6 +81,8 @@ function KnowledgeBaseDetail() {
|
||||
setKeywords,
|
||||
setCurrentPage,
|
||||
setPageSize,
|
||||
fetchDocuments,
|
||||
fetchDocumentsFilter,
|
||||
} = useDocumentList(id || '');
|
||||
|
||||
const {
|
||||
@@ -79,17 +92,19 @@ function KnowledgeBaseDetail() {
|
||||
renameDocument,
|
||||
changeDocumentStatus,
|
||||
cancelRunDocuments,
|
||||
loading: operationLoading,
|
||||
error: operationError,
|
||||
} = useDocumentOperations();
|
||||
|
||||
const { knowledge: knowledgeBase, refresh: fetchKnowledgeDetail, loading, showKnowledgeGraph, knowledgeGraph } = useKnowledgeDetail(id || '');
|
||||
|
||||
console.log('showKnowledgeGraph:', showKnowledgeGraph, knowledgeGraph);
|
||||
|
||||
const refreshDetailData = async () => {
|
||||
await fetchKnowledgeDetail();
|
||||
await refreshFiles();
|
||||
};
|
||||
|
||||
// 删除文件
|
||||
const handleDeleteFiles = async () => {
|
||||
try {
|
||||
try {
|
||||
await deleteDocuments(Array.from(rowSelectionModel.ids) as string[]);
|
||||
setDeleteDialogOpen(false);
|
||||
setRowSelectionModel({
|
||||
@@ -176,7 +191,7 @@ function KnowledgeBaseDetail() {
|
||||
if (pollingIntervalRef.current) {
|
||||
clearInterval(pollingIntervalRef.current);
|
||||
}
|
||||
|
||||
|
||||
setIsPolling(true);
|
||||
pollingIntervalRef.current = setInterval(() => {
|
||||
refreshFiles();
|
||||
@@ -215,7 +230,20 @@ function KnowledgeBaseDetail() {
|
||||
|
||||
// 初始化数据
|
||||
useEffect(() => {
|
||||
fetchKnowledgeDetail();
|
||||
fetchDocumentsFilter().then(filterData => {
|
||||
if (filterData?.filter) {
|
||||
// setKeywords(filter.keywords || '');
|
||||
logger.debug('filter:', filterData.filter);
|
||||
const filter = filterData.filter || {};
|
||||
const showFilter = Object.keys(filter.run_status || {}).length > 0 || Object.keys(filter.suffix || {}).length > 0;
|
||||
if (showFilter) {
|
||||
setDocumentsFilter({
|
||||
run_status: filterData.filter?.run_status || {},
|
||||
suffix: filterData.filter?.suffix || {},
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}, [id]);
|
||||
|
||||
// 搜索文件
|
||||
@@ -230,7 +258,7 @@ function KnowledgeBaseDetail() {
|
||||
// 合并错误状态
|
||||
const combinedError = error || filesError || operationError;
|
||||
|
||||
if (loading) {
|
||||
if (loading || !knowledgeBase) {
|
||||
return (
|
||||
<Box sx={{ p: 3 }}>
|
||||
<LinearProgress />
|
||||
@@ -247,22 +275,10 @@ function KnowledgeBaseDetail() {
|
||||
);
|
||||
}
|
||||
|
||||
if (!knowledgeBase) {
|
||||
return (
|
||||
<Box sx={{ p: 3 }}>
|
||||
<Alert severity="warning">知识库不存在</Alert>
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
function fetchDocumentsFilter(): Promise<IDocumentInfoFilter | undefined> {
|
||||
throw new Error('Function not implemented.');
|
||||
}
|
||||
|
||||
return (
|
||||
<Box sx={{ p: 3 }}>
|
||||
{/* 面包屑导航 */}
|
||||
<KnowledgeBreadcrumbs
|
||||
<KnowledgeBreadcrumbs
|
||||
kbItems={[
|
||||
{
|
||||
label: '知识库',
|
||||
@@ -281,15 +297,15 @@ function KnowledgeBaseDetail() {
|
||||
{/* 标签页组件 - 仅在showKnowledgeGraph为true时显示 */}
|
||||
{showKnowledgeGraph ? (
|
||||
<Box sx={{ mt: 3 }}>
|
||||
<Tabs
|
||||
value={currentTab}
|
||||
<Tabs
|
||||
value={currentTab}
|
||||
onChange={(event, newValue) => setCurrentTab(newValue)}
|
||||
sx={{ borderBottom: 1, borderColor: 'divider' }}
|
||||
>
|
||||
<Tab label="Documents" />
|
||||
<Tab label="Graph" />
|
||||
</Tabs>
|
||||
|
||||
|
||||
{/* Document List 标签页内容 */}
|
||||
{currentTab === 0 && (
|
||||
<Box sx={{ mt: 2 }}>
|
||||
@@ -300,7 +316,6 @@ function KnowledgeBaseDetail() {
|
||||
onSearchChange={setSearchKeyword}
|
||||
onReparse={(fileIds) => handleReparse(fileIds)}
|
||||
onDelete={(fileIds) => {
|
||||
console.log('删除文件:', fileIds);
|
||||
setRowSelectionModel({
|
||||
type: 'include',
|
||||
ids: new Set(fileIds)
|
||||
@@ -314,12 +329,15 @@ function KnowledgeBaseDetail() {
|
||||
}}
|
||||
rowSelectionModel={rowSelectionModel}
|
||||
onRowSelectionModelChange={(newModel) => {
|
||||
console.log('新的选择模型:', newModel);
|
||||
setRowSelectionModel(newModel);
|
||||
}}
|
||||
total={total}
|
||||
page={currentPage}
|
||||
pageSize={pageSize}
|
||||
documentFilter={documentsFilter}
|
||||
onSelectedFilterChange={(filterBody) => {
|
||||
fetchDocuments({}, filterBody);
|
||||
}}
|
||||
onPageChange={setCurrentPage}
|
||||
onPageSizeChange={setPageSize}
|
||||
onRename={handleRename}
|
||||
@@ -330,7 +348,7 @@ function KnowledgeBaseDetail() {
|
||||
/>
|
||||
</Box>
|
||||
)}
|
||||
|
||||
|
||||
{/* Graph 标签页内容 */}
|
||||
{currentTab === 1 && (
|
||||
<Box sx={{ mt: 2 }}>
|
||||
@@ -367,6 +385,10 @@ function KnowledgeBaseDetail() {
|
||||
total={total}
|
||||
page={currentPage}
|
||||
pageSize={pageSize}
|
||||
documentFilter={documentsFilter}
|
||||
onSelectedFilterChange={(filterBody) => {
|
||||
fetchDocuments({}, filterBody);
|
||||
}}
|
||||
onPageChange={setCurrentPage}
|
||||
onPageSizeChange={setPageSize}
|
||||
onRename={handleRename}
|
||||
@@ -477,14 +499,14 @@ function KnowledgeBaseDetail() {
|
||||
进度
|
||||
</Typography>
|
||||
<Box sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>
|
||||
<Chip
|
||||
label={`${100*(selectedFileDetails.progress || 0)}%`}
|
||||
color="primary"
|
||||
size="small"
|
||||
<Chip
|
||||
label={`${100 * (selectedFileDetails.progress || 0)}%`}
|
||||
color="primary"
|
||||
size="small"
|
||||
/>
|
||||
<LinearProgress
|
||||
variant="determinate"
|
||||
value={100*(selectedFileDetails.progress || 0)}
|
||||
<LinearProgress
|
||||
variant="determinate"
|
||||
value={100 * (selectedFileDetails.progress || 0)}
|
||||
sx={{ flexGrow: 1, height: 8, borderRadius: 4 }}
|
||||
/>
|
||||
</Box>
|
||||
|
||||
Reference in New Issue
Block a user