feat(logging): add loglevel package and implement logger utility

refactor(document): update document list filtering and API request handling
This commit is contained in:
2025-10-20 14:57:43 +08:00
parent 266b10a23b
commit 85eb3ab3da
7 changed files with 140 additions and 70 deletions

View File

@@ -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>