feat: enhance knowledge pagination to include child folders in response

This commit is contained in:
CaptainB 2025-05-15 10:49:47 +08:00
parent 7780d89c55
commit 74fac81c7b
2 changed files with 24 additions and 11 deletions

View File

@ -23,10 +23,11 @@ from common.utils.common import valid_license, post, get_file_content
from common.utils.fork import Fork, ChildLink
from common.utils.split_model import get_split_model
from knowledge.models import Knowledge, KnowledgeScope, KnowledgeType, Document, Paragraph, Problem, \
ProblemParagraphMapping, ApplicationKnowledgeMapping, TaskType, State, SearchMode
ProblemParagraphMapping, ApplicationKnowledgeMapping, TaskType, State, SearchMode, KnowledgeFolder
from knowledge.serializers.common import ProblemParagraphManage, get_embedding_model_id_by_knowledge_id, MetaSerializer, \
GenerateRelatedSerializer, get_embedding_model_by_knowledge_id, list_paragraph
from knowledge.serializers.document import DocumentSerializers
from knowledge.serializers.knowledge_folder import KnowledgeFolderFlatSerializer
from knowledge.task.embedding import embedding_by_knowledge, delete_embedding_by_knowledge
from knowledge.task.generate import generate_related_by_knowledge_id
from knowledge.task.sync import sync_web_knowledge, sync_replace_web_knowledge
@ -136,15 +137,27 @@ class KnowledgeSerializer(serializers.Serializer):
def page(self, current_page: int, page_size: int):
self.is_valid(raise_exception=True)
return native_page_search(
current_page,
page_size,
self.get_query_set(),
select_string=get_file_content(
os.path.join(PROJECT_DIR, "apps", "knowledge", 'sql', 'list_knowledge.sql')
folder_id = self.data.get('folder_id', 'root')
root = KnowledgeFolder.objects.filter(id=folder_id).first()
if not root:
raise serializers.ValidationError(_('Folder not found'))
# 获取当前文件夹下的直接子文件夹
child_folders = KnowledgeFolder.objects.filter(parent=root)
folders_data = KnowledgeFolderFlatSerializer(child_folders, many=True).data
return {
'knowledge': native_page_search(
current_page,
page_size,
self.get_query_set(),
select_string=get_file_content(
os.path.join(PROJECT_DIR, "apps", "knowledge", 'sql', 'list_knowledge.sql')
),
post_records_handler=lambda r: r
),
post_records_handler=lambda r: r
)
'folders': folders_data
}
def list(self):
self.is_valid(raise_exception=True)

View File

@ -181,12 +181,12 @@ class ToolView(APIView):
@extend_schema(
methods=['POST'],
summary=_('Check code'),
operation_id=_('Check code'),
operation_id=_('Check code'), # type: ignore
description=_('Check code'),
request=PylintAPI.get_request(),
responses=PylintAPI.get_response(),
parameters=PylintAPI.get_parameters(),
tags=[_('Tool')]
tags=[_('Tool')] # type: ignore
)
@has_permissions(PermissionConstants.TOOL_EXPORT.get_workspace_permission())
def post(self, request: Request, workspace_id: str, tool_id: str):