|
@@ -12,13 +12,12 @@ from common import result
|
|
|
from knowledge.api.knowledge import KnowledgeBaseCreateAPI, KnowledgeWebCreateAPI, KnowledgeTreeReadAPI, \
|
|
from knowledge.api.knowledge import KnowledgeBaseCreateAPI, KnowledgeWebCreateAPI, KnowledgeTreeReadAPI, \
|
|
|
KnowledgeEditAPI, KnowledgeReadAPI, KnowledgePageAPI, SyncWebAPI, GenerateRelatedAPI, HitTestAPI, EmbeddingAPI, \
|
|
KnowledgeEditAPI, KnowledgeReadAPI, KnowledgePageAPI, SyncWebAPI, GenerateRelatedAPI, HitTestAPI, EmbeddingAPI, \
|
|
|
GetModelAPI, KnowledgeExportAPI, KnowledgeBatchOperateAPI, KnowledgeImportAPI
|
|
GetModelAPI, KnowledgeExportAPI, KnowledgeBatchOperateAPI, KnowledgeImportAPI
|
|
|
-from knowledge.models import KnowledgeScope
|
|
|
|
|
|
|
+from knowledge.models import KnowledgeScope, Knowledge, Document, Paragraph
|
|
|
from knowledge.serializers.common import get_knowledge_operation_object
|
|
from knowledge.serializers.common import get_knowledge_operation_object
|
|
|
from knowledge.serializers.knowledge import KnowledgeSerializer, KnowledgeBatchOperateSerializer
|
|
from knowledge.serializers.knowledge import KnowledgeSerializer, KnowledgeBatchOperateSerializer
|
|
|
from models_provider.serializers.model_serializer import ModelSerializer
|
|
from models_provider.serializers.model_serializer import ModelSerializer
|
|
|
from tools.api.tool import GetInternalToolAPI
|
|
from tools.api.tool import GetInternalToolAPI
|
|
|
-from django.db.models import QuerySet
|
|
|
|
|
-from knowledge.models import Knowledge
|
|
|
|
|
|
|
+from django.db.models import QuerySet, Count, Sum
|
|
|
|
|
|
|
|
def get_knowledge_operation_object_batch(knowledge_id_list):
|
|
def get_knowledge_operation_object_batch(knowledge_id_list):
|
|
|
knowledge_model_list = QuerySet(model=Knowledge).filter(id__in=knowledge_id_list)
|
|
knowledge_model_list = QuerySet(model=Knowledge).filter(id__in=knowledge_id_list)
|
|
@@ -583,6 +582,35 @@ class KnowledgeView(APIView):
|
|
|
'knowledge_ids': request.query_params.getlist('knowledge_ids[]')
|
|
'knowledge_ids': request.query_params.getlist('knowledge_ids[]')
|
|
|
}).list())
|
|
}).list())
|
|
|
|
|
|
|
|
|
|
+ class Statistics(APIView):
|
|
|
|
|
+ """知识库用量统计"""
|
|
|
|
|
+ authentication_classes = [TokenAuth]
|
|
|
|
|
+
|
|
|
|
|
+ @extend_schema(
|
|
|
|
|
+ methods=['GET'],
|
|
|
|
|
+ description=_("Get knowledge base usage statistics"),
|
|
|
|
|
+ summary=_("Get knowledge base usage statistics"),
|
|
|
|
|
+ operation_id=_("Get knowledge base usage statistics"),
|
|
|
|
|
+ tags=[_('Knowledge Base')]
|
|
|
|
|
+ )
|
|
|
|
|
+ @has_permissions(
|
|
|
|
|
+ PermissionConstants.KNOWLEDGE_READ.get_workspace_permission(),
|
|
|
|
|
+ RoleConstants.WORKSPACE_MANAGE.get_workspace_role(),
|
|
|
|
|
+ RoleConstants.USER.get_workspace_role()
|
|
|
|
|
+ )
|
|
|
|
|
+ def get(self, request: Request, workspace_id: str, knowledge_id: str):
|
|
|
|
|
+ doc_count = Document.objects.filter(knowledge_id=knowledge_id).count()
|
|
|
|
|
+ para_stats = Paragraph.objects.filter(knowledge_id=knowledge_id).aggregate(
|
|
|
|
|
+ total_count=Count('id'),
|
|
|
|
|
+ total_hit=Sum('hit_num')
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+ return result.success({
|
|
|
|
|
+ 'document_count': doc_count,
|
|
|
|
|
+ 'paragraph_count': para_stats['total_count'] or 0,
|
|
|
|
|
+ 'total_hit_count': para_stats['total_hit'] or 0
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
|
|
|
class KnowledgeBaseView(APIView):
|
|
class KnowledgeBaseView(APIView):
|
|
|
authentication_classes = [TokenAuth]
|
|
authentication_classes = [TokenAuth]
|