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:
Kenearos 2026-05-12 18:36:24 +02:00
parent 49b3b53878
commit c733c3ed02

View file

@ -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;