| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- # coding=utf-8
- """
- @project: MaxKB
- @Author:虎虎
- @file: application_stats.py
- @date:2025/6/9 20:30
- @desc:
- """
- from drf_spectacular.utils import extend_schema
- from rest_framework.request import Request
- from rest_framework.views import APIView
- from application.api.application_stats import ApplicationStatsAPI
- from application.serializers.application_stats import ApplicationStatisticsSerializer
- from common import result
- from common.auth import TokenAuth
- from django.utils.translation import gettext_lazy as _
- from common.auth.authentication import has_permissions
- from common.constants.permission_constants import PermissionConstants, RoleConstants, ViewPermission, CompareConstants
- class ApplicationStats(APIView):
- authentication_classes = [TokenAuth]
- @extend_schema(
- methods=['GET'],
- description=_('Dialogue-related statistical trends'),
- summary=_('Dialogue-related statistical trends'),
- operation_id=_('Dialogue-related statistical trends'), # type: ignore
- parameters=ApplicationStatsAPI.get_parameters(),
- responses=ApplicationStatsAPI.get_response(),
- tags=[_('Application')] # type: ignore
- )
- @has_permissions(PermissionConstants.APPLICATION_OVERVIEW_READ.get_workspace_application_permission(),
- PermissionConstants.APPLICATION_OVERVIEW_READ.get_workspace_permission_workspace_manage_role(),
- ViewPermission([RoleConstants.USER.get_workspace_role()],
- [PermissionConstants.APPLICATION.get_workspace_application_permission()],
- CompareConstants.AND),
- RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
- def get(self, request: Request, workspace_id: str, application_id: str):
- return result.success(
- ApplicationStatisticsSerializer(data={'application_id': application_id, 'workspace_id': workspace_id,
- 'start_time': request.query_params.get(
- 'start_time'),
- 'end_time': request.query_params.get(
- 'end_time')
- }).get_chat_record_aggregate_trend())
- class TokenUsageStatistics(APIView):
- authentication_classes = [TokenAuth]
- # 应用的token使用统计 根据人的使用数排序
- @extend_schema(
- methods=['GET'],
- description=_('Application token usage statistics'),
- summary=_('Application token usage statistics'),
- operation_id=_('Application token usage statistics'), # type: ignore
- parameters=ApplicationStatsAPI.get_parameters(),
- responses=ApplicationStatsAPI.get_response(),
- tags=[_('Application')] # type: ignore
- )
- @has_permissions(PermissionConstants.APPLICATION_OVERVIEW_READ.get_workspace_application_permission(),
- PermissionConstants.APPLICATION_OVERVIEW_READ.get_workspace_permission_workspace_manage_role(),
- ViewPermission([RoleConstants.USER.get_workspace_role()],
- [PermissionConstants.APPLICATION.get_workspace_application_permission()],
- CompareConstants.AND),
- RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
- def get(self, request: Request, workspace_id: str, application_id: str):
- return result.success(
- ApplicationStatisticsSerializer(data={'application_id': application_id, 'workspace_id': workspace_id,
- 'start_time': request.query_params.get(
- 'start_time'),
- 'end_time': request.query_params.get(
- 'end_time')
- }).get_token_usage_statistics())
- class TopQuestionsStatistics(APIView):
- authentication_classes = [TokenAuth]
- # 应用的top问题统计
- @extend_schema(
- methods=['GET'],
- description=_('Application top question statistics'),
- summary=_('Application top question statistics'),
- operation_id=_('Application top question statistics'), # type: ignore
- parameters=ApplicationStatsAPI.get_parameters(),
- responses=ApplicationStatsAPI.get_response(),
- tags=[_('Application')] # type: ignore
- )
- @has_permissions(PermissionConstants.APPLICATION_OVERVIEW_READ.get_workspace_application_permission(),
- PermissionConstants.APPLICATION_OVERVIEW_READ.get_workspace_permission_workspace_manage_role(),
- ViewPermission([RoleConstants.USER.get_workspace_role()],
- [PermissionConstants.APPLICATION.get_workspace_application_permission()],
- CompareConstants.AND),
- RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
- def get(self, request: Request, workspace_id: str, application_id: str):
- return result.success(
- ApplicationStatisticsSerializer(data={'application_id': application_id, 'workspace_id': workspace_id,
- 'start_time': request.query_params.get(
- 'start_time'),
- 'end_time': request.query_params.get(
- 'end_time')
- }).get_top_questions_statistics())
|