from django.db.models import Count from django.utils import timezone from datetime import timedelta from ..models import SubscriptionRequest def get_latest_requests(limit=50): requests = SubscriptionRequest.objects.filter(is_test_request=False).order_by("-created_at")[:limit] requests_dict = [] for request in requests: requests_dict.append({ "request_id": request.request_id, "pages": request.pages, "doc_type": request.doc_type, # "predict_result": request.predict_result, "created_at": request.created_at, "updated_at": request.updated_at, "preprocessing_time": request.preprocessing_time, "ai_inference_time": request.ai_inference_time, "cpu_percent": request.cpu_percent, "gpu_percent": request.gpu_percent, "used_memory": request.used_memory, "total_memory": request.total_memory, "gpu_stats": request.gpu_stats, "is_reviewed": request.is_reviewed, "is_bad_image_quality": request.is_bad_image_quality, }) return requests_dict def count_requests_by_date(days_limit=5): today = timezone.now().date() start_date = today - timedelta(days=days_limit) requests_by_date = SubscriptionRequest.objects.filter(is_test_request=False).filter(created_at__gte=start_date).values('created_at__date').annotate(count=Count('id')).values('created_at__date', 'count').order_by('created_at__date') count_dict = [] for rbd in requests_by_date: count_dict.append({ "date": rbd["created_at__date"], "count": rbd["count"], }) return count_dict def get_health_report(): return { "latest_requests": get_latest_requests(), "count_by_date": count_requests_by_date(), }