feat: 真机反馈 11 项(下拉层级/侧脸蒙版/报告改版/护理建议 V2.3/水分图)

1. 城市下拉浮层 z-index 提至 50,不再被肤质轮播圆点压盖
2. 倒计时音频已更新(用户重生成,解码验证 2.62s)
3. 侧脸步蒙版鼻向修正:2/3 右脸鼻朝右、3/3 左脸鼻朝左(原与设计稿 06/07 相反)
4. 无进展提示上移至 bottom:24%(引导 chips 上方,不再压快门)
5. 相册选择器「拍照」项为 iOS/安卓系统行为,web 无法移除(详见回复)
6. 报告页顶栏移除,返回/历史改悬浮
7. 肌龄小字按产品要求不再展示(钳制留痕仍随数据返回)
8. 关注行对齐设计稿:前缀灰 + 维度名深色 500
9. 三维度排版对齐设计稿:去掉档位徽章,最低分标红
10. 肤色水润图改用 water_area(接口水分图),REPORT_MAPS 与 mock fixture 同步更新
11. 报告「综合分析」「生活方式建议」通栏移除,新增「护理建议」卡(V2.3 §8:肤质定制/最差2分类/精华/生活方式 五段,§8.5.1 无内部标注;skin-score 实现 8.6/8.7 全量文案库,回归新增 §8.8 两组样例逐字断言 86/86 绿)
e2e 全量绿(含真实 API:水分图/红区合成图挂载、护理建议五段)
This commit is contained in:
Ubuntu
2026-09-27 11:15:54 +08:00
parent ca76128ac0
commit 6c634e3a66
12 changed files with 164 additions and 53 deletions
+29 -30
View File
@@ -701,17 +701,11 @@
.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
}
function setDim(scoreSel, lvSel, dim) {
var el = $(scoreSel), lv = $(lvSel);
if (dim.S == null) {
el.textContent = '-.-';
lv.textContent = '未检出';
lv.className = 'dim-lv';
return;
}
el.textContent = dim.S.toFixed(1);
lv.textContent = dim.level;
lv.className = 'dim-lv ' + (LV_CLASS[dim.level] || '');
function setDim(scoreSel, dim, isWorst) {
var el = $(scoreSel);
// 设计稿:最低分标红,其余深色;无档位徽章
el.textContent = dim.S == null ? '-.-' : dim.S.toFixed(1);
el.classList.toggle('dim-bad', !!isWorst && dim.S != null);
}
function setCat(key, cat) {
@@ -731,7 +725,7 @@
{ key: 'mole', color: '#282828' }, // 痣
{ key: 'acne', color: '#D30C0C' } // 痤疮
] },
tone: { img: '#viz-tone', blendMap: 'brown_area' }, // 肤色:正脸×色沉图正片叠底(直挂是悬浮面具感,合成后色沉落在脸上)
tone: { img: '#viz-tone', blendMap: 'water_area' }, // 肤色水润:正脸×水分图正片叠底(water_area,接口返回)
sens: { img: '#viz-sens', blendMap: 'red_area' }, // 敏感:正脸×红区图正片叠底(直挂白底过淡不可读)
acne: { img: '#viz-acne', photo: true, marks: [ // 痘痘:正脸+闭口粉刺/痤疮标记
{ key: 'closed_comedones', color: '#E8A13D' }, // 闭口粉刺
@@ -902,28 +896,27 @@
}
$('#stat-score').textContent = total != null ? total + '分' : '--分';
$('#stat-age').textContent = vm.skinAgeDisplay != null ? vm.skinAgeDisplay + '岁' : '--岁';
// 肌龄小字:常显「与实际年龄相差X岁」,触发钳制时追加留痕(契约格式「触发(原X→Y)」不变)
var ageNote = '';
if (vm.skinAgeDisplay != null && vm.realAge != null) {
var ageDiff = Math.abs(vm.skinAgeDisplay - vm.realAge);
ageNote = ageDiff === 0 ? '与实际年龄相符' : '与实际年龄相差' + ageDiff + '岁';
}
if (vm.ageClampNote) ageNote += (ageNote ? ' · ' : '') + vm.ageClampNote;
$('#stat-age-note').textContent = ageNote;
$('#stat-age-note').textContent = ''; // 肌龄小字按产品要求不展示(钳制留痕 vm.ageClampNote 仍随数据返回)
// 三维度:S 值(1 位小数) + 档位(良好绿/改善琥珀/预警红)
setDim('#dim-firm', '#dim-firm-lv', vm.dims.firm);
setDim('#dim-vita', '#dim-vita-lv', vm.dims.vita);
setDim('#dim-stab', '#dim-stab-lv', vm.dims.stab);
// 关注行(设计稿两行:灰小字「近期优先关注:X」+ 深色维度口号)
// 三维度:S 值(1 位小数),最低分标红(设计稿无档位徽章)
var dimPs = { firm: vm.dims.firm.P, vita: vm.dims.vita.P, stab: vm.dims.stab.P };
var worstDimKey = Object.keys(dimPs).reduce(function (a, b) {
if (dimPs[a] == null) return b;
if (dimPs[b] == null) return a;
return dimPs[b] < dimPs[a] ? b : a;
});
setDim('#dim-firm', vm.dims.firm, worstDimKey === 'firm');
setDim('#dim-vita', vm.dims.vita, worstDimKey === 'vita');
setDim('#dim-stab', vm.dims.stab, worstDimKey === 'stab');
// 关注行(设计稿两行:「近期优先关注:」灰 + 维度名深色,下行为深色口号)
var DIM_SLOGAN = {
'紧塑力': '紧塑提拉力,轮廓上扬不松垮',
'活力感': '活力透亮感,水润澎弹有光泽',
'稳定力': '强韧稳态力,锁水保湿抵御刺激' // 设计稿原文
};
$('#dims-note').innerHTML = vm.focus.name
? '<span class="dims-note-l1">近期优先关注:' + esc(vm.focus.name) + '</span><br><span class="dims-note-l2">' + esc(DIM_SLOGAN[vm.focus.name] || '') + '</span>'
: '<span class="dims-note-l1">近期优先关注:---</span>';
? '<span class="dims-note-l1">近期优先关注:<b>' + esc(vm.focus.name) + '</b></span><br><span class="dims-note-l2">' + esc(DIM_SLOGAN[vm.focus.name] || '') + '</span>'
: '<span class="dims-note-l1">近期优先关注:<b>---</b></span>';
// 三个 Tab 面板:各所辖两个分类(S + 档位徽章 + 话术正文)
var keys = ['contour', 'wrinkles', 'smooth', 'tone', 'sens', 'acne'];
@@ -943,9 +936,15 @@
notesEl.style.display = 'none';
}
// 综合文案 / 生活方式 / 精华推荐
$('#vm-summary').textContent = vm.summary;
$('#vm-lifestyle').textContent = vm.lifestyle;
// 护理建议(V2.3 §8 五段:肤质定制/最差2分类/精华/生活方式);综合分析与生活方式通栏已按需求移除
var careBox = $('#care-list');
if (careBox) {
careBox.innerHTML = (vm.careAdvice || []).map(function (s, i) {
return '<p class="care-item"><b>' + (i + 1) + '、【' + esc(s.tag) + '】</b>' + esc(s.text) + '</p>';
}).join('');
}
// 精华推荐卡
$('#essence-name').textContent = vm.essence.name;
$('#essence-text').textContent = vm.essence.text;
$('#essence-triggers').textContent = vm.essence.triggers.length ? '触发:' + vm.essence.triggers.join('、') : '';