# Campus Attendance Backend ## Purpose The campus attendance API stores campus attendance system links and manually entered daily campus attendance summaries. The current CampusAttendance UI uses daily aggregate totals, not student-level attendance sessions. Student-level attendance remains in the existing generated `attendance_sessions` and `attendance_records` models. ## Data Model The module uses: - `campus_attendance_config` - `campus_attendance_summaries` Both tables include: - `organizationId` for tenant ownership. - `campus_key` for the approved UI campus keys: `tigers`, `gators`, `hawks`, `owls`, `wildcats`, `grizzlies`. - nullable `campusId` for future linkage to persisted campus rows. - audit fields and soft delete timestamps. ## API All routes require JWT authentication. - `GET /api/campus_attendance/configs` - `GET /api/campus_attendance/configs?campusKey=` - `PUT /api/campus_attendance/configs/:campusKey` - `GET /api/campus_attendance/summaries` - `GET /api/campus_attendance/summaries?campusKey=&startDate=&endDate=` - `PUT /api/campus_attendance/summaries/:campusKey/:date` ## Access Rules - Tenant-wide leadership roles can read all campus config and summary records. - Campus-scoped users can read their own campus when their backend campus name/code maps to an approved `campus_key`. - Attendance manager roles can update links and daily summaries. - The frontend does not send organization, campus UUID, creator, updater, or recorded-by labels. The backend derives them from the authenticated user. ## Data Contract Config mutation fields: - `attendance_link` Summary mutation fields: - `total_enrolled` - `total_present` - `total_absent` - `total_tardy` - `notes` The backend calculates `attendance_percentage` from `total_present / total_enrolled`. The frontend displays the backend-calculated value. ## Files - `backend/src/constants/campus-attendance.js` - `backend/src/db/models/campus_attendance_config.js` - `backend/src/db/models/campus_attendance_summaries.js` - `backend/src/db/migrations/20260608006000-create-campus-attendance-config.js` - `backend/src/db/migrations/20260608007000-create-campus-attendance-summaries.js` - `backend/src/services/campus_attendance.js` - `backend/src/routes/campus_attendance.js`