# 列表页筛选补全 + 考勤预警 + 同步对接 > **For agentic workers:** Use subagent-driven-development. Steps use checkbox syntax. **Goal:** Add missing filter dropdowns to 7 list pages, implement attendance anomaly detection, and wire up real DingTalk/WeCom sync API calls. **Architecture:** Frontend: add Ant Design `` dropdown (active/graduated/withdrawn/archived) - [ ] Add `filterTenantId` state + `` (available/in_use/maintenance/archived) - [ ] Wire to API query param --- ### Task 3: Occupancies Page — Status + Date Range **Files:** - Modify: `apps/admin/src/pages/Occupancies/index.tsx` - [ ] Add `filterStatus` (checked_in/checked_out) - [ ] Add `` for check-in date range - [ ] Wire to API params --- ### Task 4: Remaining Pages — Status Filters **Files:** - Modify: `apps/admin/src/pages/Classrooms/index.tsx` — status dropdown - Modify: `apps/admin/src/pages/Expenses/index.tsx` — status filter - Modify: `apps/admin/src/pages/Tenants/index.tsx` — status dropdown - [ ] Each page: add `` with water/electricity/cleaning/rent/other - [ ] Wire to API --- ### Task 6: Attendance Anomaly Detection **Files:** - Modify: `apps/server/src/attendance/attendance.service.ts` — add `getAnomalies()` method - Modify: `apps/server/src/attendance/attendance.controller.ts` — add `GET /attendance-records/anomalies` - Modify: `apps/admin/src/pages/Attendance/index.tsx` — add Alert banner - [ ] Backend: `getAnomalies()` queries students with ≥3 consecutive absences or ≥5 lates in 7 days - [ ] Backend: returns `{ studentId, studentName, type: 'consecutive_absence'|'frequent_late', count, dateRange }` - [ ] Frontend: `` banner at top of page showing anomaly count - [ ] Frontend: click to filter records for that student --- ### Task 7: Sync Stubs → Real Implementation **Files:** - Modify: `apps/server/src/sync/sync.service.ts` - [ ] Check `process.env.DINGTALK_APP_KEY` before attempting ding sync - [ ] Check `process.env.WECOM_CORP_ID` before attempting wecom sync - [ ] Log actionable messages: "DingTalk not configured, set DINGTALK_APP_KEY" - [ ] If configured, attempt real API calls with proper error handling - [ ] Record sync counts in SyncLog