feat(knowledge): enhance knowledge base management with improved interfaces and components

refactor(interfaces): add comprehensive documentation and type definitions
feat(components): implement empty state handling and team filtering in KnowledgeGridView
refactor(hooks): optimize knowledge list fetching with better parameter handling
style(interfaces): improve code readability with detailed comments
This commit is contained in:
2025-10-11 18:30:41 +08:00
parent 836ee763e3
commit d475a0e982
9 changed files with 463 additions and 82 deletions

View File

@@ -1,19 +1,7 @@
import { useState, useEffect, useCallback } from 'react';
import knowledgeService from '@/services/knowledge_service';
import type { IKnowledge } from '@/interfaces/database/knowledge';
// 知识库列表查询参数接口
export interface KnowledgeListParams {
keywords?: string;
page?: number;
page_size?: number;
}
// 知识库列表响应接口
export interface KnowledgeListResponse {
kbs: IKnowledge[];
total: number;
}
import type { IKnowledge, IKnowledgeResult } from '@/interfaces/database/knowledge';
import type { IFetchKnowledgeListRequestParams } from '@/interfaces/request/knowledge';
// 知识库列表Hook状态接口
export interface UseKnowledgeListState {
@@ -28,7 +16,7 @@ export interface UseKnowledgeListState {
// 知识库列表Hook返回值接口
export interface UseKnowledgeListReturn extends UseKnowledgeListState {
fetchKnowledgeBases: (params?: KnowledgeListParams) => Promise<void>;
fetchKnowledgeBases: (params?: IFetchKnowledgeListRequestParams) => Promise<void>;
setKeywords: (keywords: string) => void;
setCurrentPage: (page: number) => void;
setPageSize: (size: number) => void;
@@ -40,7 +28,7 @@ export interface UseKnowledgeListReturn extends UseKnowledgeListState {
* 支持关键词搜索、分页等功能
*/
export const useKnowledgeList = (
initialParams?: KnowledgeListParams
initialParams?: IFetchKnowledgeListRequestParams
): UseKnowledgeListReturn => {
const [knowledgeBases, setKnowledgeBases] = useState<IKnowledge[]>([]);
const [total, setTotal] = useState(0);
@@ -53,7 +41,7 @@ export const useKnowledgeList = (
/**
* 获取知识库列表
*/
const fetchKnowledgeBases = useCallback(async (params?: KnowledgeListParams) => {
const fetchKnowledgeBases = useCallback(async (params?: IFetchKnowledgeListRequestParams) => {
try {
setLoading(true);
setError(null);
@@ -67,8 +55,8 @@ export const useKnowledgeList = (
// 构建请求体
const requestBody: any = {};
if (queryParams.keywords) {
requestBody.keywords = queryParams.keywords;
if (queryParams.keywords && queryParams.keywords.trim()) {
requestBody.keywords = queryParams.keywords.trim();
}
// 构建查询参数
@@ -79,6 +67,9 @@ export const useKnowledgeList = (
if (queryParams.page_size) {
requestParams.page_size = queryParams.page_size;
}
if (queryParams.keywords) {
requestParams.keywords = queryParams.keywords;
}
const response = await knowledgeService.getKnowledgeList(
Object.keys(requestParams).length > 0 ? requestParams : undefined,
@@ -87,7 +78,7 @@ export const useKnowledgeList = (
// 检查响应状态
if (response.data.code === 0) {
const data = response.data.data as KnowledgeListResponse;
const data = response.data.data as IKnowledgeResult;
setKnowledgeBases(data.kbs || []);
setTotal(data.total || 0);
} else {
@@ -132,10 +123,10 @@ export const useKnowledgeList = (
setCurrentPage(1);
}, []);
// 初始化时获取数据
// 当关键词、页码或页面大小变化时重新获取数据
useEffect(() => {
fetchKnowledgeBases();
}, [fetchKnowledgeBases]);
}, [keywords, currentPage, pageSize]);
return {
knowledgeBases,