remove date filter in risk stats

pull/21891/head
ytqh 1 year ago
parent 32601f34b5
commit 90cb9aaf0d

@ -20,19 +20,6 @@ class RiskStats(Resource):
description: Get counts of users at different risk levels and their changes description: Get counts of users at different risk levels and their changes
security: security:
- ApiKeyAuth: [] - ApiKeyAuth: []
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: responses:
200: 200:
description: Risk statistics retrieved successfully description: Risk statistics retrieved successfully
@ -59,23 +46,8 @@ class RiskStats(Resource):
description: Invalid date parameters description: Invalid date parameters
""" """
try: try:
# Parse date parameters
start_date_str = request.args.get('start_date')
end_date_str = request.args.get('end_date')
if not start_date_str or not end_date_str:
raise BadRequest("start_date and end_date are required")
try:
end_date = datetime.strptime(end_date_str, '%Y-%m-%d')
start_date = datetime.strptime(start_date_str, '%Y-%m-%d')
except ValueError:
raise BadRequest("Invalid date format. Use YYYY-MM-DD")
# Get risk statistics from service # Get risk statistics from service
risk_stats = StatsService.get_risk_stats( risk_stats = StatsService.get_risk_stats(
start_date=start_date,
end_date=end_date,
app_id=app_model.id, app_id=app_model.id,
organization_id=account.current_organization_id, organization_id=account.current_organization_id,
) )

@ -8,9 +8,7 @@ from sqlalchemy import and_, distinct, func
class StatsService: class StatsService:
@staticmethod @staticmethod
def get_risk_stats( def get_risk_stats(app_id: Optional[str] = None, organization_id: Optional[str] = None) -> Dict[str, Any]:
start_date: datetime, end_date: datetime, app_id: Optional[str] = None, organization_id: Optional[str] = None
) -> Dict[str, Any]:
""" """
Get statistics about high risk users Get statistics about high risk users
@ -24,10 +22,8 @@ class StatsService:
Dictionary containing high risk user count and changes Dictionary containing high risk user count and changes
""" """
# Build query with filters # Build query with filters
high_risk_query = db.session.query(EndUser).filter( high_risk_query = db.session.query(EndUser).filter(EndUser.health_status == 'critical')
EndUser.health_status == 'critical', EndUser.updated_at >= start_date, EndUser.updated_at <= end_date total_query = db.session.query(EndUser)
)
total_query = db.session.query(EndUser).filter(EndUser.updated_at >= start_date, EndUser.updated_at <= end_date)
# Apply app_id filter if provided # Apply app_id filter if provided
if app_id: if app_id:
@ -43,7 +39,7 @@ class StatsService:
total_count = total_query.count() total_count = total_query.count()
# Get yesterday's count # Get yesterday's count
yesterday = end_date - timedelta(days=1) yesterday = datetime.now() - timedelta(days=1)
yesterday_query = db.session.query(EndUser).filter( yesterday_query = db.session.query(EndUser).filter(
EndUser.health_status == 'critical', EndUser.updated_at <= yesterday EndUser.health_status == 'critical', EndUser.updated_at <= yesterday
) )
@ -59,7 +55,7 @@ class StatsService:
yesterday_high_risk_count = yesterday_query.count() yesterday_high_risk_count = yesterday_query.count()
# Get last week's count # Get last week's count
last_week = end_date - timedelta(days=7) last_week = datetime.now() - timedelta(days=7)
last_week_query = db.session.query(EndUser).filter( last_week_query = db.session.query(EndUser).filter(
EndUser.health_status == 'critical', EndUser.updated_at <= last_week EndUser.health_status == 'critical', EndUser.updated_at <= last_week
) )

Loading…
Cancel
Save