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 v3 = variant3(classified, isVacation);
|
||||||
const results = [v1, v2, v3];
|
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];
|
let winner = results[0];
|
||||||
for (let i = 1; i < results.length; i++) {
|
for (let i = 1; i < results.length; i++) {
|
||||||
if (results[i].bonus > winner.bonus) {
|
const r = results[i];
|
||||||
winner = results[i];
|
if (r.bonus > winner.bonus) {
|
||||||
|
winner = r;
|
||||||
|
} else if (r.bonus === winner.bonus && r.eligible && !winner.eligible) {
|
||||||
|
winner = r;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
winner.isWinner = true;
|
winner.isWinner = true;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue