Spaces:
Sleeping
Sleeping
| """Dashboard statistics endpoint.""" | |
| from __future__ import annotations | |
| from fastapi import APIRouter, Depends | |
| from app.models.schemas import DashboardStats, ScanListItem, ModelPerformance | |
| from app.services.auth_service import get_current_user_id | |
| from app.utils.supabase_client import get_user_stats, get_user_scans | |
| router = APIRouter(tags=["stats"]) | |
| async def dashboard_stats(user_id: str = Depends(get_current_user_id)): | |
| """Get aggregated dashboard statistics for the current user.""" | |
| stats = get_user_stats(user_id) | |
| recent_raw, _ = get_user_scans(user_id, limit=5) | |
| recent = [ | |
| ScanListItem( | |
| id=s["id"], | |
| scan_type=s["scan_type"], | |
| session_label=s.get("session_label"), | |
| image_url=s.get("image_url", ""), | |
| urgency=s.get("urgency", "clear"), | |
| findings_count=len(s.get("findings", [])), | |
| created_at=s.get("created_at", ""), | |
| ) | |
| for s in recent_raw | |
| ] | |
| # Static model performance (from benchmarks) | |
| model_perf = [ | |
| ModelPerformance(name="DenseNet121", task="Chest Pathology", auc=0.847, color="bg-primary"), | |
| ModelPerformance(name="YOLOv8", task="Fracture Detection", auc=0.891, color="bg-secondary"), | |
| ModelPerformance(name="ViT", task="Wound Classification", auc=0.823, color="bg-info"), | |
| ] | |
| return DashboardStats( | |
| total_scans=stats["total_scans"], | |
| critical_findings=stats["critical_findings"], | |
| avg_confidence=stats["avg_confidence"], | |
| avg_report_time=8.4, # Estimated average | |
| recent_scans=recent, | |
| finding_distribution=stats["finding_distribution"], | |
| model_performance=model_perf, | |
| ) | |