diff --git a/backend/app/services/dashboard.py b/backend/app/services/dashboard.py index f2a8c52..ed109d5 100644 --- a/backend/app/services/dashboard.py +++ b/backend/app/services/dashboard.py @@ -55,10 +55,11 @@ async def get_reporting_progress(db: AsyncSession, reference_date: date | None = """Get per-manager reporting progress. Managers only see themselves.""" monday, sunday = get_week_range(reference_date) - managers_result = await db.execute(select(User).where(User.role == "manager", User.require_report == True)) - all_managers = managers_result.scalars().all() + # Get all users who need to report (any role, filtered by require_report) + managers_result = await db.execute(select(User).where(User.require_report == True)) + all_reporters = managers_result.scalars().all() # Filter: managers only see themselves - managers = all_managers if role in ("director", "leader") else [m for m in all_managers if str(m.id) == user_id] + reporters = all_reporters if role in ("director", "leader") else [m for m in all_reporters if str(m.id) == user_id] # Get visit counts per manager this week visits_result = await db.execute( @@ -69,7 +70,7 @@ async def get_reporting_progress(db: AsyncSession, reference_date: date | None = visit_map = {str(uid): cnt for uid, cnt in visits_result.all()} progress = [] - for m in managers: + for m in reporters: count = visit_map.get(str(m.id), 0) # Calculate expected working days (Mon-Fri) days_passed = min((date.today() - monday).days + 1, 5) diff --git a/backend/app/services/scheduler.py b/backend/app/services/scheduler.py index 2525a6c..dc79871 100644 --- a/backend/app/services/scheduler.py +++ b/backend/app/services/scheduler.py @@ -15,9 +15,9 @@ async def check_daily_reporting(db: AsyncSession) -> dict: if weekday >= 5: # Skip weekends return {"status": "weekend", "date": str(today)} - # Get all managers who need to report + # Get all users who need to report result = await db.execute( - select(User).where(User.role == "manager", User.require_report == True) + select(User).where(User.require_report == True) ) managers = result.scalars().all()