v2 Admin Spec — Teacher Management

Teacher Management

Domain 6 of the Enhanced Candidate A navigation structure. Contains: Teaching Assistants list + TA Detail Page (4 tabs), Teacher Assignment Criteria, TA Reports, Student Groups.

1. Domain Overview

Teacher Management groups everything related to TAs — profiles, schedules (managed in Scheduling domain but visible here), student assignments, and performance. Moving Teacher Assignment Criteria (from Settings) and TA Reports (from Reports) here puts them where they logically belong.

2. Screen: Teaching Assistants List

2.1 Purpose

View all TAs. Entry point to TA Detail Pages. Relocated from People > Teaching Assistants.

2.2 Entry Points

2.3 Data Displayed

Column Source Sortable
Name user_profile.first_name + last_name Yes
Email users.email Yes
Status users.user_activation_status Yes
Assigned Students Count from group membership (scoped to selected semester) Yes
Avg Response Time Computed from submission review times Yes
Live Sessions / Week (NEW) Count of scheduled live sessions per week for this TA in the selected semester Yes
Session Slots / Week (NEW) Count of 1:1 appointment slots open per week for this TA in the selected semester Yes
Groups Count of groups assigned (scoped to selected semester) Yes

Filters:

2.4 Actions

2.5 States

Standard list. Empty: "No teaching assistants configured."

2.6 Role Visibility

Admin: Full. View-Only: View. TA/Support: Hidden.

3. Screen: TA Detail Page (Rich Entity Page)

3.1 Purpose

Consolidated TA view. 4 tabs: Profile, Schedule, Students & Groups, Performance.

3.2 Entry Points

3.3 Entity Header

Field Source
Name user_profile
Email users.email
Status Badge (Active/Inactive)
Timezone users.timezone
Student Count Derived
Avg Response Time (NEW) Computed

Breadcrumb: Teacher Management > Teaching Assistants > [TA Name]

3.4 Tab: Profile

Standard TA profile fields: name, email, timezone, status, contact info. Actions: Edit Profile (Admin only)

3.5 Tab: Schedule

Field Source
Weekly availability grid From TA Schedules data
Timezone users.timezone
Personal Holidays TA-specific holidays
Upcoming Appointments Next 7 days of appointments

Actions:

3.6 Tab: Students & Groups (NEW)

Assigned Students table:

Column Source
Student Name via group_members → users
Level enrollment level
Submissions Count this semester
Pending Review Submissions where assessment_status=0
Last Submission Date

Groups table:

Column Source
Group Name group_name.name
Members Count of group_members
Next Appointment From appointments

Actions:

3.7 Tab: Performance (NEW)

Metric Source Display
Avg Response Time Computed: avg(review_date - submission_date) for this TA "2.1 days" — highlighted red if >2 days (48hrs)
Submissions Received (NEW) Total count of submissions from this TA's assigned students this semester (includes reviewed + pending + rejected) Number
Submissions Reviewed Count of submissions with assessment_status != 0 this semester (subset of Submissions Received) Number
Reviews Total All-time count of reviewed submissions Number
Pending Reviews Submissions under review assigned to this TA (assessment_status = 0) Number (highlighted if >0)
Avg Grade Given (NEW) Mean of numeric grades across reviewed submissions this semester "82 / 100" (or equivalent scale)
Student Pass Rate % of assigned students who passed in previous semester "87%"
Student Fail Rate Complement "13%"

Disambiguation notes:

States:

3.8 Cross-Tab Behaviors

4. Screen: Teacher Assignment Criteria

4.1 Purpose

Configure how students are auto-assigned to TAs at enrollment. The primary surface is a per-TA matrix where each TA's capacity, level specialization, and new-vs-returning routing are edited in one row. A small set of named rules governs global behavior (gender match, repeat-student rotation, distribution strategy). A read-only preview panel shows the current config's distribution outcome for a sample enrollment count.

Relocated from Settings.

4.2 Entry Points

4.3 Per-TA Matrix (PRIMARY SURFACE)

Each active TA has one row in the matrix for the selected semester. Inline editing via cell controls.

Column Type Source / Behavior
TA Name Read-only user_profile.first_name + last_name — click → TA Detail
Capacity Number input Max students this TA will take this semester. Required. Range: 0-200.
Level Specialization Checkbox group Checkboxes for Levels 0, 1, 2, 3, 4. Multi-select. Empty = accepts all levels.
Student Type Routing Select "New", "Returning", or "Both". Controls which student pool this TA is eligible for. Default: Both.
Active Toggle If off, TA is excluded from auto-assignment this semester (profile remains active in Teachers list).

Matrix actions:

States:

Validation:

4.4 Named Rules (SECONDARY SURFACE)

A small, fixed set of system-level rules sits above the matrix. Not a CRUD catalog — these are hard-coded rule names with per-rule controls.

4.4.1 Gender Match

4.4.2 Repeat-Student Rotation

Policy source (Apr 22 transcript L125): "For repeat students, we will assign them to a different teacher, if at all possible. So that's like our policy and that kind of goes into like assignment criteria as well. That a student, if possible, is assigned to a different teacher for the upcoming semester."

When a student re-enrolls for a new semester, the system attempts to assign them to a TA they have not had previously. This rule is applied before matrix-based distribution.

Logic:

  1. On enrollment, check group_members + group_name for this student's history of TA assignments (all prior user_link_level_tag records).
  2. Filter the pool of eligible TAs to those who pass gender match + capacity + student-type routing constraints (matrix-phase eligibility).
  3. From that eligible pool, exclude any TA the student has had in any prior semester.
  4. If at least one TA remains: auto-assign to one of them (weighted by capacity via the Distribution Strategy).
  5. If no alternative TA remains (all eligible TAs have been previous TAs for this student, or only the previous TA is eligible): fall back to the previous TA rather than leave the student unassigned.
  6. If even the previous TA is unavailable (inactive, at capacity, gender-mismatched): fall through to standard matrix distribution with no rotation constraint.

Control: Single toggle at the top of the Named Rules panel: "Rotate repeat students to a different TA when possible" (default: on). Precedence: Evaluated after gender match, before matrix distribution. Note: Turning this toggle off does NOT revert to "assign to previous TA" — it simply disables the rotation preference, letting repeat students flow through normal matrix distribution with no history-based preference. (If matrix distribution happens to land a repeat student back on their previous TA with the toggle off, that is not a constraint violation — the rotation preference simply doesn't apply.)

4.4.3 Distribution Strategy

Selects how remaining students (those not placed by the repeat-student rule) are distributed across matrix-eligible TAs.

Option Behavior
Weighted by Capacity (default) Fill each eligible TA proportional to their capacity percentage. Example: a TA with capacity 10 takes 1 student when a TA with capacity 50 takes 5, matching a 20% fill rate across both. Deterministic — derived from capacity, not separately-tunable weights.
Round Robin Rotate through eligible TAs one student at a time until capacities are met.
Manual Auto-assignment is disabled; all students enter a manual placement queue.

Control: Radio-group selector in Named Rules panel. Precedence: Governs matrix-phase distribution only.

4.4.4 Dropped Rule — Timezone Proximity

The v1 Timezone Proximity rule is removed. Stakeholder rejected it during review. No replacement; if timezone constraints are needed in the future, the matrix schema or a new named rule would need to be reintroduced.

4.5 Preview Panel (READ-ONLY)

A read-only panel under the matrix shows the current configuration's distribution outcome for a sample enrollment count.

Layout:

TA Capacity Projected Assignments Fill %
Alia Rahman 50 30 60%
Yusuf Khan 20 12 60%
Fatima Noor 10 6 60%
... ... ... ...
Total 847 N

Mockup note: Preview numbers are hardcoded in the mockup; no live algorithm computation. Production should run the actual weighted-fill algorithm.

4.6 Precedence Summary

Auto-assignment evaluation order (highest priority first):

  1. Gender match — hard filter; excludes non-matching TAs from eligibility
  2. Repeat-student rotation (if toggle on) — for repeat students, prefers a TA they have not had previously; falls back to previous TA only when no alternative is eligible (see §4.4.2)
  3. Matrix constraints — filter eligible TAs by Level Specialization, Student Type Routing, Active, and remaining Capacity
  4. Distribution Strategy — allocates remaining students across the filtered eligible TAs

4.7 Role Visibility

Admin: Full edit on matrix + named rules. View-Only: View only. TA: Hidden.

4.8 Open Questions (TBD)

Resolved 2026-04-21 per STAKEHOLDER-ANSWERS (defaults #2, #3 + Q8) — Weighted distribution is deterministic from TA capacity; conflict resolution surfaces a manual placement queue; Semester Hub entry point provides sufficient semester context (no explicit semester selector on Assignment Criteria screen).

  1. Weighted distribution determinism: Is the Weighted by Capacity strategy strictly deterministic from capacity percentages (stakeholder's example implies yes), or should admins be able to tune per-TA weights independently of capacity? Default assumption: deterministic. Resolved 2026-04-21 — Deterministic from capacity confirmed per STAKEHOLDER-ANSWERS (default #2).
  2. Conflict resolution: When no TA satisfies all hard constraints for a student (e.g., no female TA handles Level 3 for new students), what is the fallback? Options: (a) route to a manual placement queue, (b) relax lowest-priority matrix constraint (Level → Student Type → Capacity), (c) flag and block enrollment. Resolved 2026-04-21 — Option (a) manual placement queue confirmed per STAKEHOLDER-ANSWERS (default #3).
  3. Semester binding: The matrix is scoped to a semester. Entry points today are sidebar + Semester Hub Setup Checklist. Is an explicit semester selector needed on the screen, or is the Semester Hub context sufficient? Resolved 2026-04-21 — Semester Hub entry point provides sufficient context; no explicit semester selector required per STAKEHOLDER-ANSWERS (Q8).

5. Screen: TA Reports

5.1 Purpose

Track TA performance and their students. Relocated from Reports.

5.2 Entry Points

5.3 Existing Capabilities (preserved)

5.4 Role Visibility

Admin: Full + export. View-Only: View only.

6. Screen: Student Groups

6.1 Purpose

Manage student groups and assignments. Previously accessible only via TA detail pages. Now surfaced to nav.

6.2 Entry Points

6.3 Data Displayed

Column Source Sortable
Group Name group_name.name Yes
TA users.name via group_name.teacher_id Yes
Members Count of group_members Yes
Semester Derived from enrollment Yes
Protected group_name.prevent_delete No

6.4 Existing Capabilities (preserved from StudentGroupController)

6.5 Role Visibility

Admin: Full CRUD. View-Only: View only. TA (via "My Groups"): own groups view-only.