Student Experience - FaqiangMei/MHA-Survey-Portal GitHub Wiki

Student Experience

Objectives

  • Provide students with a clear view of assigned surveys, advisor feedback, and evidence expectations.
  • Enforce onboarding gates (profile completion, accessibility preferences) before dashboards unlock.
  • Reduce advisor follow-up by keeping reminders, downloads, and feedback in one place.

Entry Points & Gating

  1. Students authenticate through Google OAuth (Users::OmniauthCallbacksController).
  2. ApplicationController#check_student_profile_complete routes incomplete users to /student_profile/edit and /settings.
  3. Once complete, DashboardsController#student renders the student home experience.

Dashboard Modules

Module Description Key Files
Pending Surveys Lists open SurveyAssignments with due dates and start/resume actions. dashboards/student.html.erb, SurveyAssignments::Presenter
Completed Surveys Shows submitted surveys, advisor feedback snippets, and PDF download links (signed via SurveyResponse#signed_download_token). StudentQuestion, SurveyResponse
Notifications Mirrors Notification records so reminder jobs surface in-app. NotificationsController, SurveyNotificationJob
Evidence Checker Validates Google Drive permissions before evidence submission. EvidenceController#check_access, app/javascript/evidence/*

Survey Workflow

  1. Advisor assigns (or auto-assigner triggers) a survey → SurveyAssignments::AutoAssigner.
  2. Student completes the survey via SurveyResponsesController; partial saves supported.
  3. Advisor feedback flows back through FeedbacksController and displays beneath each completed survey card.

Accessibility & Personalization

  • SettingsController stores text_scale_percent; <html> font-size follows that percentage (layouts/application.html.erb).
  • High-contrast toggle in app/javascript/application.js adds body.high-contrast, styled in app/assets/stylesheets/application.css.

Notifications & Automation

  • SurveyNotificationJob plus SurveyAssignmentNotifier handle reminders for assigned, due soon, overdue, completion, and update events.
  • Students can download surveys/evidence via signed URLs without repeating OAuth.

Primary Data Surfaces

  • Tables: users, student_profiles, survey_assignments, survey_responses, notifications, feedbacks.
  • Services: Reports::DataAggregator (completion metrics), CompositeReportGenerator (PDF packets).

QA Checklist

  • Force an incomplete profile and confirm redirect to /student_profile/edit.
  • Assign a survey, submit, and ensure it moves Pending → Completed.
  • Toggle text scaling/high-contrast; confirm persistence after sign-out/in.
⚠️ **GitHub.com Fallback** ⚠️