增加 stats 接口设计
parent
db36e3edf9
commit
79d1ccfdcd
@ -0,0 +1,151 @@
|
|||||||
|
from flask import Blueprint
|
||||||
|
from flask_restful import Api, Resource # type: ignore
|
||||||
|
|
||||||
|
from controllers.admin import api
|
||||||
|
|
||||||
|
class RiskStats(Resource):
|
||||||
|
def get(self):
|
||||||
|
"""Get risk level statistics.
|
||||||
|
---
|
||||||
|
tags:
|
||||||
|
- admin
|
||||||
|
summary: Get risk level user counts
|
||||||
|
description: Get counts of users at different risk levels and their changes
|
||||||
|
security:
|
||||||
|
- JWT: []
|
||||||
|
parameters:
|
||||||
|
- name: start_date
|
||||||
|
in: query
|
||||||
|
type: string
|
||||||
|
format: date
|
||||||
|
required: true
|
||||||
|
description: Start date of the statistics period (YYYY-MM-DD)
|
||||||
|
- name: end_date
|
||||||
|
in: query
|
||||||
|
type: string
|
||||||
|
format: date
|
||||||
|
required: true
|
||||||
|
description: End date of the statistics period (YYYY-MM-DD)
|
||||||
|
responses:
|
||||||
|
200:
|
||||||
|
description: Risk statistics retrieved successfully
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
high_risk_count:
|
||||||
|
type: integer
|
||||||
|
description: Current number of high risk users
|
||||||
|
daily_changes:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
from_yesterday:
|
||||||
|
type: integer
|
||||||
|
description: Change in high risk users compared to yesterday
|
||||||
|
from_last_week:
|
||||||
|
type: integer
|
||||||
|
description: Change in high risk users compared to last week
|
||||||
|
400:
|
||||||
|
description: Invalid date parameters
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
class UserStats(Resource):
|
||||||
|
def get(self):
|
||||||
|
"""Get daily user statistics.
|
||||||
|
---
|
||||||
|
tags:
|
||||||
|
- admin
|
||||||
|
summary: Get daily active and new user counts
|
||||||
|
description: Get statistics of daily active users and new users
|
||||||
|
security:
|
||||||
|
- JWT: []
|
||||||
|
parameters:
|
||||||
|
- name: start_date
|
||||||
|
in: query
|
||||||
|
type: string
|
||||||
|
format: date
|
||||||
|
required: true
|
||||||
|
description: Start date of the statistics period (YYYY-MM-DD)
|
||||||
|
- name: end_date
|
||||||
|
in: query
|
||||||
|
type: string
|
||||||
|
format: date
|
||||||
|
required: true
|
||||||
|
description: End date of the statistics period (YYYY-MM-DD)
|
||||||
|
responses:
|
||||||
|
200:
|
||||||
|
description: User statistics retrieved successfully
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
daily_stats:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
date:
|
||||||
|
type: string
|
||||||
|
format: date
|
||||||
|
active_users:
|
||||||
|
type: integer
|
||||||
|
description: Number of active users on this date
|
||||||
|
new_users:
|
||||||
|
type: integer
|
||||||
|
description: Number of new users on this date
|
||||||
|
400:
|
||||||
|
description: Invalid date parameters
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
class ConversationStats(Resource):
|
||||||
|
def get(self):
|
||||||
|
"""Get daily conversation statistics.
|
||||||
|
---
|
||||||
|
tags:
|
||||||
|
- admin
|
||||||
|
summary: Get daily conversation counts and averages
|
||||||
|
description: Get statistics of daily total conversations and average conversations per user
|
||||||
|
security:
|
||||||
|
- JWT: []
|
||||||
|
parameters:
|
||||||
|
- name: start_date
|
||||||
|
in: query
|
||||||
|
type: string
|
||||||
|
format: date
|
||||||
|
required: true
|
||||||
|
description: Start date of the statistics period (YYYY-MM-DD)
|
||||||
|
- name: end_date
|
||||||
|
in: query
|
||||||
|
type: string
|
||||||
|
format: date
|
||||||
|
required: true
|
||||||
|
description: End date of the statistics period (YYYY-MM-DD)
|
||||||
|
responses:
|
||||||
|
200:
|
||||||
|
description: Conversation statistics retrieved successfully
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
daily_stats:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
date:
|
||||||
|
type: string
|
||||||
|
format: date
|
||||||
|
total_conversations:
|
||||||
|
type: integer
|
||||||
|
description: Total number of conversations on this date
|
||||||
|
avg_conversations_per_user:
|
||||||
|
type: number
|
||||||
|
format: float
|
||||||
|
description: Average conversations per active user on this date
|
||||||
|
400:
|
||||||
|
description: Invalid date parameters
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
api.add_resource(RiskStats, '/risk-stats')
|
||||||
|
api.add_resource(UserStats, '/user-stats')
|
||||||
|
api.add_resource(ConversationStats, '/conversation-stats')
|
||||||
Loading…
Reference in New Issue