File indexing completed on 2026-11-09 10:47:31
0001 """Pages and cached-data reads for compute efficiency history."""
0002 import logging
0003 from datetime import date, datetime, timezone
0004
0005 from django.http import JsonResponse
0006 from django.shortcuts import render
0007
0008 from monitor_app import compute_efficiency as efficiency
0009
0010 logger = logging.getLogger(__name__)
0011
0012
0013 def compute_efficiency(request):
0014 today = datetime.now(timezone.utc).date()
0015 index = today.year * 12 + today.month - 1 - 5
0016 start = max(efficiency.START, date(index // 12, index % 12 + 1, 1))
0017 return render(request, 'monitor_app/compute_efficiency.html', {
0018 'history_start': efficiency.START.isoformat(),
0019 'default_start': start.isoformat(), 'today': today.isoformat(),
0020 })
0021
0022
0023 def compute_efficiency_data(request):
0024 if request.GET.get('daily_cores') == '1':
0025 from monitor_app.productive_cores import product
0026 try:
0027 cached = product(refresh=request.GET.get('refresh') == '1')
0028 return JsonResponse({'record': cached['value'], 'built_at': cached['built_at'],
0029 'refreshing': cached['refreshing']},
0030 status=200 if cached['value'] else 202)
0031 except Exception:
0032 logger.exception('Daily productive core history refresh failed')
0033 return JsonResponse({'error': 'Daily production history update failed.'}, status=503)
0034 today = datetime.now(timezone.utc).date()
0035 try:
0036 end = date.fromisoformat(request.GET.get('end') or str(today))
0037 start = date.fromisoformat(request.GET.get('start') or str(efficiency.START))
0038 bucket = request.GET.get('bucket', 'month')
0039 if not efficiency.START <= start <= end <= today or bucket not in ('month', 'week'):
0040 raise ValueError('Choose a valid date range and month or week grouping.')
0041 except ValueError as exc:
0042 return JsonResponse({'error': str(exc)}, status=400)
0043 try:
0044 cached = efficiency.product(refresh=request.GET.get('refresh') == '1')
0045 if request.GET.get('summary') == '1':
0046 current = efficiency.current_product()
0047 result = efficiency.dashboard_data(cached.get('value') or {}, current.get('value'))
0048 result.update(built_at=current['built_at'], refreshing=current.get('refreshing'),
0049 history_built_at=cached['built_at'])
0050 return JsonResponse(result, status=200 if result['current'] else 202)
0051 except Exception:
0052 logger.exception('compute efficiency history refresh failed')
0053 return JsonResponse({'error': 'History update failed; the failure is recorded in the server log.'}, status=500)
0054 value = cached.get('value')
0055 result = efficiency.display_data(value, start, end, bucket,
0056 exclude=request.GET.get('exclude_task') == '40856') if value else {}
0057 result.update(built_at=cached['built_at'].isoformat() if cached.get('built_at') else None,
0058 refreshing=cached.get('refreshing'), age_seconds=cached.get('age_seconds'))
0059 return JsonResponse(result, status=200 if value else 202)