setphotosonce-contract

20260916-201504 轮 · 看它的历史
[target] clone=h8 port=20098 base=http://localhost:20098 h5=http://h8 container=wt_h8_tp8
[snapshot] jnc_pic=1097  tpl#15076=2026-07-31 12:51:52|8  uhash(2939)=x8yemam03fev

── 后端契约 · setphotosonce vs getUserPhoto(第二独立来源)
  ✅ A0 前置:getUserPhoto 拿到了 2939 的照片行
  ✅ A0b 前置:2939 名下有照片(实测 1 张)
  ✅ A1 前置:setphotosonce 返回 3 行
  setphotosonce[0] = {"picname":"https://jnc-main-cd.oss-cn-chengdu.aliyuncs.com/6p40qjry/images/user/0/20260724/x8yemam03fev/1784876899919_fhet61.jpg","picgroupuserid":"x8yemam03fev","ms3file":"https://jnc-main-cd.oss-cn-chengdu.aliyuncs.com/6p40qjry/images/user/0/20260724/x8yemam03fev/1784876899919_fhet61.jpg?scale=LD_F","width":933,"height":1400}
  ✅ B1 🔴 ms3file 与 getUserPhoto 逐字相等
  ✅ B2 🔴 width/height 与 getUserPhoto 逐字相等
  ✅ B3a 每一行的尺寸都与 jnc_pic 里那一行逐字相等(接口如实回报,不再是写死的 0×0)
  ✅ B3b 且至少有一张真的非 0(否则上一条会退化成恒真)
  ✅ B4 picname 与 getUserPhoto 逐字相等(LD_ 不再被拼进 object key)
  ✅ B5 picgroupuserid 已去标识(= user_hash,且不是数字 uid)
  ✅ B6 轮回填充仍生效(1 张照片 → 3 行按 i%1 循环;N=1 时本条分辨力有限,见上方注释)

── 守卫 · num 闸与空相册
  ✅ G1 num=0 仍被拒
  ✅ G2 num=5000 仍恰好 500 条
  ✅ G3 0 张照片的账号仍返「请先上传照片」

── Taro H5 · 点「一键填图」(独立端)
✔ ensure-h5:public/h5 已是当前源码构建的,无需重建
  改前画布: {"total":10,"loaded":10,"userPhoto":0}
  ✅ T1 前置:页面确实渲染出来了(画布上已有图)
  ✅ T1b 前置:两个空槽此刻是空的(画布上没有任何用户照片)
  改后画布: {"total":10,"loaded":10,"userPhoto":2,"userPhotoLoaded":2,"badGeom":false,"badGeomWhere":[],"sample":["https://jnc-main-cd.oss-cn-chengdu.aliyuncs.com/6p40qjry/images/user/0/20260724/x8yemam03fev/1784876899919_fhet61.jpg?scale=LD_F&r"]}
  网络: {"spo":1,"spoUrl":"php/WxApi/setphotosonce/num/50","sign":2,"ossHits":20,"ossSample":["200 interlace,0&OSSAccessKeyI","200 interlace,0&OSSAccessKeyI","200 interlace,0&OSSAccessKeyI","200 interlace,0&OSSAccessKeyI","200 resize,p_50&OSSAccessKeyI","200 resize,p_50&OSSAccessKeyI"]}
  ✅ T2 中间产物:确实发出了 /setphotosonce 请求(链路真的跑通了)
  ✅ T3 🔴 用户可见:两个空槽被填上了用户照片(改前 0 张)
  ✅ T4 🔴 且这些照片真的画出来了(naturalWidth>0,即签名有效、URL 可取)
  ✅ T5 守卫:几何里没有 NaN / Infinity
  ✅ T6 守卫:全程没有发出 /xml_save(作品未被改)
[shot] /data/AICode/e2e/ma_dev_v2/ma/bin/workspace/test-results/playwright-images/setphotosonce-contract/xml-detail-after-fill.png

── 收尾快照
  ✅ Z1 jnc_pic 行数未变
  ✅ Z2 tpl#15076 的 update_time/tpl_edit_version 未变(作品没被改)

========================================================
PASS=22  FAIL=0