The Allocation Assistant should be a mechanism that can either be fired manually by a shift planner or in regular intervals like every end of the week.
The assistant should
be able to schedule all teams having the number of requests between the min and max limits and also one requesting team leader.
be able to accept requests on a shift when there are already some accepted requests. Only of course, if the number of requests, that came later, wouldn't overcome the max limit.
automatically choose a request to accept and decline the others, if there are more requests than allowed by the max limit.
It should be possible to configure the assistant in what it is supposed to do. Like if it should only do the first one of the three tasks described above or only two or all three.
The latter needs a prioritization algorithm. I have two ideas for that:
Loop through these shifts and in each one look for the requester with the fewest accepted requests for this week. If that equals for two or more requesters, it should choose the requester with fewest left-open requests for this week.
Loop through the users, beginning at the one with the fewest accepted requests this week to the one with the most. Every one gets one accepted request, then it starts all over again until no open request is left.
Nice approach. The priority of the shifts should be sorted as well (possible for 1 and 2)
Start with the shifts with the lowest number of requests (sum of accepted and open requestors)
The Allocation Assistant should be a mechanism that can either be fired manually by a shift planner or in regular intervals like every end of the week.
The assistant should
It should be possible to configure the assistant in what it is supposed to do. Like if it should only do the first one of the three tasks described above or only two or all three.
The latter needs a prioritization algorithm. I have two ideas for that:
Thoughts on this are welcome.