10 KiB
第四轮反馈修改与验收
依据:feedback/第四轮反馈 的客户会话、6 张批注图及傅艳在本线程中的逐项确认,包含随后指定的皱纹三档原文。按用户要求提交及部署,不代替用户推送 origin。
已确认并实现
- 登录按钮、登录成功弹窗、首页/我的报告状态及相关引导统一使用「游客登录/游客已登录」,内部仍为原
browser身份,不另建账号、不丢失已有报告。明确说明游客报告仅能在当前浏览器查看、不能跨手机同步。 - 拍摄质量在前端收紧,不新增服务端质量拦截、重拍要求或额外质量检查接口。服务端原有业务错误处理不变;仍按现有算法剔除无效数据。成功报告不显示侧脸角度无效、建议重拍等备注,后台保存完整备注及结构化质量标记。
- 皱纹结论使用傅艳最后指定的「改善/良好/优秀」三档原文(下附)。客户正文不再附加 12 分区/9 指标长文;分区原始指标保存在结构化快照,并在受保护后台单独展示。历史报告仅显示原有结论、不再展示分区附文,不回写历史快照。评分、肤龄、推荐规则及照片视角归属不改。
- PSD 原始画面拆为白脸底图和透明人脸遮罩,黄色扫描区约 1 秒完成一次上下往返。成功返回至少等到实际 CSS 动画完成一轮;响应慢时不额外延长等待,取消/失败不为动画延迟。相册和翻转图标依旧仅装饰、不可操作,取消入口保留。
- 三维度评分下方恢复浅灰提示区及黄色竖线,固定两行结构:
近期优先关注:{维度名}与客户指定建议。根据已保存的原始维度 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++,不修改生产账号、照片、报告或配置。真实手机微信/相机仍需用户最终验收。
生产部署及只读验收
- 功能提交:
92a3965b7d637f19ec3d31389f142447339ff2a6(feat(h5): apply fourth feedback and tighten local capture validation)。 - 服务器:
ubuntu@1me.xajuzi.com:/home/ubuntu/juzi;入口:https://1me.xajuzi.com/state/。部署前服务器工作区干净、HEAD 与 origin/main 均为e53c809;通过 Git bundle 快进更新,不代替用户 push、不覆盖服务器私有配置或已有用户数据。 - 更新后重启
juzi-h5.service,让服务端评分展示模块、质量诊断模块及前端同版。服务 active/running,NRestarts=0,健康接口ok:true;检查时最近 10 分钟错误级日志为 0。 - 公网首页、app/capture-quality/head-pose/report-ui 四个脚本、CSS、两份扫描素材全部 200;逐文件 SHA-256 与本地一致,均为
Cache-Control: no-cache。 - 公网未登录报告、后台页面及统计接口均 401;私有身份文件、server.js 均 404;微信配置仍启用,不修改微信凭据或流程。
- 公网真实模型的自动三连拍测试通过:三个实际合格视角自动抓拍、最终 JPEG 本地复验、实际识别到的正脸/错误方向不能冒充目标侧脸、正确诊断归属、报告后释放摄像头;登录与测肤响应仅浏览器内拦截,不产生生产账号或报告、不调用收费测肤。
- 公网第三轮专项串行复验通过:五种屏宽的弹窗断行/产品版式、三款产品、扫描动效与成功进入报告、六种等待视口、装饰图标、取消/迟到响应/失败恢复及字体/扫描图失败降级;无页面 JS 异常。已检查公网首页、等待画面及产品截图。
- 公网第二轮回归串行复验通过:首页口号/Logo 比例、实际 PSD 字体、首屏不加载完整字体和识别引擎、全屏相机、三种圆角轮廓/五官辅助线、五种宽度无溢出;无页面 JS 异常。
- 公网报告交互串行复验通过:三个维度独立滑动/键盘切换、垂直滚动不误切换、图片放大、七张检测图、三档产品排版;皱纹正文显示指定结论、不再包含分区技术附文。无页面 JS 异常。
- 同时启动多套冷浏览器时曾出现字体/资源下载超时;串行重试自动拍摄流程通过。字体仍按原 PSD 使用原始 MiSans,并不将此网络压力测试描述为真实手机合格率保证。