CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics

From Expertiza_Wiki
Jump to navigation Jump to search

Background

In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.

Project Overview

The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.

Implementation

Checkbox to alter the Assignment Creation or Import

Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.

Mockup illustrating the proposed location for the mentor checkbox within the user interface form.

It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).

Automatic Assignment of Mentors

After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.

The outcome should be that the assigned mentor appears associated with the team in relevant views.

Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.

This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: MentorManagement#assign_mentor.

Mentors may also be manually assigned after a topic is created as per the addition button for topics that need a mentor

Screenshot demonstrating how to add a mentor to a topic manually.

Removal of Mentors

Mentors that are assigned to teams are able to be removed manually or automatically when a team drops the topic and the mentor is the only one left on the team.

The manual removal of mentors can be achieved by clicking the 'X' next to their name as they appear in the 'Mentor' column as part of the Topics tab within certain assignments.

Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.

Importing Topics

In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).

There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.

Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.
View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.
Confirmation view indicating the successful import of topics along with their assigned mentors.

The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.

Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.
Interface view for the topic tables that show an you can manually add and remove mentors from this view

Database

We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.

Files That Have Been Modified

The following files have been updated for this implementation:

Models:

Controller:

Views:

Helpers:

Migrations:

Config:

  • routes.rb - Added routes to controller for the add and remove mentor buttons

Testing

Test Plan

The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:

  • Storing Mentors with Topics:
    • Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).

assign_mentor_to_topic_action Team.add_mentor

  • Assigning Mentors During Topic Sign-up:
    • Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.

Team.add_mentor

  • Compatibility with Existing Assignment Logic:
    • Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.

MentorManagment.assign_mentor

  • Displaying Mentor Information:
    • Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.
  • Importing Topics with Mentors:
    • Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.
    • Verifying that topics are imported correctly when the mentor column is absent.
    • Confirming the "Include mentors" checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.

import_file_controller_spec

  • Manual Mentor Assignment: Testing the ability to manually add or edit a mentor for a topic via the UI.

add/remove_mentor

Test Coverage

Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.

Relevant Links

Team

Mentor

- Ed Gehringer

Members

- Jacob Winters - Alex Wakefield - John Buchanan