fix(calculator): prefer eligible variant over ineligible at bonus-tie
Winner-picker used strict > with lowest-variantId tie-break, which made V1 (ineligible) win over V3 (eligible) when all variants produced bonus=0 on Sa+So-only duties. Now ties prefer the eligible variant, keeping the lowest-variantId rule as a sub-tie-breaker.
This commit is contained in:
parent
49b3b53878
commit
c733c3ed02
1 changed files with 7 additions and 3 deletions
|
|
@ -67,11 +67,15 @@ class BonusCalculator {
|
|||
const v3 = variant3(classified, isVacation);
|
||||
const results = [v1, v2, v3];
|
||||
|
||||
// Pick winner: highest bonus, tie-breaker = lowest variantId (strict >)
|
||||
// Pick winner: highest bonus; on tie prefer eligible over ineligible;
|
||||
// further tie-break = lowest variantId (strict > preserves it).
|
||||
let winner = results[0];
|
||||
for (let i = 1; i < results.length; i++) {
|
||||
if (results[i].bonus > winner.bonus) {
|
||||
winner = results[i];
|
||||
const r = results[i];
|
||||
if (r.bonus > winner.bonus) {
|
||||
winner = r;
|
||||
} else if (r.bonus === winner.bonus && r.eligible && !winner.eligible) {
|
||||
winner = r;
|
||||
}
|
||||
}
|
||||
winner.isWinner = true;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue