From c733c3ed028b9b54fea70c9608a09dcad84358ab Mon Sep 17 00:00:00 2001 From: Kenearos Date: Tue, 12 May 2026 18:36:24 +0200 Subject: [PATCH] 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. --- calculator.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/calculator.js b/calculator.js index 19b0e37..77a18e6 100644 --- a/calculator.js +++ b/calculator.js @@ -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;