70 lines
5.1 KiB
Markdown
70 lines
5.1 KiB
Markdown
# 产品推荐规则:肤龄基准与边界调整
|
||
|
||
> 2026-10-16 更新:以下为原始肌龄依据的历史规则说明。当前已改为报告展示肌龄,分档和边界条件保留;以 [产品推荐改用展示肌龄-2026-10-16.md](产品推荐改用展示肌龄-2026-10-16.md) 为准。
|
||
|
||
状态: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++。
|