illinois / queue

A microservice queue for holding open office hours
University of Illinois/NCSA Open Source License
82 stars 36 forks source link

Allow students to push off their on-queue time #327

Open mingchao-zhang opened 4 years ago

mingchao-zhang commented 4 years ago

Problem

Some students may be unavailable when it's their turn to get help from TAs after waiting in the queue for a long time. For example, they need to go to class. Currently, the TAs simply remove those students from the queue if the student does not provide a note that explains why he/she is unavailable. This is a problem because the unavailable students could be in the queue for a long time already, and they don't want to start over and wait in the queue from the end again when they become available later. In addition, if during some time period, many students manually provide notes that specify when they would be available again, the queue becomes messy and hard for TA's to track.

Scenario

Student Eric wanted to ask a question and he put himself on the CS 225 queue at 1 pm. There were 20+ students ahead of him in the queue. It's 3 pm, and Eric waited for two hours. It's finally Eric's turn to get help from a CS 225 TA. However, he had a class starting at 3 pm, and he had to leave the queue. When Eric finished his class at 4 pm, he had to start over and rejoined the queue, but there were still 20+ students ahead of him. Eric wasn't happy about this, because he thought that he should be placed at the front of the queue since he already waited for two hours before.

Solution:

Define a variable called minimum_hours_needed. For students who waited for more than minimum_hours_needed, we give them the option to push off their in-queue time to some time later. For example, let's define minimum_hours_needed=2. In the scenario above, since Eric waited for 2 hours in the queue, he can push off his on-queue time at 4 pm when his class ends. Now after he finishes the class at 4 pm, he would be in the front of the queue and get his help he needed without having to wait another 2 hours. The variable, minimum_hours_needed, is needed to avoid students abusing this feature. If we don't have minimum_hours_needed, many students would just put them in the queue whether they have questions or not, because if they don't have questions when it's their turn, they can always push off their in-queue time.