CSC/ECE 517 Fall 2019 - E1994. Mentor management for assignments without topics: Difference between revisions
No edit summary |
No edit summary |
||
Line 41: | Line 41: | ||
== '''Code Modified & Added''' == | == '''Code Modified & Added''' == | ||
Estimate files need to be modified:<br> | Estimate files need to be modified:<br> | ||
Controllers: | Controllers: | ||
*app/controllers/notification_controller.rb | *app/controllers/notification_controller.rb | ||
*app/controllers/participants_controller.rb | *app/controllers/participants_controller.rb | ||
Line 48: | Line 47: | ||
*app/controllers/join_team_requests_controller.rb | *app/controllers/join_team_requests_controller.rb | ||
*app/controllers/users_controller.rb | *app/controllers/users_controller.rb | ||
Models: | |||
*app/models/assignment.rb | |||
*app/models/assignment_*.rb | |||
*app/models/user.rb | |||
Revision as of 21:39, 10 November 2019
User Story
For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects. The instructor needs to watch teams being formed, and every time a new team is formed, a new mentor needs to be assigned, outside of Expertiza. This leads to a lot of work for the instructor, as well as sometimes long delays before a team is assigned a mentor.
The goal behind this project:
Develop a trigger that:
1) Is activated when any team has been formed that has k members, where k is greater than 50% of the maximum team capacity
- ex) max members = 4, trigger activated when the team size reaches 3
2) Assign a mentor to the team
- Mentors should be evenly assigned to teams, so a good strategy is to assign the mentor who has the fewest teams to mentor so far.
3) Notify the mentor via email that they are now assigned to a specific team, and provide the email addresses of the team members.
4) Possibly notify the team members that they have been assigned the mentor with contact information (further discussion here)
Design Pattern
Since the trigger we implemented would need multiple handlers and each of them reponses in different actions, we decide to use Chain of Responsibility as the design pattern. Chain of Responsibility is a behavioral design pattern that lets you pass requests along a chain of handlers. Upon receiving a request, each handler decides either to process the request or to pass it to the next handler in the chain.
Project Description
Old version:
For assignments without a topic, there is no way to assign a mentor to the team on Expertiza system but to manually assigned one via Email out of the system.
In the above case, only OSS project and final project which have topic could be assigned mentors automatically by Expertiza system.
New version:
Design Diagrams
Work Flow Diagram
Proposed Solution
The solution has five parts:
Code Modified & Added
Estimate files need to be modified:
Controllers:
- app/controllers/notification_controller.rb
- app/controllers/participants_controller.rb
- app/controllers/assignment_controller.rb
- app/controllers/join_team_requests_controller.rb
- app/controllers/users_controller.rb
Models:
- app/models/assignment.rb
- app/models/assignment_*.rb
- app/models/user.rb
Test Plan
To make sure the refactor code can work correctly, we need to run the original rspec test code and add some new test. Besides, we are plaining to test from UI to make sure all the features work. The test results are shown below.
- Run and pass existing RSpec Tests after refactoring
- Develop New RSpec Tests for the new features
- UI testing on the deployed project
RSpec Test
UI Test
Team Member
Our team members: (Sorted in Alphabetical order)
- Hongli Wang, hwang85@ncsu.edu
- Minghao Liu, mliu25@ncsu.edu
- Ruiwen Wu, rwu5@ncsu.edu
- Siwei Wen, swen4@ncsu.edu
Mentor: Mrs. Carmen Aiken Bentley