From df5b661d5f3e5b984298417362d1e67a96795ba7 Mon Sep 17 00:00:00 2001 From: v6ole Date: Fri, 26 Jun 2026 16:44:59 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A1=AB=E6=8A=A5=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E4=B8=8D=E5=86=8D=E9=99=90=E5=AE=9A=20role=3Dmanager=EF=BC=8C?= =?UTF-8?q?=E5=8F=AA=E7=9C=8B=20require=5Freport=3DTrue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 之前: role='manager' AND require_report=True → 只统计客户经理 现在: require_report=True → 统计所有需填报的用户 Co-Authored-By: Claude --- backend/app/services/dashboard.py | 9 +++++---- backend/app/services/scheduler.py | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) 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()