fix(attendance): admin month view no longer truncates at 100 records
The KPI cards and on-screen summary totals (computeUserTotals) are computed client-side from one month fetch. The hook requested limit=1000 but parsePagination silently clamped it to 100, so once a month exceeded 100 attendance rows (~5 employees x 21 shifts) the newest-first list dropped the EARLIEST days of the month — screen totals undercounted while the print path (complete server fetch) stayed correct. This is the data-volume cliff that made the summary counting look like it changed without any formula change: git archaeology confirms every counting formula is bit-identical from v1.9.1 through HEAD. - routes/admin/attendance.ts: list endpoint passes maxLimit 2000 to parsePagination (complete-month view; 2000 ~ 64 employees x 31 days) - useAttendanceAdmin: month fetch requests limit=2000 with the constraint documented - regression test: a 120-row month returns all 120 records Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -867,7 +867,10 @@ export default function useAttendanceAdmin({ alert }: AlertContext) {
|
||||
try {
|
||||
const [yearStr, monthStr] = month.split("-");
|
||||
|
||||
let recordsUrl = `${API_BASE}/attendance?year=${yearStr}&month=${monthStr}&limit=1000`;
|
||||
// The KPI cards + summary totals are computed from THIS fetch — it
|
||||
// must cover the complete month (the server allows limit up to 2000
|
||||
// for exactly this view; 2000 ≈ 64 employees × 31 days).
|
||||
let recordsUrl = `${API_BASE}/attendance?year=${yearStr}&month=${monthStr}&limit=2000`;
|
||||
if (filterUserId) recordsUrl += `&user_id=${filterUserId}`;
|
||||
|
||||
const [recordsResponse, balancesResponse] = await Promise.all([
|
||||
|
||||
Reference in New Issue
Block a user