@@ -46,3 +46,58 @@ def get(self, request: Request, workspace_id: str, application_id: str):
4646 'end_time' : request .query_params .get (
4747 'end_time' )
4848 }).get_chat_record_aggregate_trend ())
49+
50+ class TokenUsageStatistics (APIView ):
51+ authentication_classes = [TokenAuth ]
52+
53+ # 应用的token使用统计 根据人的使用数排序
54+ @extend_schema (
55+ methods = ['GET' ],
56+ description = _ ('Application token usage statistics' ),
57+ summary = _ ('Application token usage statistics' ),
58+ operation_id = _ ('Application token usage statistics' ), # type: ignore
59+ parameters = ApplicationStatsAPI .get_parameters (),
60+ responses = ApplicationStatsAPI .get_response (),
61+ tags = [_ ('Application' )] # type: ignore
62+ )
63+ @has_permissions (PermissionConstants .APPLICATION_OVERVIEW_READ .get_workspace_application_permission (),
64+ PermissionConstants .APPLICATION_OVERVIEW_READ .get_workspace_permission_workspace_manage_role (),
65+ ViewPermission ([RoleConstants .USER .get_workspace_role ()],
66+ [PermissionConstants .APPLICATION .get_workspace_application_permission ()],
67+ CompareConstants .AND ),
68+ RoleConstants .WORKSPACE_MANAGE .get_workspace_role ())
69+ def get (self , request : Request , workspace_id : str , application_id : str ):
70+ return result .success (
71+ ApplicationStatisticsSerializer (data = {'application_id' : application_id , 'workspace_id' : workspace_id ,
72+ 'start_time' : request .query_params .get (
73+ 'start_time' ),
74+ 'end_time' : request .query_params .get (
75+ 'end_time' )
76+ }).get_token_usage_statistics ())
77+
78+ class TopQuestionsStatistics (APIView ):
79+ authentication_classes = [TokenAuth ]
80+ # 应用的top10问题统计
81+ @extend_schema (
82+ methods = ['GET' ],
83+ description = _ ('Application top10 question statistics' ),
84+ summary = _ ('Application top10 question statistics' ),
85+ operation_id = _ ('Application top10 question statistics' ), # type: ignore
86+ parameters = ApplicationStatsAPI .get_parameters (),
87+ responses = ApplicationStatsAPI .get_response (),
88+ tags = [_ ('Application' )] # type: ignore
89+ )
90+ @has_permissions (PermissionConstants .APPLICATION_OVERVIEW_READ .get_workspace_application_permission (),
91+ PermissionConstants .APPLICATION_OVERVIEW_READ .get_workspace_permission_workspace_manage_role (),
92+ ViewPermission ([RoleConstants .USER .get_workspace_role ()],
93+ [PermissionConstants .APPLICATION .get_workspace_application_permission ()],
94+ CompareConstants .AND ),
95+ RoleConstants .WORKSPACE_MANAGE .get_workspace_role ())
96+ def get (self , request : Request , workspace_id : str , application_id : str ):
97+ return result .success (
98+ ApplicationStatisticsSerializer (data = {'application_id' : application_id , 'workspace_id' : workspace_id ,
99+ 'start_time' : request .query_params .get (
100+ 'start_time' ),
101+ 'end_time' : request .query_params .get (
102+ 'end_time' )
103+ }).get_top_questions_statistics ())
0 commit comments