Commit Graph
84 Commits
Author SHA1 Message Date
xsl 8bc6251899 docs(handoff): clarify where the two secret files come from
application-local.yml 在老开发机;credentials.env 只存在服务器
(老开发机上没有这个文件),需要 scp 取。补充了目标路径、验证命令
和「只做小程序端开发可以先不拷 credentials.env」的说明。
2026-11-01 23:51:04 +08:00
xsl 2eb0d8e807 docs(proposal): add Taobao product proposal decks and their generators
产品方案 PPT 是交付物,之前只存在于本机,换开发机后会丢,所以入库。

- 3 份 pptx:智能测肤方案(正版 1.3MB / 深色版 1.3MB)+ 购物小程序方案模版(0.1MB);
  模版是 build_taobao_proposal_from_template.py 的输入,必须一起入库
- 3 个生成脚本:把硬编码的 D:\juzi\... 改为相对仓库根(Path(__file__).parents[1]),
  渲染用的截图素材 temp/ppt_assets 属临时产物,加进 .gitignore
- build_taobao_proposal_pptx.py 是更早的一版(产物 AI智能测肤...pptx 当前不在仓库),
  保留用于追溯版式
- 新增 .gitignore:/sdk-java-35479221/(淘宝开放平台自动生成的 Java SDK,
  对应已废弃的 AppKey 35479221,当前架构走 HTTP 透传,不引 SDK)
2026-11-01 23:37:38 +08:00
xsl 43a5373233 docs: add development-machine handoff and server deploy configs
换开发机继续开发。新机器只需要拉仓库 + 自备工具链 + 单独拷贝两个机密文件,
服务器/聚石塔/SAE 全部沿用,不需要重建。

- docs/HANDOFF-2026-11-02.md:开发机交接(环境、仓库地图、三套测试、
  本地怎么跑、云端资源清单、上线方式、11 条关键结论、9 项待办、故障对照表)
- deploy/:服务器侧配置入库(原先只存在于机器上)
  - systemd/juzi-taobao.service(18081,独立数据目录与凭据文件)
  - nginx/tb-location.conf(/tb/ 反代 + 只放行聚石塔 NAT EIP)
  - add-tb-nginx.sh(幂等插入,先备份,nginx -t 通过才 reload)
  - README.md(重建与回滚步骤)
- tools/env-java.ps1:优先用仓库内便携工具链,缺失时回退 JAVA_HOME/PATH,
  换机器不用再下便携 JDK/Maven
- README.md:交接文档入口更新
2026-11-01 23:34:26 +08:00
xsl fed52930cc feat(miniapp): align UI with H5 and harden device debugging
五个页面按 h5/css 的 style.css → ui-20261009 → ui-20261012 覆盖顺序逐条重排,
换算规则固定为 calc(N * var(--u)) → 2N rpx,固定 px 的字号保持 px。

- app.acss:换回 H5 设计 token(方角小倒角按钮 10rpx、卡片 14rpx、.chev 折线箭头)
- splash/profile/history:底图与按钮文字图改用 H5 资源,隐私/政策弹窗按 H5 重排
- report:环形分用 conic-gradient、人脸裁切窗口叠加 face_maps、标记点百分比盒、
  侧脸皱纹 pending/unavailable 文案;用 Playwright 抓 H5 94 个选择器几何比对,
  整页高 2438.7 vs 2438.67
- camera:淘宝 <camera> 组件在真机整页崩溃(嵌了微信专有的 <cover-view>),
  改为默认系统相机 + `config.nativeCamera` 开关 + pages/camtest 冒烟页验证组件
- permissions:淘宝用带前缀的 scope.camera(裸名返回 5022 Scope:camera信息不存在),
  先试带前缀再退回裸名,拒绝后不再重复弹窗
- voice:非 HTTPS 资源导致的异常不再冒泡成整页崩溃;app.js 加开发版错误 toast
- 开发版入口:权限诊断(启动页/相机页)、相机组件测试
- 测试 20/20(新增权限与相机能力用例)
2026-11-01 23:30:38 +08:00
xsl f5c416dd9d feat(sae): add cloud-gateway adapters and forward mode (0.0.4)
SAE 上这一版只做云网关适配层:/api/taobao/* 字节级透传给 1me.xajuzi.com 上
现有的 H5 后端(旷视调用、评分、报告都留在那边),Java 不再重写测肤逻辑。

- TaobaoEnvelope:客户端要求的 data.ok + data.http_status 信封(HTTP 恒 200)
- TaobaoAuthController:challenge/session/me/logout(native 模式)
- TaobaoSessionService:一次性 challenge + 30 天 Bearer token,按 open_id 限流
  (网关后面所有请求同源 IP,按 IP 计数会变成全站共享 30 次/分钟)
- TaobaoForwardController:mode=forward 时透传,保留原始 query 与 body 字节
  (签名覆盖原始 body,重新序列化会让验签失败)
- TaobaoSignatureVerifier:缺省 sign_method 按 md5 校验
- 打包名固定为 taobao-mvp-backend-0.0.4-forward,SAE 不需要任何环境变量
- pom 版本 0.0.4;mvn test 11/11(新增 8 个用例)
- docs:更新 SAE 操作步骤,新增本次交接文档
2026-11-01 23:30:35 +08:00
xsl 65ba3cc7a5 fix(taobao): default cloud gateway signature to the md5 form
真实网关请求不带 sign_method(2026-11-01 用 nginx access.log 抓到的真实请求离线复算确认),
缺省签名形式是 MD5(secret + content + secret),也就是 sign_method=md5 的算法,
而不是 MD5(content + secret)。旧实现按「空方法」走了后者,必然 mismatch,
真机登录一直卡在 401「淘宝身份校验失败」。

- h5/lib/taobao-auth.js:缺省 method 归一为 md5
- h5/test/taobao-auth.js:把抓包参数固化成回归测试(含旧算法的反例与 verify 正反例)
2026-11-01 23:30:29 +08:00
xsl ac0b7ca42b feat(sae): add Java MVP backend and Taobao connectivity page
Spring Boot 3.5.6 / Java 17 JAR with cloud gateway envelope and ping/whoami/echo; Taobao gateway signature verification matching the Node implementation; /pages/mvp page, splash dev entry and local transport contract test; SAE + 聚石塔 runbook and portable JDK/Maven setup; Windows 11 wmic shim for Taobao DevTools.
2026-10-31 18:35:04 +08:00
xsl 459e21dad4 docs(rednote): record verified isolated production deployment 2026-10-19 23:04:28 +08:00
xsl 4af825a5e4 feat(rednote): add isolated persistent browser H5 entry 2026-10-19 22:59:10 +08:00
xsl 9eec4369da feat(taobao): add native mini program with shared backend
Preserve H5 flows while adding Taobao identity, native capture, reports and isolated local development. Fix canceled province selection and expired-session logout. Record passing local regressions, two pre-existing H5 assertion failures and pending platform validation.
2026-10-19 20:14:31 +08:00
xsl d07f8cc1bb save 2026-10-17 17:01:46 +08:00
xsl bb6da17f54 fix(recommendation): use displayed skin age across reports and admin 2026-10-16 19:03:25 +08:00
xsl 571d78a2ed ui(report): show wrinkle loading hints over side photos 2026-10-16 16:45:07 +08:00
xsl 9181069643 perf(report): load side wrinkle layers after report entry 2026-10-16 16:34:11 +08:00
xsl b19811f974 fix(camera): add 30-second scan waiting watchdog 2026-10-16 16:07:53 +08:00
xsl 5e07985b19 fix(camera): remove post-capture photo revalidation 2026-10-16 16:01:25 +08:00
xsl 6a628f837b fix(camera): make lighting checks advisory only 2026-10-16 15:51:07 +08:00
xsl 9ff7a582af feat(admin): track capture-to-report conversion funnel 2026-10-16 15:45:13 +08:00
xsl 03a8907b4e fix(camera): lower frontal and side confidence thresholds 2026-10-16 15:35:53 +08:00
xsl 30c90f8df5 fix(camera): relax initial frontal face recognition 2026-10-16 15:27:36 +08:00
xsl 8365ef459f fix(report): remove eye conditions from contour conclusions 2026-10-16 11:05:34 +08:00
xsl 98d6189f5c final save 2026-10-15 22:16:01 +08:00
xsl 49db1a6f5b fix(camera): relax pitch and roll acceptance limits 2026-10-15 21:16:46 +08:00
xsl c6d65493b6 fix(camera): set accepted face brightness to 110–220 2026-10-15 20:51:19 +08:00
xsl fbc556d1a6 fix(report): move side photo preview fill upward 2026-10-15 20:47:41 +08:00
xsl 8115db4ec2 fix(camera): constrain brightness and adjust side photo previews 2026-10-15 20:41:28 +08:00
xsl 480fed40cc fix(camera): raise minimum face brightness to 100 2026-10-15 20:23:45 +08:00
xsl 5632ac43d7 fix(report): cap dimension scores and match zoom crops to thumbnails 2026-10-15 20:17:07 +08:00
xsl 482fb4280d fix(h5): relax capture angles and annotate acne marks 2026-10-15 19:55:21 +08:00
xsl 757b96dfad feat(report): add annotated wrinkle views and restore capture countdown 2026-10-15 19:45:21 +08:00
xsl 2d80f6dfd0 feat(report): unify display grades and add contour side photos 2026-10-15 17:14:05 +08:00
xsl 60f0965c5a feat(scoring): use independent tone hydration minima and focus-first care 2026-10-15 14:40:59 +08:00
xsl 77493bdff5 feat(h5): align report care and single-product section with updated design 2026-10-15 01:30:45 +08:00
xsl 60ae6c97ef feat(h5): update skin scoring, age display and capture countdown 2026-10-15 00:20:48 +08:00
xsl d8c67762da feat(h5): calculate integer total from weighted dimensions across reports and admin 2026-10-14 14:25:17 +08:00
xsl 61a7f7c726 fix(h5): enlarge regular brand text for optical alignment 2026-10-13 22:40:04 +08:00
xsl fc711e3b1c fix(h5): add comma after brand name on splash and photo guide 2026-10-13 20:29:40 +08:00
xsl 6acc541cd8 fix(h5): unify regular slogan typography on splash and photo guide 2026-10-13 19:01:00 +08:00
xsl 84a92137aa fix(h5): use replacement flip icon on report scanning screen 2026-10-13 18:04:32 +08:00
xsl 7381306139 fix(h5): optimize camera flipping and angle haptics, refresh splash branding 2026-10-13 17:57:55 +08:00
xsl e71368db6d fix(h5): show raw skin age, support Harmony touch pickers and add WeChat logout 2026-10-13 16:12:54 +08:00
xsl 4e42e33994 fix(h5): rename guest entry button to 游客登陆 2026-10-13 15:28:07 +08:00
xsl 1fdbb575b0 feat(h5): allow guest access without login and retain history only for WeChat 2026-10-13 15:23:23 +08:00
xsl 98935dd168 fix(h5): prevent native scrolling from stealing diagonal image swipes 2026-10-13 00:42:01 +08:00
xsl 4c478b16e3 fix(h5): prioritize horizontal report image gestures 2026-10-13 00:32:44 +08:00
xsl 3efa28b311 fix(h5): reduce report swipe conflicts and limit edge overscroll 2026-10-13 00:24:52 +08:00
xsl f1e64565b9 fix(h5): center grouped score unit and tighten report summary spacing 2026-10-13 00:12:02 +08:00
xsl 6f83f58a09 fix(h5): center score stack, lock profile scroll and gate turn guidance 2026-10-12 23:48:11 +08:00
xsl 2a49ebdab2 test(deploy): verify report touch release on public server 2026-10-12 22:44:41 +08:00
xsl 63c9e065a9 feat(h5): refine report layout, add finger-following tabs and optimize images 2026-10-12 22:36:44 +08:00
xsl bcf198ca6f 添加反馈文档 2026-10-12 21:46:47 +08:00
xsl 69dc9962c0 fix(h5): show captured face behind report scan animation 2026-10-12 21:21:49 +08:00
xsl ce6dbc20d4 feat(h5): remember profile selections and add finger-following skin swipe 2026-10-12 21:10:00 +08:00
xsl c9352fe4ca fix(h5): ease camera capture requirements and rename page title 2026-10-12 20:47:58 +08:00
xsl 3f165bf9e5 test(deploy): verify fourth feedback capture and public release 2026-10-12 20:27:45 +08:00
xsl 92a3965b7d feat(h5): apply fourth feedback and tighten local capture validation 2026-10-12 20:16:41 +08:00
xsl e53c809522 docs(deploy): record third feedback production verification 2026-10-12 16:38:36 +08:00
xsl c7b085e795 feat(h5): align third feedback with latest PSD and scanning screen 2026-10-12 16:33:10 +08:00
xsl f3e7eac909 test(deploy): verify second feedback release on public site 2026-10-12 14:40:25 +08:00
xsl fe9623a1d7 feat(h5): apply second customer UI feedback and homepage refinements 2026-10-12 14:35:39 +08:00
xsl abb1c4c1de docs(deploy): record customer feedback release verification 2026-10-12 13:18:21 +08:00
xsl d7ae748e08 feat(h5): apply October 12 customer report feedback 2026-10-12 13:15:09 +08:00
xsl 3193a4b683 docs(auth): record deployed login performance verification 2026-10-12 11:03:47 +08:00
xsl d2931a41e4 feat(auth): clarify login identity and speed up mobile entry 2026-10-12 11:01:49 +08:00
xsl 85790ef985 docs(auth): record live preflight and portable log checks 2026-10-12 10:11:44 +08:00
xsl d68f841f0e fix(auth): harden WeChat login and explicit identity switching 2026-10-12 10:07:54 +08:00
xsl 0ec5e5dc32 fix(report): recommend by measured skin age and align admin results 2026-10-12 00:23:57 +08:00
xsl 7518dc2307 fix(h5): sync latest report copy and deployment verification 2026-10-11 22:59:21 +08:00
xsl 55b3a45282 添加参考图 psd 2026-10-11 17:51:48 +08:00
xsl ce8d0ff1f7 feat(h5): align October UI and add WeChat auth with saved reports 2026-10-11 17:28:11 +08:00
xsl ee744b6b5f save 2026-10-10 14:24:32 +08:00
xsl 55f26d91af 修改整理反馈需求 2026-10-09 22:12:33 +08:00
xsl 499be22771 第一版反馈 2026-10-09 21:08:12 +08:00
xsl 3d32434d6f 添加后端文档 2026-09-28 10:49:09 +08:00
xslandCursor 67b6d86fce chore: 移除 graphify 日期快照目录
历史快照与根目录图重复,加入 ignore 防止再入库。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-28 09:05:25 +08:00
xslandCursor ecb4bb2515 chore: 将 graphify cache 移出版本库
cache 可本地重建,加入 .gitignore 避免再次误提交。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-28 09:04:27 +08:00
xsl b6ba6b65c5 save 2026-09-28 09:02:32 +08:00
xslandCursor 531a7ddd14 fix: 拍照页对齐 Figma(正→右→左/镜像预览/WebView 口径定位/85%遮罩) + 语音调度重写 + 正脸照不镜像
- 拍照顺序改为正脸→右脸→左脸(对齐 Figma),左右以用户本人为准;送检前按 target 重排为 [正,左,右]
- 三步预览均镜像(Figma 侧脸轮廓按镜像绘制),后置镜头侧脸轮廓自动翻转;抓帧恒为原始视角
- 蒙版 viewBox 取 Figma 帧 y86–812(扣除微信导航栏)+ meet 缩放,文案/引导/提示按 726 高定位;框外 85% 黑,静态态白底
- 语音:流程音排队不截断、姿态提示挂起补播、倒计时等播报收尾、拍摄完成打断过时引导、出报告/退出清队列;去重仅限姿态提示
- 语音文件改名 step2-rightface / step3-leftface,同步清单、生成脚本与设计文档
- 精华卡去重复正文、推荐依据写明具体原因;年龄仅数字;toast 按字数延时;备注去内部质量码
- 新增无头浏览器冒烟测试 h5/test/e2e-browser.mjs

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-28 02:22:37 +08:00
xsl ca76128ac0 更新 3, 2, 1 的声音 2026-09-27 10:38:28 +08:00
xsl f8de5f881a 完成语音生成 2026-09-27 00:03:34 +08:00
xsl 71a090fd75 跟新需求文档 2026-09-26 19:50:39 +08:00
xsl ab9a39a8f3 save 2026-09-26 16:23:59 +08:00
xsl 5957ef04fc feat: 接入 Face++ 真实测肤 + 三轮多角色迭代修复
Face++ 集成(高阶版 skinanalyze_advanced):
- h5/server.js:零依赖 Node 后端,静态托管 + /api/skin-analyze 中转,
  api_secret 只存服务端(从 apikey.bash/env 读取,.gitignore 已排除)
- 实时相机:getUserMedia 自拍取景,不可用时降级系统相机;
  相机令牌防授权回调泄漏摄像头;离开拍照页即释放
- 检测流:三连拍仅送检正面照(压至 1280px JPEG),错误码→友好提示
- 结果映射:肌肤年龄=skin_age 真实值;紧塑力/活力感/稳定力由真实
  维度合成;具体描述按检出项动态生成;检测图用用户实拍
- ?mock=1 内置样本供离线/自动化验证;README 补充部署与 HTTPS 说明

三轮迭代修复(QA+美术并行审计→开发统一修复,共 ~28 项):
- 功能:P1 鼠标拖拽轮播(Pointer Events+setPointerCapture)、
  快门/返回竞态(camSeq 令牌)、报告页状态重置、弹窗 ESC/遮罩关闭
- 视觉:还原度 80%→94%,档案页布局/弹窗比例/报告页产品卡等
  结构性偏差修正,字号/间距逐项实测核销
- 工程化:首屏 701KB→386KB(懒加载+preload+清理 212KB 无用资源)、
  favicon/SEO meta/隐私协议占位层/README

Review 修复:server.js 路径穿越前缀绕过(ROOT+sep 校验)、
getUserMedia 迟到回调释放相机(camSeqCam 令牌)
2026-09-22 21:06:33 +08:00
xsl e4e85d2805 feat: 巨子测肤 H5 原型(按 Figma 设计稿还原)
- design/: Figma 设计稿提取产物 — 设计规范文档、9 张整屏预览、
  8 个 SVG 组件切图、15 张位图素材、完整节点数据(full.json)
- h5/: 纯静态 H5 实现 — 启动页/隐私弹窗/档案填写(肤质轮播)/
  三连拍照/报告页,375px 基准还原,含压缩素材与 Playwright 验收截图
2026-09-21 23:25:01 +08:00