Admin Spec — Scheduling
Scheduling
Domain 5 of the Enhanced Candidate A navigation structure. Contains: Calendar View (NEW), Live Sessions, Upcoming Appointments, TA Schedules, Holidays. Primary workflow served: WF5 (Scheduling — reduced from 4-6 screens to 1-2 screens) Key new screen: Calendar View — unified calendar showing all live sessions and 1:1 appointments across all TAs
1. Domain Overview
Scheduling groups all time-based events: live sessions and 1:1 appointments. Previously these were split between Program (Live Sessions) and Appointments (Upcoming, TA Schedules, Holidays). In Enhanced Candidate A, they're unified under one domain with a new Calendar View providing the unified overview the admin requested (Interview: "Calendar view of all live sessions and 1:1 appointments across all TAs, filterable by gender").
Key changes:
- Calendar View (NEW) provides the unified cross-TA view
- Holidays merged: system holidays + live session holidays (from dissolved Students Management grab-bag) into one screen
- Live Sessions moved from Program (time-based, not passive content)
2. Screen: Calendar View (NEW)
2.1 Purpose
Unified visual calendar of all live sessions and 1:1 appointments across all TAs. Addresses interview request for "calendar view filterable by gender."
2.2 Entry Points
- Sidebar: Scheduling > Calendar View
- Dashboard: Appointment Utilization tile click
- Student Detail > Appointments tab: "Calendar View" link
2.3 Layout
Calendar grid with filter bar above. Supports week view (default) and month view toggle.
2.4 Data Displayed
Events on calendar:
| Event Type | Source | Display | Color |
|---|---|---|---|
| Live Session | live_sessions table |
Time block with session title, level badge | Blue |
| 1:1 Appointment | appointments table |
Time block with student name, TA name | Green |
| Cancelled | appointments with cancelled status |
Strikethrough, faded | Gray |
| Rescheduled | appointments where re_schedule=1 |
Original time shown faded, new time highlighted | Orange |
2.5 Filters
| Filter | Options | Default |
|---|---|---|
| View | Week / Month | Week |
| TA | All TAs / specific TA | All |
| Gender | All / Male / Female | All (filters by TA gender) |
| Level | All / Level 0-4 / Year 2 | All |
| Event Type | All / Live Sessions / Appointments | All |
2.6 Actions
| Action | Trigger | Permission | Behavior |
|---|---|---|---|
| Create Live Session | "+" button on time slot or "New Session" | Admin | Opens create session modal |
| Create Appointment | Click empty TA slot | Admin | Opens create appointment modal |
| View/Edit Event | Click existing event | Admin (edit), All (view) | Opens event detail modal |
| Navigate Weeks | ◀ ▶ arrows | All | Shifts week/month view |
| Today | "Today" button | All | Returns to current week/month |
| Export | "Export" button | Admin | Exports visible events as CSV |
2.7 States
| State | Display |
|---|---|
| Has events | Calendar with color-coded events |
| Empty week | Calendar grid with no events. "No sessions or appointments this week." |
| Loading | Skeleton calendar grid |
| Error | "Unable to load schedule data." + Retry |
2.8 Role Visibility
- Admin: Full view + all actions
- TA: Filtered to own events only (accessible as "My Schedule")
- View-Only: Full view, no create/edit actions
3. Screen: Live Sessions
3.1 Purpose
Schedule group learning sessions. Relocated from Program > Live Sessions.
3.2 Entry Points
- Sidebar: Scheduling > Live Sessions
- Calendar View: click on live session event
- Semester Hub > Setup Checklist: "Configure →" link (pre-filtered)
3.3 Layout
Filter bar + data table
3.4 Key Changes from Current
- New location (Scheduling section, was Program)
- Semester filter pre-population from Setup Checklist
- "Return to Checklist" banner when accessed from checklist
3.5 Data Displayed
| Column | Source | Sortable |
|---|---|---|
| Session Title | live_sessions title | Yes |
| Date/Time | live_sessions date | Yes |
| Level | level assignment | Yes |
| Semester | semester scope | Yes |
| Status | active/completed | Yes |
3.6 Existing Capabilities (preserved)
- Create live sessions (auto-creates one per level)
- Edit session details and dates
- Delete sessions
3.7 Actions
All existing CRUD preserved. Admin only.
3.8 States
Standard (loaded, empty: "No live sessions for this semester.", loading, error)
3.9 Role Visibility
Admin: Full CRUD. View-Only: View only. TA: Hidden from nav (sees events on Calendar/My Schedule).
4. Screen: Upcoming Appointments
4.1 Purpose
View and manage scheduled 1:1 sessions. Relocated from Appointments > Upcoming Appointments.
4.2 Entry Points
- Sidebar: Scheduling > Upcoming Appointments
- Calendar View: appointment event click
- Student Detail > Appointments tab: appointment click
4.3 Layout
Filter bar + data table
4.4 Data Displayed
| Column | Source | Sortable |
|---|---|---|
| Date/Time | appointments.apt_time |
Yes |
| Student | student name via enrollment | Yes |
| TA | users.name via appointments.ta_id |
Yes |
| Group | group_name.name via appointments.group_id |
Yes |
| Status | Derived (upcoming/completed/cancelled/rescheduled) | Yes |
| Rescheduled To | appointments.new_apt_time |
No |
4.5 Existing Capabilities (preserved)
- View all scheduled appointments
- Create appointment for a group
- Add single student appointment
- Cancel appointments
4.6 Actions
| Action | Trigger | Permission | Behavior |
|---|---|---|---|
| Create Group Appointment | "Create" button | Admin | Modal: select group, date, TA |
| Create Individual Appointment | "Add Student Appointment" | Admin | Modal: search student, select date, TA |
| Cancel | Cancel icon on row | Admin | Destructive confirmation |
| View Student | Student name click | All | → Student Detail Page |
| View in Calendar | "Calendar" link | All | → Calendar View filtered to this TA/date |
4.7 States
Standard list states
4.8 Role Visibility
- Admin: Full CRUD
- TA: Own appointments only (via "My Schedule" sidebar item)
- View-Only: View only
5. Screen: TA Schedules
5.1 Purpose
Configure when TAs are available for 1:1 booking. Relocated from Appointments > TA Schedules.
5.2 Entry Points
- Sidebar: Scheduling > TA Schedules
- TA Detail Page > Schedule tab links here
- Semester Hub > Setup Checklist: "Configure →" link
5.3 Layout
TA selector + weekly availability grid
5.4 Data Displayed
| Field | Source |
|---|---|
| TA Name | Selected TA |
| Timezone | users.timezone for selected TA |
| Weekly Grid | Days × time slots with available/unavailable indicators |
| TA Holidays | Personal holidays for this TA |
5.5 Existing Capabilities (preserved)
- Configure TA weekly availability
- Set timezone for TA
- Add/remove appointment slots
- Manage TA holidays
5.6 Actions
| Action | Trigger | Permission |
|---|---|---|
| Select TA | TA dropdown | Admin |
| Toggle Slot | Click time slot | Admin |
| Set Timezone | Timezone dropdown | Admin |
| Add TA Holiday | "Add Holiday" button | Admin |
| Clone Schedule (NEW) | "Clone to [New Semester]" button | Admin — copies this TA's schedule to next semester |
5.7 States
- TA selected, has schedule: Weekly grid populated
- TA selected, no schedule: Empty grid. "No availability configured for [TA Name]."
- No TA selected: "Select a TA to view and configure their schedule."
5.8 Role Visibility
- Admin: Full edit
- TA: Own schedule only (via "My Schedule" sidebar item), view-only
- View-Only: View only
6. Screen: Holidays
6.1 Purpose
Define system-wide non-working days. Merged: system holidays (from Appointments > Holidays) + live session holidays (from dissolved Students Management grab-bag #14).
6.2 Entry Points
- Sidebar: Scheduling > Holidays
- Semester Hub > Setup Checklist: "Configure →" link
6.3 Layout
Calendar view or list view (toggle)
6.4 Data Displayed
| Column | Source |
|---|---|
| Holiday Name | holiday title |
| Date | holiday date |
| Type (NEW) | System-wide / Live Sessions only / Appointments only |
| Affects | What this holiday blocks (all sessions, appointments only, etc.) |
6.5 Key Change from Current
- Merged: Previously holidays for appointments and live session holidays were in different screens. Now unified. Type field distinguishes scope.
6.6 Existing Capabilities (preserved)
- Manage public holidays (system-wide)
- Remove holidays
6.7 Actions
| Action | Trigger | Permission |
|---|---|---|
| Add Holiday | "Add Holiday" button | Admin |
| Edit | Edit icon | Admin |
| Remove | Delete icon | Admin (destructive) |
6.8 States
Standard (loaded, empty: "No holidays configured.", loading, error)
6.9 Role Visibility
Admin: Full CRUD. View-Only: View only. TA: Hidden.