fix: 填报统计不再限定 role=manager,只看 require_report=True
之前: role='manager' AND require_report=True → 只统计客户经理 现在: require_report=True → 统计所有需填报的用户 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -55,10 +55,11 @@ async def get_reporting_progress(db: AsyncSession, reference_date: date | None =
|
|||||||
"""Get per-manager reporting progress. Managers only see themselves."""
|
"""Get per-manager reporting progress. Managers only see themselves."""
|
||||||
monday, sunday = get_week_range(reference_date)
|
monday, sunday = get_week_range(reference_date)
|
||||||
|
|
||||||
managers_result = await db.execute(select(User).where(User.role == "manager", User.require_report == True))
|
# Get all users who need to report (any role, filtered by require_report)
|
||||||
all_managers = managers_result.scalars().all()
|
managers_result = await db.execute(select(User).where(User.require_report == True))
|
||||||
|
all_reporters = managers_result.scalars().all()
|
||||||
# Filter: managers only see themselves
|
# 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
|
# Get visit counts per manager this week
|
||||||
visits_result = await db.execute(
|
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()}
|
visit_map = {str(uid): cnt for uid, cnt in visits_result.all()}
|
||||||
|
|
||||||
progress = []
|
progress = []
|
||||||
for m in managers:
|
for m in reporters:
|
||||||
count = visit_map.get(str(m.id), 0)
|
count = visit_map.get(str(m.id), 0)
|
||||||
# Calculate expected working days (Mon-Fri)
|
# Calculate expected working days (Mon-Fri)
|
||||||
days_passed = min((date.today() - monday).days + 1, 5)
|
days_passed = min((date.today() - monday).days + 1, 5)
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ async def check_daily_reporting(db: AsyncSession) -> dict:
|
|||||||
if weekday >= 5: # Skip weekends
|
if weekday >= 5: # Skip weekends
|
||||||
return {"status": "weekend", "date": str(today)}
|
return {"status": "weekend", "date": str(today)}
|
||||||
|
|
||||||
# Get all managers who need to report
|
# Get all users who need to report
|
||||||
result = await db.execute(
|
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()
|
managers = result.scalars().all()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user