Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions apps/homepage/serializers/homepage.py
Original file line number Diff line number Diff line change
Expand Up @@ -289,11 +289,9 @@ def aggregation(self, auth, with_valid=True):
auth, data["user_id"], data.get("workspace_id")
),
)
return {
"total_tokens": query.aggregate(
total_tokens=Coalesce(Sum(F("message_tokens") + F("answer_tokens"), output_field=IntegerField()), 0)
)["total_tokens"]
}
return query.aggregate(
total_tokens=Coalesce(Sum(F("message_tokens") + F("answer_tokens"), output_field=IntegerField()), 0)
)["total_tokens"]

class ChatRecordAggregation(serializers.Serializer):
workspace_id = serializers.CharField(required=False, allow_null=True, label=_("Workspace ID"))
Expand All @@ -312,7 +310,7 @@ def aggregation(self, auth, with_valid=True):
auth, data["user_id"], data.get("workspace_id")
),
)
return {"total_count": query.aggregate(total_count=Count("id"))["total_count"]}
return {query.aggregate(total_count=Count("id"))["total_count"]}

class ApplicationTokensRanking(serializers.Serializer):
workspace_id = serializers.CharField(required=False, allow_null=True, label=_("Workspace ID"))
Expand Down Expand Up @@ -371,7 +369,7 @@ def ranking(self, auth, current_page, page_size, with_valid=True):
def export(self, auth, with_valid=True):
if with_valid:
self.is_valid(raise_exception=True)
tokens_total = SystemHomePageSerializer.TokensAggregation(data=self.data).aggregation(auth)["total_tokens"]
tokens_total = SystemHomePageSerializer.TokensAggregation(data=self.data).aggregation(auth)
queryset = self.get_queryset(auth, with_valid=False)
workbook = openpyxl.Workbook(write_only=True)
worksheet = workbook.create_sheet(title="Sheet1")
Expand Down Expand Up @@ -561,7 +559,7 @@ def ranking(self, auth, current_page, page_size, with_valid=True):
def export(self, auth, with_valid=True):
if with_valid:
self.is_valid(raise_exception=True)
token_count = SystemHomePageSerializer.TokensAggregation(data=self.data).aggregation(auth)["total_tokens"]
token_count = SystemHomePageSerializer.TokensAggregation(data=self.data).aggregation(auth)
queryset, asker_map = self.get_queryset(auth, with_valid=False)
workbook = openpyxl.Workbook(write_only=True)
worksheet = workbook.create_sheet(title="Sheet1")
Expand Down
138 changes: 138 additions & 0 deletions apps/system_manage/api/resource_chat_user.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
# coding=utf-8
"""
@project: MaxKB-xpack
@Author:虎虎
@file: resource_chat_user.py
@date:2025/6/5 16:22
@desc:
"""

from drf_spectacular.types import OpenApiTypes
from drf_spectacular.utils import OpenApiParameter

from common.mixins.api_mixin import APIMixin
from common.result import ResultSerializer, ResultPageSerializer
from system_manage.serializers.resource_chat_user import (
ResourceChatUserResultSerializer,
ResourceChatUserEditSerializer,
)


class ResourceChatUserListResult(ResultSerializer):
def get_data(self):
return ResourceChatUserResultSerializer(many=True)


class ResourceChatUserPageListResult(ResultPageSerializer):
def get_data(self):
return ResourceChatUserResultSerializer(many=True)


class WorkspaceResourceChatUserListAPI(APIMixin):
@staticmethod
def get_parameters():
return [
OpenApiParameter(
name="workspace_id",
description="工作空间id",
type=OpenApiTypes.STR,
location="path",
required=True,
),
OpenApiParameter(
name="resource_type",
description="资源类型",
type=OpenApiTypes.STR,
location="path",
required=True,
),
OpenApiParameter(
name="resource_id",
description="资源id",
type=OpenApiTypes.STR,
location="path",
required=True,
),
OpenApiParameter(
name="user_group_id",
description="用户组id",
type=OpenApiTypes.STR,
location="path",
required=False,
),
OpenApiParameter(
name="username",
description="用户名",
type=OpenApiTypes.STR,
required=False,
),
OpenApiParameter(
name="nick_name",
description="昵称",
type=OpenApiTypes.STR,
required=False,
),
OpenApiParameter(
name="source",
description="来源",
type=OpenApiTypes.STR,
required=False,
),
]

@staticmethod
def get_response():
return ResourceChatUserListResult


class ResourceChatUserPageAPI(APIMixin):
@staticmethod
def get_parameters():
return WorkspaceResourceChatUserListAPI.get_parameters()

@staticmethod
def get_response():
return ResourceChatUserPageListResult


class EditResourceChatUserAPI(APIMixin):
@staticmethod
def get_parameters():
return [
OpenApiParameter(
name="workspace_id",
description="工作空间id",
type=OpenApiTypes.STR,
location="path",
required=True,
),
OpenApiParameter(
name="resource_type",
description="资源类型",
type=OpenApiTypes.STR,
location="path",
required=True,
),
OpenApiParameter(
name="resource_id",
description="资源id",
type=OpenApiTypes.STR,
location="path",
required=True,
),
OpenApiParameter(
name="user_group_id",
description="用户组id",
type=OpenApiTypes.STR,
location="path",
required=False,
),
]

@staticmethod
def get_request():
return ResourceChatUserEditSerializer

@staticmethod
def get_response():
pass
92 changes: 92 additions & 0 deletions apps/system_manage/api/resource_chat_user_group.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
from drf_spectacular.types import OpenApiTypes
from drf_spectacular.utils import OpenApiParameter
from rest_framework import serializers
from django.utils.translation import gettext_lazy as _

from common.mixins.api_mixin import APIMixin
from common.result import ResultPageSerializer
from system_manage.models import UserGroup
from system_manage.serializers.resource_chat_user_group import ResourceChatUserGroupEditSerializer


class ResourceChatUserGroupListAPI(APIMixin):
@staticmethod
def get_parameters():
return [
OpenApiParameter(
name="workspace_id",
description="工作空间id",
type=OpenApiTypes.STR,
location="path",
required=True,
),
OpenApiParameter(
name="resource_type",
description="资源类型",
type=OpenApiTypes.STR,
location="path",
required=True,
),
OpenApiParameter(
name="resource_id",
description="资源id",
type=OpenApiTypes.STR,
location="path",
required=True,
),
OpenApiParameter(
name="user_group_name",
description="用户组名",
type=OpenApiTypes.STR,
required=False,
),
]


class ResourceChatUserResultSerializer(serializers.ModelSerializer):
is_auth = serializers.BooleanField(required=True, label=_("is auth"))

class Meta:
model = UserGroup
fields = "__all__"


class ResourceChatUserGroupEditResult(ResultPageSerializer):
def get_data(self):
return ResourceChatUserResultSerializer()


class ResourceChatUserGroupEditAPI(APIMixin):
@staticmethod
def get_parameters():
return [
OpenApiParameter(
name="workspace_id",
description="工作空间id",
type=OpenApiTypes.STR,
location="path",
required=True,
),
OpenApiParameter(
name="resource_type",
description="资源类型",
type=OpenApiTypes.STR,
location="path",
required=True,
),
OpenApiParameter(
name="resource_id",
description="资源id",
type=OpenApiTypes.STR,
location="path",
required=True,
),
]

@staticmethod
def get_request():
return ResourceChatUserGroupEditSerializer

@staticmethod
def get_response():
return
2 changes: 1 addition & 1 deletion apps/system_manage/serializers/chat_user_serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from django.utils.translation import gettext_lazy as _
from rest_framework import serializers

from application.models import ApplicationAccessToken, ChatUserType
from application.models import ApplicationAccessToken
from common.auth.common import ChatToken
from common.auth.constants.operate_constants import Operate
from common.constants.authentication_type import AuthenticationType
Expand Down
Loading
Loading