fix(report): recommend by measured skin age and align admin results
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# 10.09 新版 H5 实施与验收
|
||||
|
||||
更新:2026-10-10。
|
||||
更新:2026-10-12。
|
||||
|
||||
## 按确认项实现
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
## 文档未定义部分的实施口径
|
||||
|
||||
话术文档没有新增计分公式或阈值,因此原六分类/三维度评分、肌龄计算及精华推荐规则不变。旧分档「预警/改善/良好」按低/中/高顺序映射为新文案的「改善/良好/优秀」。肤色和水分拆分展示,但继续共享原 `tone` 分类的分档,**不是新增独立评分算法**。
|
||||
话术文档没有新增计分公式或阈值,因此原六分类/三维度评分、肌龄计算不变。2026-10-12 经用户确认,精华推荐另按[肤龄基准与边界调整](产品推荐规则-肤龄版.md)实施,替代原三重判据;原始肌龄和展示肌龄在后台同时展示,历史快照不重算。旧分档「预警/改善/良好」按低/中/高顺序映射为新文案的「改善/良好/优秀」,后台同步此口径。肤色和水分拆分展示,但继续共享原 `tone` 分类的分档,**不是新增独立评分算法**。
|
||||
|
||||
痘痘话术按真实脓包/结节计数决定是否输出中重度皮损说明;没有计数不宣称「未检出」。当真实计数与高分模板冲突时,展示层选择可反映计数的文案,不改变原分数。
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
```bash
|
||||
node h5/js/skin-score.js
|
||||
node h5/test/regression.js
|
||||
node h5/test/recommendation.js
|
||||
node h5/test/accounts.js
|
||||
node h5/test/report-persistence.mjs
|
||||
node h5/test/wechat-browser.mjs
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
# 产品推荐规则:肤龄基准与边界调整
|
||||
|
||||
状态:2026-10-12 用户已确认三个边界条件;已实现。规则版本:`2026-10-12-skin-age-v1`。
|
||||
|
||||
## 已明确的要求
|
||||
|
||||
- 基准只取 Face++ 返回的原始 `skin_age`,不取实际年龄或修正后的展示肤龄。
|
||||
- 基础分组:肤龄小于 35 岁为 25+(主场精华 I),35 至不足 50 岁为 35+(II),50 岁及以上为 50+(III)。24 岁等不足 25 岁的检测结果也归 I。
|
||||
- 肤龄小于 32 岁,固定推荐 I,即使轮廓或皱纹得分低,也不触发升级。
|
||||
- 删除原来的实际年龄组、六分类均分、最差分类三重判据。
|
||||
- 边界附近结合三维度评分调整:紧塑力为必要条件,另外一个达标维度可为透亮感或稳韧力;不能仅因为另外两个维度高而降档。
|
||||
- 37 岁肌龄、仅存在暗沉问题的案例,应允许推荐 I。
|
||||
- 每份新报告仍只推荐一款;评分公式、检测流程和已有报告快照不因本次规则调整而改写。
|
||||
- 原始肤龄缺失或无效时,不回退实际年龄推测产品;需要明确显示本次无法推荐。
|
||||
|
||||
## 已确认的三个条件
|
||||
|
||||
1. 只在 35±3 岁及 50±3 岁范围内调整,范围外只按肤龄。
|
||||
2. 50 岁边界与 35 岁同样处理:47~不足50 岁紧塑力低于 8 分升至 III,50~53 岁紧塑力至少 9 分且另一维度至少 9 分降至 II。
|
||||
3. 「7+最低档」为低于 8 分;「9+」为大于等于 9 分,恰好 8 分不升档,恰好 9 分可以满足降档条件。
|
||||
|
||||
## 决策顺序
|
||||
|
||||
年龄支持小数,区间严格按下表执行:
|
||||
|
||||
| 原始肤龄 | 默认产品 | 可调整条件 |
|
||||
|---|---|---|
|
||||
| 小于 32 | I | 固定,不升档 |
|
||||
| 32~不足35 | I | 紧塑力低于8,升为II |
|
||||
| 35~38(含38) | II | 紧塑力至少9,且透亮感/稳韧力任一至少9,降为I |
|
||||
| 大于38~不足47 | II | 按肤龄,不调整 |
|
||||
| 47~不足50 | II | 紧塑力低于8,升为III |
|
||||
| 50~53(含53) | III | 紧塑力至少9,且透亮感/稳韧力任一至少9,降为II |
|
||||
| 大于53 | III | 按肤龄,不调整 |
|
||||
|
||||
调整最多一档。没有足够的必要维度数据证明满足调整条件时,保持肤龄基础档;不把缺失值当成低分。
|
||||
|
||||
比较分数沿用评分引擎的三维度原始 `S=7+3×P/100`,不先进行前端一位小数或 VM 两位小数舍入。例如 7.99999 小于 8,8.99999 小于 9。原六分类和三维度评分公式、低/中/高档位阈值均不变;推荐阈值与档位文案阈值是不同概念。
|
||||
|
||||
## 后台与前端一致性
|
||||
|
||||
- 后台列表新增「肌龄(原始 / 展示)」;档案里的年龄明确为实际年龄。
|
||||
- 名称统一为紧塑力、透亮感、稳韧力;列表显示与 H5 相同的一位小数分数。内部旧档位 `预警/改善/良好` 映射成 `改善/良好/优秀`,筛选参数仍传原值,避免改写旧数据或破坏统计。
|
||||
- 新记录同时保存 `skin_age_display`、`recommendation` 和前端 `presentation`。后台详情展示基础档、最终档、未舍入的判定分、推荐原因与规则版本;七项结论和护理建议直接使用同一份前端快照。
|
||||
- 旧记录没有新规则元数据时,明确显示「旧版规则(历史记录)」,不按新规则重新推荐。后台详情可读取原账户已保存的前端展示快照;无快照则标注旧版文案。旧记录未存展示肌龄时,按原有实际年龄±3规则只读补全展示值。
|
||||
- CSV 同步提供两种肌龄、统一的新档位名、推荐版本和原因。
|
||||
|
||||
## 实施与验证范围
|
||||
|
||||
- `h5/js/skin-score.js`:推荐决策、产品组别、推荐原因及相关综合文案;保留原评分算法。
|
||||
- `h5/js/report-ui.js`:前后台共用名称、档位、三款产品映射;H5 无有效肤龄时隐藏具体产品并说明原因。
|
||||
- 更新引擎自测和 Excel 回归中的产品相关断言;原始 Excel 保留为旧算法参照,不改写评分真值来掩盖差异。
|
||||
- 新增边界测试:24岁且轮廓/皱纹低分;31.99/32/34.99/35/38/38.01;46.99/47/49.99/50/53/53.01;紧塑力7.99/8/8.99/9;另两个维度分别达标;必要条件不满足;实际年龄改变不影响推荐;原始肤龄和显示肤龄不同;维度或肤龄缺失。
|
||||
- 验证新报告保存与重开后产品一致,已有报告仍读取原有快照。
|
||||
- 本次不调整展示肤龄的实际年龄±3岁修正规则,后台并列展示两者,推荐只使用原始肤龄。
|
||||
|
||||
验证命令:
|
||||
|
||||
```bash
|
||||
node h5/test/recommendation.js
|
||||
node h5/js/skin-score.js
|
||||
node h5/test/regression.js
|
||||
node h5/test/accounts.js
|
||||
node h5/test/report-persistence.mjs
|
||||
```
|
||||
|
||||
已通过 126 个推荐用例、83 条评分引擎自测、86 条真值回归。隔离 HTTP + Chromium 验证前后台原始/展示肌龄、三维度评分、推荐产品、七项结论、护理建议、筛选与 CSV 一致;验证保存重开、旧报告快照不改写、无肤龄时不残留上一款产品。全部使用样本上游,不调用收费 Face++。
|
||||
Reference in New Issue
Block a user