Absence types
The distinction between
SICK and ACCIDENT is not cosmetic: they hit different
insurance and different payroll items, so recording an accident as illness produces a
wrong declaration.
Day portions
An absence is not always a whole day:FULL and HALF deliberately derive their hours from the schedule rather than
assuming 8.4 — a 60% employee’s full day is not a full-timer’s full day, and getting
this wrong quietly corrupts every balance.
Requesting and approving
1
Request
The employee submits from the portal, the iOS app, or the dashboard. They see their current
balance while requesting, so there are no surprises.
2
Approval
The request goes to the line manager, resolved through the org graph. HR can approve for anyone.
3
Outcome
Approved, rejected, or — for an already-approved absence — cancelled. Every transition is
audited and notifies the requester.
Permissions and scoping
staff-absence:create exists as its own permission rather than reusing :view. A read permission
authorising a write is how role drift turns into a security bug — widening :view later would
have silently granted the ability to create.