fix(recommendation): use displayed skin age across reports and admin
This commit is contained in:
@@ -7,7 +7,7 @@ function check(age, firm, vita, stab, tier, adjustment = 'none') {
|
||||
const r = SS.recommendProduct(age, { firm, vita, stab });
|
||||
assert.equal(r.tier, tier, `age=${age}; scores=${firm}/${vita}/${stab}`);
|
||||
assert.equal(r.adjustment, adjustment);
|
||||
assert.equal(r.version, '2026-10-12-skin-age-v1');
|
||||
assert.equal(r.version, '2026-10-16-display-skin-age-v2');
|
||||
if (tier) assert(Math.abs(r.tier - r.baseTier) <= 1);
|
||||
count++;
|
||||
}
|
||||
@@ -50,11 +50,12 @@ const raw = JSON.parse(JSON.stringify(SS.MOCK_RESULT));
|
||||
raw.skin_age = { value: 24 };
|
||||
for (const realAge of [24, 40, 60, undefined]) {
|
||||
const vm = SS.buildViewModel(raw, SS.MOCK_SIDE, { realAge });
|
||||
assert.equal(vm.essence.tier, 1); // Weak wrinkles never upgrade under32.
|
||||
assert.equal(vm.recommendation.skinAge, 24);
|
||||
const age=realAge==null?24:Math.max(realAge-5,Math.min(realAge+5,24));
|
||||
assert.equal(vm.essence.tier, SS.recommendProduct(age,vm.recommendation.scores).tier);
|
||||
assert.equal(vm.recommendation.skinAge, age);
|
||||
assert(Math.abs(vm.recommendation.scores.firm - 7.69) < 1e-12);
|
||||
assert.equal(UI.build(vm, raw).product.tier, 1);
|
||||
assert.equal(vm.skinAgeDisplay, realAge == null ? 24 : Math.max(realAge - 5, Math.min(realAge + 5, 24))); // Display clamp does not change raw-age recommendation.
|
||||
assert.equal(UI.build(vm, raw).product.tier,vm.essence.tier);
|
||||
assert.equal(vm.skinAgeDisplay, realAge == null ? 24 : Math.max(realAge - 5, Math.min(realAge + 5, 24)));
|
||||
count++;
|
||||
}
|
||||
delete raw.skin_age;
|
||||
@@ -62,6 +63,6 @@ const missing = SS.buildViewModel(raw, SS.MOCK_SIDE, { realAge: 60 });
|
||||
assert.equal(missing.group, null);
|
||||
assert.equal(missing.essence.tier, null);
|
||||
assert.equal(UI.build(missing, raw).product, null);
|
||||
assert(missing.recommendation.reason.includes('未获取有效原始肌龄'));
|
||||
assert(missing.recommendation.reason.includes('未获取有效展示肌龄'));
|
||||
count++;
|
||||
console.log(`PASS: ${count} recommendation cases; boundary/threshold/missing/raw-age/actual-age isolation`);
|
||||
console.log(`PASS: ${count} recommendation cases; unchanged boundary/threshold rules, display-age input and missing-age handling`);
|
||||
|
||||
Reference in New Issue
Block a user