Files
juzi/docs/UI对齐10.09设计稿-调研与实施计划.md

17 KiB
Raw Permalink Blame History

UI 对齐 10.09 设计稿:调研与实施计划

调研日期:2026-10-10。阶段:调研与计划,尚未修改业务页面。

1. 结论和依据

这次更新包括三个层面:既有页面的视觉对齐、报告页的结构重做、新增登录与报告列表流程。仅替换图片不能达到设计稿效果。

依据:

  • 最新 PSD:UI外发版10.09.psd,10 个画板;采用 design/ui-20261009/manifest.json 的图层与文本信息,不再把旧 design/设计规范.md 当作新版尺寸依据。
  • 实际运行页面:http://127.0.0.1:8080/?mock=1。在独立 Chromium 上下文采集启动、授权、档案、拍照引导、三个拍照步骤和报告三组 Tab;另检查 375/390/414px 宽启动页。
  • 实测记录:design/ui-20261009/audit-current/evidence.json,本轮 15 张截图,未捕获到 JS 页面异常。拍照截图使用 mock/模拟摄像头,不能据此认定手机真实摄像头已通过验证。
  • 源码:h5/index.html、h5/css/style.css、h5/js/app.js、h5/js/skin-score.js、h5/server.js 和浏览器回归脚本。
  • 视觉对比:design/ui-20261009/audit-current/comparison-flow.jpg 与 comparison-report.jpg。每组左侧当前页面、右侧新设计;报告采用不同示例数据,只比较结构与样式,不比较数值与照片内容。

当前技术栈是原生 HTML/CSS/JS + Node 服务。继续沿用即可,没有必要为此次还原引入前端框架。

2. 统一比较口径

PSD 标准画板为 1080×2339,报告长页为 1080×7765。375px 宽页面的换算系数为 2.88。

设计顶部约 248px 是系统状态栏与微信标题/胶囊区域。当前 H5 将这块交给浏览器容器,业务页面没有顶部导航。因此本次常规页面对比裁掉该区域,统一为约 375×726 的业务视口;报告顶部按其自身画板标题栏边界约 253px 处理。

建议以「H5 业务内容还原」验收,不在网页里重复绘制电量、时间、信号和小程序胶囊。是否增加网页自己的标题/返回栏需要单独确定;新增一条导航栏会改变所有页面的纵向坐标,不能等页面完成后再决定。

设计实测尺寸(375px 宽基准):

元素 PSD 尺寸 换算后尺寸 更新要点
首页主/次按钮 522×112 181.3×38.9 当前主按钮高 37px,需统一到新版
弹窗 887×902 308.0×313.2 统一位置、内边距与文案行距
弹窗关闭图标 51×50 17.7×17.4 图形按设计大小,触摸区域单独扩大
档案单列输入框 325×112 112.8×38.9 对齐双列间距、标签间距
肤质选择卡 713×808 247.6×280.6 配合新插画和文字宽度
肤质插画 316×316 109.7×109.7 五种状态均已导出
报告汇总卡 982×696 341.0×241.7 合并当前两张卡
报告分类卡 983×1177 341.3×408.7 改为大图在上、正文在下
分类展示图片框 619×802 214.9×278.5 真实照片按比例呈现,标注坐标保持一致
产品卡 984×503 341.7×174.7 三张卡统一规格

这些是基准几何,不代表真实数据页面一律固定高度。长护理建议、缺数据提示等内容应自然撑高,避免截断。

PSD 字体包含 MiSans Regular / Semibold / Demibold;当前 CSS 使用 Noto Sans SC / PingFang / 系统字体,项目未发现配套字体文件。字体会影响换行、数字宽度和字重。实施时优先准备可用于 Web 的对应字体文件,或明确接受系统字体近似。PSD 文本字号还要结合图层变换矩阵计算,不能只读原始 FontSize 就直接换算。

3. 逐页差异和调整内容

页面 当前实现 最新设计 具体工作
登录 无登录页面、无身份状态 品牌标志、微信登录、游客登录、协议勾选 新增页面与入口状态;游客通路和真实微信认证分别验收
启动 旧口号、单个「开始检测」按钮 英文两行 + 中文口号;新增白色「我的报告」按钮 更新文案、背景构图、Logo/按钮间距,增加历史入口
隐私授权 直接覆盖当前首页,仍露出首页口号和按钮 遮罩底图没有首页交互内容 采用独立背景层;校准弹窗位置、字号、关闭图标和勾选行
档案填写 结构基本完整,旧肤质插画;表单整体偏下,背景构图不同 相同字段与轮播,但几何、字重、背景不同 复用选择器与字段校验,重新标定间距、卡片、五种插画和底部按钮
拍照引导 旧口号;标题居中;没有环境要求说明 新口号;标题左对齐;补充关闭美颜/滤镜和均匀光线说明 更新背景、标题与说明,校准按钮位置
三步拍照 旧脸型轮廓,无眼鼻虚线;首步「请正对屏幕」 新脸型、眼鼻虚线;首步「请正脸出境」 更新蒙版及定位线,文案建议纠正为「出镜」;复核前后镜头方向
我的报告 存在隐藏历史弹层逻辑,没有可点击入口 独立页面,数量卡、日期列表、查看详情 将历史展示升级为页面,接通首页入口、返回和详情打开;补空列表状态
报告汇总 总分/肌龄一张卡,三维度另一张;额外肌龄差、关注说明 总分、年龄、三维度在同一张卡 合并 DOM 与间距;显示名改为紧塑力/透亮感/稳韧力,处理设计未显示的说明
报告详情 一个全局三维度 Tab,每页两个小图+侧边文字 三个纵向区块,每块自有分类 Tab,大图+下方文字 重构为独立区块及 Tab 状态,增加肤色/水分两个展示视图
护理建议 五段动态文案和额外结尾句 设计只示意两段 对齐卡片和排版,保留动态文案;内容长度不能照示例硬截成两段
产品推荐 额外精华推荐卡;固定一张 CORE II 产品图;「了解更多」占位按钮 主场精华 I/II/III 三张产品卡 三档素材/商品文案配置化;保留真实推荐逻辑,收敛重复模块

实测的报告上半部分:当前总分卡 339×140,三维度卡约 339×201,中间有 12px 间隔;设计是一张约 341×242 的卡。这是明显的结构差异,靠缩字体和调颜色无法解决。

当前首页和档案页的背景使用同一张图加 CSS 叠色;新版已导出独立背景,但不能把带叠色的 JPG 再叠一遍旧渐变,否则会过暗。背景和相机蒙版还需根据业务视口裁剪,不能直接把全画板 2339px 高图片拉伸到去掉顶部栏后的 2091px 区域。

4. 报告数据如何接到新 UI

建议增加展示适配层,例如 h5/js/report-ui.js。评分模块继续产出已有计算结果,适配层负责新版名称、分类视图、图片和商品展示,不把显示名写回数据库或评分公式。

新 UI 已有数据 展示适配
紧塑力 vm.dims.firm 保留该维度评分
透亮感 vm.dims.vita 将「活力感」映射为新显示名,包括相关关注提示
稳韧力 vm.dims.stab 将「稳定力」映射为新显示名
轮廓 vm.cats.contour + 正脸照 大图及该分类文案
皱纹 vm.cats.wrinkles + texture_enhanced_lines 保留增强线与原照片合成
肤色 vm.cats.tone 中肤色相关数据 + brown_area 从合并分类中独立展示,须明确专属文案来源
平滑度 vm.cats.smooth + 已有标记/图层 改名并复用图像合成
水分 vm.cats.tone 中水分相关数据 + water_area 独立图像/说明,不能声称新增了一项独立评分
泛红 vm.cats.sens + red_area 显示名与红区合成图更新
痘痘 vm.cats.acne + 痤疮标记 复用坐标叠加

当前服务端已经请求并保留 brown_area 和 water_area。当前 UI 的 tone 只展示水分图,因此图库接口不是主要阻碍;需要增加图片容器、展示配置及缺失图层状态。

现有 tone 评分合并肤色与水分,话术也是合并话术。新版的七个图片视图,不应自动变成七分类评分。肤色和水分的独立文字应由确定的字段/模板产生;不能把同一段合并文案复制到两个 Tab 后视为完成。

产品映射建议使用明确的配置表:已有「25+束紧精华 / 35+支撑精华 / 50+重塑精华」对应主场精华 I / II / III 的名称、图片和说明。实际推荐由已有多项判据决定,不能只按年龄选择。三张卡可以按设计全部展示;是否强调推荐卡应另定,避免擅自在设计上增加标签。

重构图片异步加载时增加报告/视图版本标记,避免快速切 Tab 或历史报告后,较早的图片合成回调覆盖新页面。

5. 登录与“我的报告”的真实能力缺口

目前只有静态页面、检测 API、管理 API 与健康检查,没有面向用户的登录、会话或个人报告接口。管理后台记录不等于个人报告库,不能直接将后台查询接口接到“我的报告”。

本机历史:juzi.reports.v1,最多 5 条,存储三张照片与结果,主动删除 face_maps 以减少容量。代码可打开旧报告,但图层类图片回看会降级。因而“恢复入口”可以复用较多代码,“跨设备完整回看”则需要新增服务端能力。

建议分两个可验收阶段:

  1. 游客闭环:登录页游客入口 → 首页 → 检测 / 我的报告 → 详情。本地报告列表如实表达当前保留数量,补空态、损坏记录、存储失败和返回行为。图层不全时明确缺失,不能用设计示例人脸补齐。
  2. 账号闭环:明确微信公众号/H5 实际运行容器及可用配置后接入真实登录;建立会话、报告 owner 归属、用户范围内列表/详情/图片读取、退出及游客数据衔接。设计稿自身不能提供这些接口契约。

第二阶段尚未落地前,不能把微信按钮接成“点击即登录成功”。希望完整实现设计中的微信登录功能,需要纳入后端和账号配置工作,而不只是 UI 工期。

若要求游客也能完整回看,需要另选客户端持久化渲染缩略图/IndexedDB,或以受限凭据查询服务端结果;在明确存储策略前,不把大幅 base64 图层直接塞回现有 localStorage。

6. 原稿中需要整理的内容

以下来自对 PSD 可见图层及代码契约的核对,不能无条件当成正式需求:

  • 首页底部存在重复的「我的报告」文字图层,建议只保留一枚有效按钮。
  • 首步「请正脸出境」建议修正为「请正脸出镜」;报告标题多余的右括号、历史数量文案中的重复字也需校正。
  • 画板名「左面」文案是第 2 步右脸,「右面」文案是第 3 步左脸。以用户脸部语义和送检字段为准,不按画板名机械替换。
  • PSD 范例里有 5.1 分,但现行 S = 7 + 3×P/100 的正常 0–100 输入对应 7–10 分。5.1 只是设计示例;若它代表新评分规则,需独立修改业务契约。
  • 设计复用了检测示意图与描述,不能据此让所有真实分类显示同一张图或同一段话。
  • 两段护理建议与三张商品卡属于展示示例,需保留真实文案和推荐判据。
  • 新登录页列出用户协议、隐私政策、儿童保护政策;当前只有已有隐私弹层内容,缺少新入口各自明确的文本对应。实施时须确定已有文本的覆盖范围和最终链接。

7. 实施顺序与交付物

P0:冻结视觉和数据基准

  • 确定 H5 顶栏口径、流程入口、字体,以及上面的设计示例处理方式。
  • 按画板重新整理 --u、卡片宽、间距、圆角、按钮高、字号和色值。
  • 复核 36 张切图:背景裁剪、透明边缘、产品剪贴边界;拍照眼鼻定位线应保留原稿虚线效果,不能只依赖可能近似的 PSD 矢量栅格结果。
  • 建立固定的视觉测试数据和「缺图/空态」样例,与真实评分数据分开。
  • 交付:新版尺寸表、素材映射、显示字段映射、确定的页面路由。

P1:公共样式与既有入口流程

  • 修改 h5/css/style.css 公共组件与背景策略。
  • 修改 h5/index.html 首页/授权/档案/拍照引导结构,接入新版素材。
  • 修改 h5/js/app.js 文案、肤质图片配置和相应入口,保留档案选择器校验。
  • 交付:首页、授权、档案和引导弹窗的并排截图与可操作流程。

P2:报告页重构(视觉改动最大)

  • 合并汇总卡;显示层统一三个新维度名称。
  • 将一个三维度 Tab 改成三个纵向区块,各自包含 2 / 3 / 2 个分类 Tab。
  • 大图、分隔线、正文、免责声明、护理建议按新版排版。
  • 接入 brown_area/water_area 视图及独立文案,处理加载/缺失状态。
  • 三档产品列表配置化;按定稿移除旧布局的多余块与无实际动作的按钮。
  • 主要文件:index.html、style.css、app.js,新增展示适配模块;不因换名改评分引擎。
  • 交付:完整长报告、七个视图、三种商品结果和缺数据状态。

P3:拍照页视觉校准

  • 更新三套轮廓与眼鼻定位线,统一使用同一套 viewBox/坐标系。
  • 同步裁剪范围、前后镜头镜像、扫描区域、轮廓成功提示;继续使用现有脸部检测和自动抓拍流程。
  • 保留实时自动模式和系统相机/相册降级模式;不能因为设计隐藏快门就删除降级模式的快门。
  • 交付:三步静态对照、真实摄像头全流程和 HTTP 降级验证。

P4:登录外观与本机历史闭环

  • 新增 s-login 与 s-history;统一返回栈和刷新行为。
  • 游客入口接入首页,“我的报告”显示真实保留数量、日期与详情。
  • 为新/旧记录定义兼容读取及缺图策略;退出相机、关闭放大图、回到列表都要返回正确位置。
  • 登录图上无法确定授权后跳转、重复授权等状态,按明确的流程方案补齐。
  • 交付:游客用户可完整走通;微信入口状态与真实后端能力一致。

P5:真实账号能力(依赖账号与后端范围确定)

  • 登录接入、会话、记录归属及用户级报告 API;补齐跨设备历史和对应权限验证。
  • 同步处理退出、授权取消、会话失效和游客报告迁移策略。
  • 交付:真实微信登录及本人报告查询。完成此阶段才能把所有设计功能视为完成。

P6:联合验收与部署

  • 固定 375px 基准截图,对照去除原生顶栏的 PSD;再检查 390/414px 及短屏、长屏、底部安全区。
  • 静态结构完成后核对字体、图片裁剪、Tab 下划线、卡片边缘和垂直节奏。
  • 更新现有 h5/test/e2e-browser.mjs:新版入口、独立 Tab、列表详情返回、七图、三商品、无空引用和无 JS 异常。
  • 跑 h5/test/regression.js;同一测试数据的现有评分/护理建议/推荐结果应保持一致。
  • 实机验证微信内 H5、Android 浏览器、iOS 浏览器;现有局域网 HTTP 只能验证降级拍照,实时自动相机需在可用的 HTTPS 环境验证。
  • 交付:最终对照图、回归结果、可访问页面地址及尚未覆盖的设备范围。

8. 验收定义

  1. 结构:10 个设计画板对应的页面/弹层均有明确落点;新增登录与报告列表不能只是无法操作的截图。
  2. 视觉:375px 固定视口下,静态主要边界目标误差不超过约 2 CSS px;同字体、同文本、同图片才能做局部像素差比较。不同真实数据不得按整页像素误差判断。
  3. 响应式:375/390/414px 下无横向溢出、文字截断、底部按钮被安全区遮挡;长报告允许内容自然增长。
  4. 交互:三块报告 Tab 相互独立,图片点开/返回正常,历史列表与详情可往返,返回不重新启动摄像头。
  5. 数据:七个展示视图与六分类计算关系清晰;姓名/日期/数量/分数来自真实状态;不会加载上一个报告的图片。
  6. 拍照:正 → 用户右脸 → 用户左脸,API 仍按 front/left/right 正确送检;自动、拒绝权限、相册、系统相机路径分别检查。
  7. 历史:列表计数与保留策略一致,缺图或记录损坏有正确提示;若接账号,必须只读本人记录。
  8. 性能:整页 PNG 与设计示意人脸仅用于验收,业务页面按需加载独立素材;产品图懒加载,避免把 445MB PSD 或大幅设计预览带进页面。

9. 实施前需要定下的四个选择

本轮计划不依赖立即答复;进入实现前按以下顺序确定即可:

  1. 容器:沿用当前 H5、去除原生顶栏,还是补一条网页标题/返回栏?建议沿用 H5 口径。
  2. 账号范围:先完成游客及本机历史、再接微信,还是把真实登录和跨设备报告纳入同一批交付?两者的后端工作量明显不同。
  3. 业务口径:是否同意三维度仅改显示名、六分类算法保持,肤色/水分拆成展示视图?建议如此,独立话术另行定稿。
  4. 原稿整理:是否按设计保留三商品卡,并去掉旧版额外卡片/占位按钮,同时纠正原稿重复字和错字?建议保留真实推荐信息于护理建议中,清理重复展示。

推荐先完成 P0–P3 的视觉主体,再交付 P4 游客闭环;P5 随账号条件落地。报告结构和新增身份/历史能力是主要工作量,字体和相机坐标是还原精度的主要风险。