Files
juzi/docs/客户反馈第四轮修改-2026-10-12.md
T

76 lines
8.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第四轮反馈修改与验收
依据:`feedback/第四轮反馈` 的客户会话、6 张批注图及傅艳在本线程中的逐项确认,包含随后指定的皱纹三档原文。按用户要求提交及部署,不代替用户推送 origin。
## 已确认并实现
1. 登录按钮、登录成功弹窗、首页/我的报告状态及相关引导统一使用「游客登录/游客已登录」,内部仍为原 `browser` 身份,不另建账号、不丢失已有报告。明确说明游客报告仅能在当前浏览器查看、不能跨手机同步。
2. 拍摄质量在前端收紧,不新增服务端质量拦截、重拍要求或额外质量检查接口。服务端原有业务错误处理不变;仍按现有算法剔除无效数据。成功报告不显示侧脸角度无效、建议重拍等备注,后台保存完整备注及结构化质量标记。
3. 皱纹结论使用傅艳最后指定的「改善/良好/优秀」三档原文(下附)。客户正文不再附加 12 分区/9 指标长文;分区原始指标保存在结构化快照,并在受保护后台单独展示。历史报告仅显示原有结论、不再展示分区附文,不回写历史快照。评分、肤龄、推荐规则及照片视角归属不改。
4. PSD 原始画面拆为白脸底图和透明人脸遮罩,黄色扫描区约 1 秒完成一次上下往返。成功返回至少等到实际 CSS 动画完成一轮;响应慢时不额外延长等待,取消/失败不为动画延迟。相册和翻转图标依旧仅装饰、不可操作,取消入口保留。
5. 三维度评分下方恢复浅灰提示区及黄色竖线,固定两行结构:`近期优先关注:{维度名}` 与客户指定建议。根据已保存的原始维度 P 值选最低项,不使用前端一位小数排序;并列依次紧塑力、透亮感、稳韧力,缺失不作 0、全部缺失则隐藏。历史报告也按其保存分数展示,不重算、不回写历史快照。
| 最低维度 | 建议原文 |
| --- | --- |
| 紧塑力 | 强化紧塑力,提拉轮廓抚平细纹。 |
| 透亮感 | 提升透亮感,补水提亮加强防晒。 |
| 稳韧力 | 增强稳韧力,舒缓泛红强韧屏障。 |
### 皱纹(紧塑力)原文
- 【改善】全脸共检测到皱纹 {wr_cnt} 条、细纹 {fl_cnt} 条,面中、口周、眼周等区域已出现静态纹倾向,纹路已呈现固化趋势,并非临时性干纹。
- 【良好】全脸共检测到皱纹 {wr_cnt} 条、细纹 {fl_cnt} 条,面部整体平整,仅眼周或口周有细微的干纹,无明显静态深纹,纹路面积占比相对较低。
- 【优秀】面中、口周、眼周等各区域均无明显皱纹沟壑,无静态深纹与粗纹,各类纹路面积均处于极低水平,面部整体平整细腻。
缺失的计数仍标记为未获取,不伪造为 0;分档计算保持不变。
## 前端参数及限制
参数版本 `2026-10-12-fourth-v1`,集中在 `h5/js/capture-quality.js` 和 `h5/js/head-pose.js`。
| 条件 | 之前 | 本轮 |
| --- | --- | --- |
| 人脸检测置信度 | ≥0.3,取单一人脸 | ≥0.5,检查检测到的人脸数量为 1 |
| 框高/原始帧高 | 30%~68% | 34%~64% |
| 水平居中 | 偏离≤18% 屏宽 | 偏离≤12% 屏宽 |
| 完整入镜 | 没有单独边缘门限 | 检测框距原始帧边缘≥2% |
| 正脸 yaw/pitch | ≤15°/18° | ≤10°/12° |
| 侧脸幅度/pitch | 28°~75°/≤20° | 35°~65°/≤15° |
| 歪头 roll | 不判断 | ≤10° |
| 脸部平均亮度 | 65~235 | 75~225 |
| 稳定累计 | 450ms,短暂漏检不打断 | ≥650ms 且≥3 合格帧;任何漏检/异常打断,帧间隔>2000ms 打断 |
| 稳定期间漂移 | 未单独判断 | 相对起始合格帧 yaw/pitch≤5°,中心 x/y≤原帧 3.5%,框高比例变化≤4.5% |
| 最终 JPEG | 实时抓拍后直接推进 | 抓拍后本地复验通过才推进 |
系统相机/相册文件使用同样的单人、完整入镜、距离、角度、光线门限;由于系统照片可能已镜像,沿用不判断左右方向的兼容方式,并记录 `direction_checked:false`。模型加载中最多等待 8 秒;模型确实不可用时保留原有手动/文件降级通路,并记录 `unchecked/model-unavailable`,不伪称已校验。
这些角度是 68 点几何经验估计,不是服务端 `jawline_quality` 的直接替代;只能尽量提高合格率,不能承诺手机实拍 100% 通过。仍需提测收集不同机型、光线和转头方式的样本后校准。未修改取景轮廓、自动拍摄三步顺序或语音资源。
真实本地识别模型的自动流程测试发现:无硬件加速时每帧推理约 1.05 秒,若将间隔上限设置为 1 秒会一直停留在「保持不动」。因此最终上限采用 2 秒;650ms/至少 3 帧及全部质量/漂移约束不变,慢设备按实际推理耗时累计,不为抢速度跳过合格帧。
## 后台校准留痕
- 现有测肤请求携带参数版本、三视角的本地观测(yaw/pitch/roll、置信度、亮度、框比例及中心位置),不新增网络往返、不向前端下发服务端私钥。
- 后端仅接收限定字段和有界数值,明确标记 `client-untrusted`。当前参数版本对应的配置快照一同保留,避免以后调整参数后无法追溯。
- `capture_quality` 单独保存接口左右侧脸的 quality、下颌线角度、valid/invalid/unavailable 状态;quality 不为 1 或角度缺失只做标记,不改变原成功响应、不要求用户重拍。
- 后台列表在拍摄状态下标注异常;详情增加「拍摄质量与前端校准」;CSV 增加质量状态及参数版本。旧记录不批量补写,仍可查看原有计算备注/原始返回。
- 校准时结合后台原图、前端参数/观测及接口质量结果分析,不将客户端自报当作可信质量结论;本轮不引入自动学习或自动修改线上参数。
## PSD 来源
`tools/export_fourth_feedback_assets.py` 从原 PSD 第 9 页隐藏原扫描效果图层 `9/2/2`,保留原人脸、圆角边框、文字及装饰图标;生成 `scan-base.webp` 和具有真正 alpha 通道的 `scan-face-mask.png`。不修改原 PSD,不使用 AI 重新绘制人脸。
`design/ui-20261012/scan-motion-manifest.json` 记录原 PSD SHA-256、裁切范围、图层路径、遮罩范围、动画周期、色号及资源 SHA-256。新底图/遮罩只在进入档案/相机后加载,登录首屏不请求扫描素材、完整字体或人脸识别引擎。
## 验证
- `node h5/test/customer-feedback-fourth.js`:本地角度/光线/距离/多脸、稳定时长/帧数/漏检/漂移、关注维度/并列/缺失、历史皱纹快照不回写、后台诊断字段清理。
- `node h5/test/customer-feedback-fourth.mjs`:隔离服务器和模拟上游;quality=3 仍成功保存,仅后台标记;后台/CSV/历史报告不回写;游客登录及状态;五种屏宽;快速成功响应等待实际动画一轮。
- 第三轮专项回归:PSD 原文/字体、弹窗、三款产品、装饰图标/键盘、取消/迟到响应/失败恢复及六种等待视口;新动效替代原静态图断言。
- 第二轮、原客户反馈浏览器回归,以及报告持久化/账号隔离/模拟微信回调均通过;推荐规则 126 个用例、原算法 86 条断言、请求超时测试通过。
- 登录性能:150ms 延迟、约 2Mbps 下载及 4 倍 CPU 降速下最后一次冷启动约 1.67 秒,资源 267784 字节;未将识别引擎或扫描图放到首屏。
- 使用本地真实模型对 C3_180、C3_-135、C3_135 三张样例进行推理,当前收紧门限均通过(yaw 约 4.28°/-44.77°/42.59°)。这不是对真实手机拍摄合格率的保证。
- `node h5/test/capture-quality-browser.mjs`:真实识别引擎和原始模型,使用保持长宽比、居中后的三视角样例模拟视频流,实际自动拍摄三张并复验 JPEG;正脸不能冒充侧脸、反方向侧脸不能直接推进,诊断对应正确视角,相机成功后释放。不是手动触发快门,也不是模拟识别结果。
全部写入测试仅发生在独立临时数据目录,上游测肤以本地样例替代;不调用收费 Face++,不修改生产账号、照片、报告或配置。真实手机微信/相机验收与上线需后续执行。