From bf3275a4544383dc5756a20ff3c98ab02d963235 Mon Sep 17 00:00:00 2001 From: Nguyen Ngo Date: Wed, 27 May 2026 16:56:06 -0400 Subject: [PATCH] 05/27 Sync with iPad app (Phase E) --- app/api/issues.py | 4 ++++ app/api/stats.py | 23 ++++++++++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/app/api/issues.py b/app/api/issues.py index 59c786c..464d7c4 100644 --- a/app/api/issues.py +++ b/app/api/issues.py @@ -77,6 +77,10 @@ def _issue_payload(issue): 'verification_note': issue.verification_note or None, # Reporter display name — shows who filed the issue. 'reported_by_name': issue.reporter.display_name if issue.reporter else None, + # Area name — set when the issue was flagged during an area-specific inspection. + 'area_name': issue.area.name if issue.area else None, + # Assigned-to display name — set when a director assigns the issue to a user. + 'assigned_to_name': issue.assigned_user.display_name if issue.assigned_user else None, } diff --git a/app/api/stats.py b/app/api/stats.py index b2db8dc..2762f5d 100644 --- a/app/api/stats.py +++ b/app/api/stats.py @@ -113,6 +113,14 @@ def dashboard_stats(): open_issues_all = open_q.all() open_issues = len(open_issues_all) + # ── Severity breakdown (derived from the same open_issues_all list) ─── + severity_breakdown = { + 'critical': sum(1 for i in open_issues_all if i.severity == 'critical'), + 'high': sum(1 for i in open_issues_all if i.severity == 'high'), + 'medium': sum(1 for i in open_issues_all if i.severity == 'medium'), + 'low': sum(1 for i in open_issues_all if i.severity == 'low'), + } + # ── SLA counts (derived from the same open_issues_all list) ────────── sla_breached = sum(1 for i in open_issues_all if sla_status(i) == 'breached') sla_at_risk = sum(1 for i in open_issues_all if sla_status(i) == 'at_risk') @@ -159,11 +167,12 @@ def dashboard_stats(): ) return api_ok({ - 'today_inspections': today_inspections, - 'completed_today': completed_today, - 'open_issues': open_issues, - 'avg_score_30d': avg_score, - 'pending_followups': pending_followups, - 'sla_breached': sla_breached, - 'sla_at_risk': sla_at_risk, + 'today_inspections': today_inspections, + 'completed_today': completed_today, + 'open_issues': open_issues, + 'avg_score_30d': avg_score, + 'pending_followups': pending_followups, + 'sla_breached': sla_breached, + 'sla_at_risk': sla_at_risk, + 'severity_breakdown': severity_breakdown, })