2026-11-03 正式包开发入口清理
正式路由仅保留登录、主页、档案、拍照、报告和历史六页。pages/mvp、pages/camtest、pages/camnative 已从 app.json 移除,并同时加入编译和上传排除项;开发测试源码保留供离线回归,不随正式包注册或上传。登录和主页的开发入口、诊断弹层、对应处理方法与样式已清理。主拍照页 ?debug=local-face 还必须显式启用 cameraDebug,当前配置为 false。
“重新开启相机”是实际失败后的恢复入口,不是测试按钮:只在真实错误/权限提示下显示,登录校验、初次启动、预览、拍摄完成过渡和报告处理中隐藏;点击重试时先清除旧错误,失败再恢复提示。没有增加自动重试,也没有改变相机方向、角度、识别后端、照片顺序、亮度门限或 1.5 秒新鲜度限制。
淘宝小程序开发说明
用户已确认自动三连拍在当前手机通过,正式业务配置已恢复 photoInputMode: 'camera',使用与测试页相同的识别和自动拍照逻辑;原相册入口保留。UI 和交互保持原样,不新增上传面板。若需独立排查选图上传,仍可临时设为 'upload' 跳过实时识别。淘宝专用 Node 已备份并更新新版游客及幂等接口,云服务访问异常及实际手机三图报告仍需验收。
正式入口:登录/游客 → 开始检测 → 原隐私弹窗 → 档案 → 拍照引导的“开始” → 自动三连拍 → 上传及报告。首次使用时衔接平台相机授权,无需先进入开发测试页。游客和正式账号的多页面集成回归均已覆盖,测试服务响应不代表真实云网关已通过。
页面按 H5 还原:报告检测图区域支持左右跟手滑动切换页卡,标签和高度同步;点检测图可放大,再点关闭;档案肤质卡支持跟手横滑、箭头和圆点联动。正常页面隐藏开发诊断入口,主页保留“开始检测/我的报告”,报告页不附加额外按钮。专项诊断时可在开发环境临时启用 cameraDebug:true 显示测试入口。
当前适配:独立登录首屏(淘宝账号/游客)→ 基础档案 → 正/右/左三步拍摄或相册选图 → 检测等待 → 七项报告 → 对应商品。正式淘宝账号保留最近 5 份历史;游客会话、档案和报告仅本次内存使用。商品 I/II/III 统一打开 1090510453077,推荐规则沿用 H5。
首版要求实时识别抓拍。 当前默认采用普通 camera 前置取景及连续帧,在本机运行人脸定位和轻量 68 点模型,复用 H5 姿态及稳定性判断,倒计时后用原生 takePhoto 获取 JPEG。用户已验证普通相机默认前置、帧数增加、可以拍照出图;手机已识别人脸并通过正脸姿态,但优化后的 CPU 单帧仍约 4.25 秒。当前候选改用原生 WebGL 加速,需通过数值自测、预热后再处理真实帧;手机兼容性、速度和自动三连拍仍待验收。AR 路线保留为显式开发对照,其默认自拍修正尚未通过真机验证。诊断页面保留在开发源码中,已移出正式路由及上传包。诊断不登录、不上传、不产生检测费用。
本轮实施状态、验收和部署顺序见 适配交接。
开发版“相机测试(开发版)”现直接进入 CAM-NATIVE-20261102-04,点顶部“开始自动三连拍测试”可进入 LOCAL-FACE-20261102-09。该页复用正式取景、实时识别、正/右/左自动拍摄及 JPEG 压缩,最后只展示本页临时照片,不要求账号或档案、不上传照片、不创建检测任务。卡住时点“复制识别诊断”,只复制模型阶段、耗时、帧尺寸、计数、安全错误代码及固定合成输入的图形自测指标,不复制图像或人脸坐标。测试页不播放语音;应用自身已有的静态资源加载及账号恢复不受这个页内模式控制。
手机在旧版 LOCAL-FACE-20261102-01 已识别 1 脸并通过姿态,CPU 优化版 02 从约 10.7 秒降至 4.25 秒,仍因结果过期停止,尚未完成自动抓拍。版本 03 明确请求原生 WebGL1,并按淘宝官方文档开启 window.enableSkia:"true";手机矩阵自测执行 4 次绘制后报 MATMUL_FAILED。版本 04 依次验证 default、packed_byte(禁用浮点下载)和 unpacked_byte(再禁用打包 shader),真机三档均失败。最后一档记录 5 次绘制、1 次字节读回,矩阵校验和 0/预期 2786、244 项不匹配、最大误差 22,呈现全零特征;这些聚合指标尚不能单独证明全部元素为零或确定根因,仍未处理真实相机帧。
版本 05 按淘宝官方说明关闭 readPixels 的宿主额外翻转,并增加 2×2 原生图形检查。手机清屏读回通过,非对称 shader 有 3 项不匹配,预期校验和 2244/实际 2040;实际值与此前清屏校验和相同。这与绘制未覆盖的情况一致,也可能来自坐标、缓冲区上传或绘制状态,尚不能唯一确定根因,仍未处理真实相机帧。
版本 06 显式规范化 GL 绘制状态,每次绘制前清黑,先分别验证恒色 drawArrays/索引绘制,再验证原非对称 shader 和字节/浮点纹理。原生兼容候选按 standard → buffer_copy(将视图字节紧密拷贝为标准 bufferData ArrayBuffer)→ framebuffer_y(仅补偿已绑定 FBO 的 viewport/scissor Y 坐标)→ combined 自测;仅 VALUE_MISMATCH 允许换路,其他错误停止。四路使用同一上下文,每路结束清理自己的检查对象;TF 三档选择最多创建 3 个上下文。每条可用路径都须通过全部原生检查及后续严格矩阵/卷积自测、真实模型预热,不能按机型硬开,也不放宽 1.5 秒源帧新鲜度或回退 CPU。诊断保留原始失败阶段/代码、最终 nativeStrategy、固定合成的四像素及缓冲区字节数,仅初始化时缓存;真实人脸结果不能覆盖。手机实际选路、识别速度和三连拍仍待验收。
当前候选 07 针对真机 06 的 nativeInitialStage=constant_indexed:标准路径普通恒色绘制已通过,索引绘制失败;最后的坐标兼容黑屏不代表原始根因。原生索引调用前先重新绑定索引缓冲。若仍然是普通绘制通过而索引数值失败,则验证等价的四顶点 TRIANGLE_STRIP 路径;通过非对称图案、纹理、原矩阵/卷积和模型预热后才使用。仅把自有固定索引 [0,1,2,2,1,3]、TRIANGLES/6/UNSIGNED_SHORT/offset0 转换,未知签名、缓冲未确认或部分修改时明确拒绝。诊断新增 drawStrategy=quad_strip、实际绘制计数和 constantQuad;此时 constantIndexed=not_run,不宣称原生索引已通过。原生候选最多 8 次、仍使用同一上下文,手机效果与速度待验收。
此入口仅在 environment: 'development'、captureMode: 'native-face'、nativeCamera: true 时开放,允许当前 cloud 配置;debug=local-face 参数不能在生产环境绕过登录。原来的 debug=camera 手动验收仍要求显式 cameraDebug 开关及本机直连,不变更其范围。
本地启动
在本目录运行:
npm ci
npm run dev:backend
只监听回环地址:
http://127.0.0.1:18180:本地 H5 与淘宝网关模拟代理。http://127.0.0.1:18181:实际共享 Node 后端。http://127.0.0.1:18180/dev/health:确认样本模式。../temp/taobao-local-data/:隔离的账号、照片、检测记录和报告。不会读写现有h5/data/。
代理使用固定的本地测试身份并模拟淘宝网关签名;Face++ 返回仓库内的固定样本。模拟逻辑仅在开发启动脚本中,正式服务器不会接受客户端自报 open_id,也没有免验签的开发登录后门。本地 H5 的微信入口不启用;微信 /state/ 授权由独立浏览器回归验证。
config.js 默认是 cloud/tower/test,使用聚石塔云网关。仅做本机样本联调时手动切换到 transport: 'direct'、baseUrl: 'http://127.0.0.1:18180';结束后恢复云配置。代理为正式和游客会话签名,不绕过后端校验。手机上的 127.0.0.1 指向手机自身。
文件职责
首页右上角“开发调试 · 相机验收”可直接进入相机页,不依赖淘宝登录、本地后端或网络。也可在IDE启动参数中指定页面 pages/camera/camera、参数 debug=camera。入口需要同时满足 config.js 中 environment: 'development'、cameraDebug: true、本机直连配置;改为正式/cloud配置后入口关闭,单独拼参数也不能绕过登录。
验收时先开启相机,按正脸→右脸→左脸拍摄/确认,第三张完成后仅在本页验证JPEG压缩并展示三张原始预览与压缩尺寸,不发检测请求、不生成报告、不播放远程语音,也不会写入正式档案/报告状态。临时预览用于检查前置照片方向;页面不判断拍摄姿态是否合格。退出时清空本页照片引用。
依次检查:首次授权、拒绝后相册仍可使用、授权设置恢复、前后镜头、三张方向、切后台恢复、压缩最长边≤1280。真实系统权限和相机画面仍需淘宝IDE/手机验收,自动测试仅验证代码流程。
pages/login:淘宝/游客登录、协议、登录恢复,以及仅开发版显示的 AR 测试入口。pages/splash:品牌首页、开始检测、历史、退出/结束游客体验。pages/profile:账号隔离的基础信息缓存、出生年月和省市滚轮、肤质选择。pages/camera:普通前置相机本地实时识别、正/右/左三步引导、H5 轮廓及定位线、自动倒计时和原生 JPEG 拍摄;保留 AR 开发对照、完成卡与扫描等待页。相册路径拍后直接推进;单画布顺序压缩最长边 1280 的 JPEG;暂停后复用原分析任务,不重新收费。pages/report:服务端返回的当前评分/话术、七项分析、护理选三、精华、真实图层和坐标标注;侧脸图层异步加载。pages/history:本人最近5份完整报告。utils/transport.js:本机代理或淘宝云 SDK 传输,保留反代子路径配置。utils/api.js:账号凭据、64KiB照片分片、检测任务提交与轮询、历史报告。vendor/:从 H5 同步的评分、报告呈现、拍照规则及哈希清单;native-face/为从 H5 原始模型生成的小程序 CPU 副本,含来源记录。分别使用共享同步脚本和node scripts/build-native-face.cjs重建,不手工改生成文件。scripts/、test/、docs/:开发与回归文件,IDE 配置排除上传。
H5 规则变更后运行 npm run sync:shared;npm run check:shared 会检查逐字节一致。在线报告优先使用服务端返回的 vm/presentation,原始检测分数和展示肌龄分别保存。
账号与共享后端
正式淘宝请求走 cloud.application.httpRequest。登录分两步:先获取60秒一次性 challenge,再发送经网关签名、含 challenge 与同意标记的登录请求。服务端验证全部查询参数和原始请求体的签名,从网关注入的 open_id 建立 kind: taobao 的稳定账号;不依赖前端上报身份。账号键保存为 appKey/openId 的哈希。
淘宝使用独立 Bearer 会话,微信继续使用原有 Cookie。两种会话不能互换。共用 accounts 存储和报告格式,按服务端身份隔离历史、图片上传、检测任务和侧脸标注。
新检测记录自动标记 h5 或 taobao,不信任请求体中的 channel。历史没有该字段的记录视为 H5。管理 API 支持 ?channel=taobao 筛选;统计返回 by_channel;CSV在末尾追加渠道列,旧列的位置保持不变。后台页面本轮没有改布局。
云网关接入准备
这里仅说明未来配置,不会自动部署。
- 关联淘宝 AppKey 与外部云应用,配置域名与资源域名权限。
- 只在后端环境配置
TAOBAO_APP_KEY、TAOBAO_APP_SECRET;Face++ 密钥沿用现有服务端设置。所有 Secret 均不得进入小程序代码。 config.js设置environment: 'production'、cameraDebug: false、transport: 'cloud'、HTTPSbaseUrl、cloudAppId、资源assetBase。如果使用原来的/state/反代入口,设置basePath: '/state',资源根同时包含/state/assets/。- 外部/空应用
cloudEnv为online,这表示淘宝网关的环境,和本次是否部署生产服务器无关。 - 真实淘宝授权确认后才能创建账号。当前尚未填入真实 AppKey/Secret/cloudAppId,也没有宣称已完成真实平台联调。
云网关单次请求内容上限128KB、外部服务超时最多10秒。照片按64KiB base64顺序上传,每个用户的照片只可消费一次;检测与侧脸标注均用短请求提交、轮询结果,不能直接把三张大图发进一个45秒请求。中断轮询不会自动重复付费检测,已完成结果可在历史报告中读取。
官方依据:
自动验证
npm run check:shared
npm test
npx playwright install chromium
npm run test:h5
npm test 覆盖验签和重放、账号与历史隔离、照片分片与过期、异步检测、渠道筛选/CSV兼容、评分与七项话术、拍摄竞态、图片尺寸和省市联动。检测上游均为固定样本,不消耗线上检测额度。
npm run test:h5 运行现有 H5 的四组浏览器测试,覆盖游客不留存、HTTPS /state/ 微信授权/退出/跨设备、完整报告/后台/CSV,以及异步侧脸图层。使用本地 Playwright,不改写旧测试;Windows上自动使用已安装 Git 附带的 OpenSSL。截图保存至 ../temp/taobao-h5-compatibility/。
待平台验收
开发账号采用独立淘宝账号,由公司主账号管理员将其加入目标小程序的开发成员。公司完成主体认证、开发者入驻及应用创建;开发人员按后台要求完成个人账号认证,获得开发权限后再登录IDE关联应用。不能把店铺子账号的应用使用权限当作小程序开发权限,也不能只添加为体验者。当前账号尚未就绪,以下平台验收未完成。
相机权限单独处理:进入拍摄页先查询 my.getSetting;首次使用由用户点击“开启相机”后调用 my.authorize({ scopes: 'scope.camera' }),授权后再挂载原生camera组件。拒绝后保留相册路径,并提供用户主动打开 my.openSetting 的入口,不循环申请。相册选择使用独立的 scope.album;淘宝账号登录的 scope.userInfo 不代表相机已获授权。app.json 中的用途描述也不代表授权完成。平台控制台仍需确认对应权限包,并在“开发设置-scope授权项管理”填写用途。手机系统对淘宝App的相机/相册权限同样需要真机验证。
参考:淘宝用户授权、权限范围与拒绝后的设置入口、淘宝camera组件与CameraContext API。
- 真实 AppKey/cloudAppId、签名参数和授权权限包联调。
- 真实网关传输报告大图时的返回体限制与内存占用;已减少小程序
setData中重复照片和非当前Tab图层。 - Android/iOS相机权限、前置相片方向、cover-view覆盖、系统相机降级、后台恢复、原生canvas及大图读取。
- UI真机对齐。H5 取景轮廓及实时姿态自动拍摄已接入本地代码,仍需在手机验证定位、左右转头提示、识别耗时和完整三连拍。
- 商品目标已确认:
1090510453077(1'me以我自在有势挺括双仓精华液)。仍需验证平台能力、游客/新报告/历史报告跳转及返回状态。
以上是待真实平台验收的范围,不影响已通过的本地接口与H5回归结论。