Job reward retuned so weight dominates payoff (ISS-090, v0.47.0)
CI / build + unit + e2e (pull_request) Successful in 8m59s
CI / build + unit + e2e (pull_request) Successful in 8m59s
This commit is contained in:
@@ -78,7 +78,7 @@ describe('buildSeed', () => {
|
||||
expect(new Set(seed.packages.map((c) => c.id)).size).toBe(seed.packages.length);
|
||||
});
|
||||
|
||||
it('applies the reward formula: round(500 + 2.5 * km + 0.5 * weightKg), × special multiplier', () => {
|
||||
it('applies the reward formula (BASE_REWARD + REWARD_PER_KM * km + REWARD_PER_KG * weightKg) × special multiplier', () => {
|
||||
const seed = seedWith(42);
|
||||
for (const c of seed.packages) {
|
||||
const o = AIRPORTS.find((a) => a.icao === c.originIcao)!;
|
||||
@@ -134,6 +134,9 @@ describe('buildSeed', () => {
|
||||
it('rewardFor applies the documented formula', () => {
|
||||
expect(rewardFor(0, 0)).toBe(BASE_REWARD);
|
||||
expect(rewardFor(1000, 2_000)).toBe(Math.round(BASE_REWARD + REWARD_PER_KM * 1000 + REWARD_PER_KG * 2_000));
|
||||
// v0.47.0 (ISS-090): literal pins so future retunes are deliberate — weight must dominate payoff.
|
||||
expect(rewardFor(1000, 500)).toBe(4_000);
|
||||
expect(rewardFor(1000, 4_000)).toBe(11_000);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
+4
-1
@@ -90,9 +90,12 @@ export const MARKET_TARGET_OPEN_PACKAGES = 10;
|
||||
// Reward formula (v0.6.0 distance part, deliberately simple; real revenue/cost
|
||||
// modeling is a later increment; v0.27.0 weight part): reward = BASE_REWARD +
|
||||
// REWARD_PER_KM * great-circle km + REWARD_PER_KG * package weight kg.
|
||||
// v0.47.0 (ISS-090) retune: REWARD_PER_KG 0.5 → 2.0 so the weight term dominates
|
||||
// base+distance — heavier jobs must clearly pay more per kg to be worth taking
|
||||
// (a 1000 km leg went from €3,250 @500 kg / €5,000 @4,000 kg to €4,000 / €11,000).
|
||||
export const BASE_REWARD = 500;
|
||||
export const REWARD_PER_KM = 2.5;
|
||||
export const REWARD_PER_KG = 0.5;
|
||||
export const REWARD_PER_KG = 2.0;
|
||||
|
||||
// Job reward bonus (v0.38.0, ISS-072): reward ×= 1 + repRate(reputation, …) — better jobs at
|
||||
// higher reputation, exactly ×1 at the starting value.
|
||||
|
||||
Reference in New Issue
Block a user