feat(report): add annotated wrinkle views and restore capture countdown
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
const assert=require('node:assert/strict'),S=require('../js/skin-score');
|
||||
function run(melanin,water,dark){const r=structuredClone(S.MOCK_RESULT);Object.assign(r.score_info,{melanin_score:melanin,water_score:water,dark_circle_score:dark});r.melasma={value:0};r.freckle={value:0};r.water={water_severity:3};return S.buildViewModel(r,S.MOCK_SIDE,{});}
|
||||
for(const [m,w,d]of[[66,97,30],[99,20,99],[99,99,99],[null,97,null],[null,null,null]]){
|
||||
const v=run(m,w,d),vars=v.cats.tone.vars,values=[v.cats.smooth.P,vars.color_score,vars.tone_scoring&&vars.tone_scoring.water_adjusted_score].filter(x=>typeof x==='number'&&Number.isFinite(x));
|
||||
assert.equal(v.dims.vita.P,Math.min(...values));assert.equal(v.vitaScoreRule,'independent-color-water-smooth-min-v1');assert.equal(v.total,S.weightedTotal(v.dims));
|
||||
const v=run(m,w,d),values=[v.cats.smooth.P,v.cats.tone.P].filter(x=>typeof x==='number'&&Number.isFinite(x));
|
||||
assert.equal(v.dims.vita.P,Math.min(...values));assert.equal(v.vitaScoreRule,'combined-tone-smooth-min-v2');assert.equal(v.total,S.weightedTotal(v.dims));
|
||||
assert.equal(v.dims.firm.P,Math.min(v.cats.contour.P,v.cats.wrinkles.P));assert.equal(v.dims.stab.P,Math.min(v.cats.sens.P,v.cats.acne.P));
|
||||
}
|
||||
assert(Math.abs(run(66,97,30).dims.vita.P-58.8)<1e-9);
|
||||
console.log('PASS independent vita min: color/water/smooth bottleneck, missing inputs, version and weighted total');
|
||||
assert(Math.abs(run(66,97,30).cats.tone.P-77.9)<1e-9);
|
||||
console.log('PASS restored dimension minima: combined tone/smooth, firm/stability unchanged, missing inputs, version and weighted total');
|
||||
|
||||
Reference in New Issue
Block a user