Live stats (top)
Four stat cards:- Active users — count of users with
active = true - Shifts logged — total shifts in the database
- Pending trades — count of trade requests in
pending - Pending absences — count of absence requests in
pending
Saved reports (table)
Each saved report has:- Name
- Kind (Hours / Attendance / Overtime / Coverage / Time bank / Trades)
- Owner
- Shared flag
In this version, Reports is a lightweight scaffolding — the actual charting and export aren’t yet implemented. Kinds map to planned report types; saving a report stores the config for when those views ship.
Save a report
Fill the form:- Name — required
- Kind — pick from the dropdown
- Shared — if checked, visible to anyone with
reports.view
Planned kinds
Hours worked
Regular vs. OT by user or group over a period.
Attendance
Unscheduled absences, tardiness (future clock-in data).
Overtime distribution
Who’s getting the most OT? Helps enforce fairness policies.
Coverage analysis
Historical coverage vs. plan — where have we been under-staffed?
Time bank
Balances across the org; burn-rate by type.
Trade activity
Who’s trading with whom? Any pattern that suggests burnout?
Required permissions
reports.view— see the page and saved reportsreports.manage— save/edit reports