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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user