CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management

From Expertiza_Wiki
Revision as of 20:28, 23 March 2025 by Jmwinte3 (talk | contribs)
Jump to navigation Jump to search

Background

Previously, mentors had to be manually assigned by reviewing team formations, a process that required frequent monitoring and manual intervention. The implementation of automatic mentor assignment significantly reduced this workload.

Project Overview

The mentor assignment system was introduced in 2023 to streamline the process of assigning mentors to teams within Expertiza, an open-source course management platform designed for collaborative learning in large Object-Oriented Programming assignments. The primary focus of this project is to enhance the mentor management system. Within Expertiza, mentors can be assigned to teams either manually or automatically. Automatic assignment is triggered when a team reaches more than 50% of its capacity.

Challenges

   While the system successfully assigns mentors automatically, there is no functionality to notify teams and mentors via email when an assignment is made
   ** This feature needs to be implemented to ensure clear communication.
   The only available team listing is on the "Create Teams" page, where team members are displayed on separate lines, and mentors appear in an arbitrary position within the team structure.
   ** Improvements are needed to enhance clarity and usability in mentor assignment tracking.

Tasks

Email Notifications

Mentor Meeting Management

Dr. Gehringer expressed to us that the current view of mentor meetings took up too much space and proposed to us a mockup of how he would like the view to look, which can be seen below.

Backend and Controller Updates

Refactor Existing Codebase

Testing and Validation

Implementation

Email Notifications

Mentor Meeting Management

   Added functionality to add and remove meeting columns dynamically using buttons.
   Implemented logic to prevent adding or removing columns when a meeting is already scheduled in that column.
   Enabled the deletion of individual meetings from the database through button interactions.
   Reworked the meeting deletion process for improved reliability.
   Removed the rendering of partials to avoid issues with Turbo, which was interfering with event listener functionality.
   Refactored the meeting date display and input to improve user experience.
   Improved the synchronization of header and body columns when adding meeting columns.
   Implemented dynamic table features for the Assignment team view, similar to the course team view.
   Made meeting fields editable with a save icon for changes.
   Added dynamic updates to the teams table and header based on filter dropdown selections.
   Added an actions column to the teams table with updated styling.
   Modified the teams list view to use a new, more efficient table structure.
   Adjusted the default meeting date format to "mm-dd-yy".
   Removed the dropdown for adding meeting columns and replaced it with a header button.
   Restricted dropdowns to courses/assignments where the user has permissions.
   Added a maximum limit of 5 meeting columns.
   Implemented dynamic rendering of meeting columns based on the maximum number of meetings plus one.
   Refactored the meetings table to be based on the Participants class.
   Corrected mentor logic in the teams table to display mentor names based on their can_mentor status.
   Renamed the date column in the database to meeting_date for clarity and consistency.
   Added a destroy route for team meetings.
   Reworked how destroying meetings works.
   Removed unnecessary whitespace from various files.

Backend and Controller Updates

   Added a destroy route for the teams meetings.
   Reworked how destroying a meeting works.
   Changed how teams are determined to be mentored by a given user.
   Changed how it is determined which teams should be displayed to mentors.
   Reworked meetings table to be based on participants class.
   Added database relationship for mentored_team and meetings.
   Removed meetings from teams_controller.
   Added filter function to meetings_controller.
   Reimplemented meetings controller.
   Added the instructor table in paginated form and changed routes for meetings to more standard ruby on rails form.
   Added some css to the meetings table for instructors, moved some of the instance variables around within the meetings_controller.
   Initial refactor and inclusion of @meetings into the Teams_Controller model.

Refactor Existing Codebase

   Refactored code to remove unnecessary whitespace.
   Renamed database column date to meeting_date for clarity.
   Refactored the get_dates function for compatibility with older Ruby versions.
   Changed table column names to snake_case to follow Ruby naming conventions.
   Refactored code to remove rendering partials to avoid Turbo issues.
   Initial refactor session with an LLM.

Testing and Validation

   Added an rspec test generated by an LLM.


Relevant Links

Team

Mentor

  • Ed Gehringer

Members

  • Jacob Winters
  • Alex Wakefield
  • John Buchanan