Commit Graph
88 Commits
Author SHA1 Message Date
xsl 0e34eeb1df fix: prevent duplicate titles on Taobao login page
Keep a single native title on the entry page even when the host ignores title clearing. Preserve centered headers elsewhere and normalize manifest line endings during shared-code checks.
2026-11-05 10:43:01 +08:00
xsl 873b45d3a5 fix: preserve legacy admin URLs across H5 channels
Keep local record and download paths compatible while retaining explicit external source selection. Record Taobao, H5, WeChat and rednote compatibility verification and baseline test failures.
2026-11-04 15:17:56 +08:00
xsl 774376fa16 feat: 完善淘宝小程序拍照、报告与登录流程
接入本地实时识别和自动三连拍,调整报告裁切、商品跳转、分享标题及居中页眉;完善游客会话、后台渠道隔离、部署脚本与回归测试。
2026-11-04 15:07:51 +08:00
xsl 381da60ae4 chore: commit test-phase secrets so a new dev machine needs no manual copy
测试验证阶段,换开发机时不再需要手工拷贝两个机密文件。已与用户确认安全
要求不高,代价是密钥进入 git 历史,上线前必须清理。

入库(.gitignore 用 ! 例外放行):
- backend-java/src/main/resources/application-local.yml
  淘宝 AppKey/AppSecret + verify-sign + mode=forward + forward-base
- reference/facepp-skinanalyze/credentials.env
  旷视 FACEPP_API_KEY / FACEPP_API_SECRET / FACEPP_SKINANALYZE_URL
  (从服务器同名文件裁剪而来,只保留旷视相关行,去掉了其它项目条目)

其它密钥防护保持不变:apikey.*、.env、*.env 等仍被忽略。

上线前必做(已写入条待办第 6 项与 .gitignore 注释):
  1) 重置 AppSecret 与旷视 Key
  2) git filter-repo 从历史清除这两个文件
  3) 改回环境变量 / 保密字典注入

HANDOFF 1.5 节、待办第 6 项、交接检查清单已同步为「clone 即有」。
2026-11-01 23:53:11 +08:00
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