Add /api/attendance/status_texts endpoint; dynamic status filter in Attendance List (filter by status_text LIKE)

This commit is contained in:
IT狗
2026-07-21 18:02:32 +08:00
parent ef57d7cd59
commit 4c9db01213
2 changed files with 31 additions and 9 deletions
+12
View File
@@ -1098,6 +1098,15 @@ async def dashboard_summary(
"staff_count": len(staff_set),
}
@app.get("/api/attendance/status_texts")
async def attendance_status_texts(
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user),
):
"""Return distinct status_text values for filter dropdown."""
rows = db.query(AttendanceRecord.status_text).distinct().all()
return [r[0] for r in rows if r[0]]
@app.get("/api/attendance/stats")
async def attendance_stats(
date_from: Optional[str] = None,
@@ -1234,6 +1243,7 @@ async def attendance_records(
date_to: Optional[str] = None,
staff: Optional[str] = None,
status: Optional[str] = None,
status_text: Optional[str] = None,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user),
):
@@ -1256,6 +1266,8 @@ async def attendance_records(
q = q.filter(AttendanceRecord.employee_name == staff)
if status:
q = q.filter(AttendanceRecord.status_code == status)
if status_text:
q = q.filter(AttendanceRecord.status_text.like(f"%{status_text}%"))
if search:
like = f"%{search}%"
q = q.filter(or_(