Staff attendance audit trail and compliance
Every attendance change on Plinth goes through mark_staff_attendance — not a direct table
edit from the client. The RPC checks that the caller is a society admin, validates the
attendance state, upserts one row per staff member per calendar day, and appends an
audit_log entry (staff.attendance) with the state and date.
What the audit record captures
- Which staff member was marked
- Attendance state — present, absent, in, or out
- Date of the mark
- Who marked it (admin user) and timestamp
Same-day corrections overwrite the attendance row but generate a fresh audit entry, so the committee can see that a mark was updated — not silently changed.
Why committees care
- AGM questions — "Were we fully staffed during the monsoon leak week?"
- Security agency billing — reconcile billed guard count against marked present days
- Helpdesk accountability — tickets assigned to staff marked absent that day stand out
- Bye-law hygiene — workforce records sit alongside other governance data on one platform
Attendance is admin-only (RLS: is_admin). Residents cannot view or alter staff marks,
keeping internal workforce data off the resident-facing surface.