test(deploy): verify second feedback release on public site
This commit is contained in:
@@ -62,4 +62,21 @@ H5_ARTIFACT_DIR=/tmp/juzi-feedback-second-ui-20261012 node h5/test/ui-20261009.m
|
||||
|
||||
专项测试覆盖三种轮廓的有界曲线和无原始数据修改、异常输入回退、震动缺失/拒绝/抛错容错、抓拍前触发及频率限制、原有 450 ms 自动抓拍时机;浏览器核验实际渲染字体(不仅是 CSS 数值)、五种屏宽的全屏预览与固定字号、三种状态均无轮廓描边、五官引导保留、登录首屏无大字体/模型请求。专项浏览器测试拦截会话并使用本地合成视频流,不写入后端账号、报告,也不调用收费检测。
|
||||
|
||||
已完成本地开发及验证,首页高清图的两处批注也已补齐;本轮尚未提交 Git、推送或部署公网。真实手机震动实效仍待确认。
|
||||
已完成本地开发及验证,首页高清图的两处批注也已补齐,并按用户要求提交 Git、部署公网。未推送 origin,由用户自行推送。真实手机震动实效仍待确认。
|
||||
|
||||
## 公网部署与复核(2026-10-12,北京时间)
|
||||
|
||||
- 功能提交:`fe9623a`;服务器 `/home/ubuntu/juzi` 通过 Git bundle 从 `abb1c4c` 快进部署到此版本。随后同步本节部署记录及公网字体检查的测试时序修正。
|
||||
- 地址:`https://1me.xajuzi.com/state/`。本轮仅变更前端资源,服务按请求读取磁盘文件,因此无需重启 Node 或 nginx;`juzi-h5.service` 持续 active,进程 PID `3481826` 未变化。
|
||||
- 公网 HTML、三份 CSS、`app.js`、新增 Demibold 字体均与本地 SHA-256 一致,资源保留 `Cache-Control: no-cache`,刷新会重新校验版本。
|
||||
- 健康接口 200/ok,微信配置 `wechat: true`;匿名报告接口和后台页面/统计接口均 401,源码与私有账号数据路径均 404。未修改微信私有配置、真实账号、照片和报告,也未调用收费检测。
|
||||
- 专项浏览器测试分别在本地及公网通过,确认五种屏宽首页字重与视觉高度、协议/报告实际渲染字体、全屏取景/无轮廓描边/圆角与五官引导、无 JS 错误。公网测试仅拦截会话、使用浏览器本地合成视频和模拟报告,不向后端写账号或报告。
|
||||
- 发现并修正测试本身的时序问题:`<link>` 插入 DOM 不代表字体声明已加载;测试先等待 `document.fonts` 注册后再检查字体。未因此更改页面行为。
|
||||
- 登录性能回归通过:模拟 150 ms 延迟、约 2 Mbps 下载、4 倍 CPU 降速,冷启动约 1.66 秒、资源约 264 KB(测试环境数据,不代表所有手机实测);登录及首页没有新增字体/模型下载。
|
||||
- 126 项推荐规则测试、抓拍提醒/容错测试、原反馈及超时测试通过;隔离 HTTPS 环境的模拟微信授权、跨设备报告/账号隔离和切换登录回归通过。本轮未替代真实手机微信授权或震动验收。
|
||||
|
||||
公网专项验证命令:
|
||||
|
||||
```bash
|
||||
H5_BASE_URL=https://1me.xajuzi.com/state/ H5_ARTIFACT_DIR=/tmp/juzi-second-deploy-online-20261012 node h5/test/customer-feedback-second.mjs
|
||||
```
|
||||
|
||||
@@ -84,7 +84,6 @@
|
||||
"82": "wechat-browser.mjs",
|
||||
"83": "10.09 新版 H5 实施与验收",
|
||||
"84": "微信登录联调:2026-10-12",
|
||||
"85": ".predictAgeAndGender",
|
||||
"86": "LabeledFaceDescriptors",
|
||||
"87": "产品推荐规则:肤龄基准与边界调整",
|
||||
"89": "傅艳NEW与项思炼的会话 2026年10月12日.md",
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"0": "00c97d478a8f90eb", "1": "cb6ea50bd4e4a5ca", "2": "00705ebb76871f0f", "3": "1f737ca8edb978f2", "4": "56bf12952b0de42b", "5": "93c69860c6f6563c", "6": "5a9014c4a7f87699", "7": "188dd5e33354e35d", "8": "1ecf47531e1d507b", "9": "64a6935321c48bb6", "10": "9ac0935bc0d2c1fd", "11": "ed0d13cfa8571d24", "12": "53594b653ad48743", "13": "7e3b558a587a4ebe", "14": "bf75bfc99d4f9e34", "15": "72d3264e772df1cb", "16": "95add6a975c0cb72", "17": "15606ce5d8eec23a", "18": "38bb0b185ceed116", "19": "0a373ad2197fd1a6", "20": "aecf2fce44ba49c5", "21": "224bdcd6528fddbf", "22": "ebf7b8a48916906e", "23": "90fac00055070ce2", "24": "f85b5b1634224c86", "25": "46e8db3e6e3f37ea", "26": "83b0fd3b14363e4d", "27": "eab427ce9a5219e9", "28": "9c6f14efe476acf4", "29": "c608f1c6492e1cb1", "30": "73c13793fca09f56", "31": "fbbcfc059751cc6a", "32": "f6bcf56c4589316b", "33": "75f750c5b7d9f63d", "34": "f024ff7942935690", "35": "c4fa292c3dfb0d0e", "36": "a7d375041779bad4", "37": "cb8f26249485324a", "38": "9a25b1230b5fe649", "39": "fdd95375b4a5ddb3", "40": "c6e2efd58425d13d", "41": "d96493a5f110bd4c", "42": "ffd960136fde00ad", "43": "5b04375ec4594cb1", "44": "852c1bb2446edd9c", "45": "92ab3e5134ed8685", "46": "65718282b3c32109", "47": "e594ecaa8e7d1538", "48": "1e2c13775a52fdea", "49": "1f976711cda158dc", "50": "bbb2b57d72922b16", "51": "eb6a182204867275", "52": "2ec3c8c088568ba9", "53": "68c45056378341a7", "54": "c58d41e8e580fdc6", "55": "54d7329fed675057", "56": "8c9a3fc5edff7e44", "57": "f2a40b5f1b29f669", "58": "07d28ed3afe8ac95", "59": "891f59cda3708718", "60": "a505b7de6257a4e8", "61": "2d008ec4a8df7849", "62": "1366ae24c7e5897d", "63": "c256b43f75d7809e", "64": "ce0e68dab611f022", "65": "74ae017de0ffd36b", "66": "e042d7fe7351bcb9", "67": "3e126d8deaf6e200", "68": "6b91f3679541de79", "69": "e511846eeba03076", "70": "880a74c6d255e5cc", "71": "cd6f168abba94fea", "72": "c84f196a7bd35861", "73": "2b887bf601ccfb9f", "74": "ae2a154311e1f53a", "75": "69fdd23278518884", "76": "68250611c66f576f", "77": "429cd62f9137881c", "78": "f4aae1bece83f9e0", "79": "c6cfdfe181232ecc", "80": "315325cde1352e98", "81": "37c559741825be74", "82": "2b037735e1f5b0f6", "83": "1284897282eb47a3", "84": "d8bb296741d3d05c", "85": "a2b13160223b5a98", "86": "f8b38aeaaab11ec4", "87": "e5fa7717989eda80", "89": "9e3363b80eeceeea", "90": "dd1c246e19a2d032", "92": "fced244d93677d90", "97": "01f68dfc34a29d32", "98": "8c471c7baeaaca54"}
|
||||
{"0": "00c97d478a8f90eb", "1": "cb6ea50bd4e4a5ca", "2": "00705ebb76871f0f", "3": "1f737ca8edb978f2", "4": "56bf12952b0de42b", "5": "93c69860c6f6563c", "6": "5a9014c4a7f87699", "7": "188dd5e33354e35d", "8": "1ecf47531e1d507b", "9": "64a6935321c48bb6", "10": "9ac0935bc0d2c1fd", "11": "ed0d13cfa8571d24", "12": "53594b653ad48743", "13": "7e3b558a587a4ebe", "14": "bf75bfc99d4f9e34", "15": "72d3264e772df1cb", "16": "95add6a975c0cb72", "17": "15606ce5d8eec23a", "18": "38bb0b185ceed116", "19": "0a373ad2197fd1a6", "20": "aecf2fce44ba49c5", "21": "224bdcd6528fddbf", "22": "e42f384dfedcff89", "23": "90fac00055070ce2", "24": "f85b5b1634224c86", "25": "46e8db3e6e3f37ea", "26": "83b0fd3b14363e4d", "27": "eab427ce9a5219e9", "28": "9c6f14efe476acf4", "29": "c608f1c6492e1cb1", "30": "73c13793fca09f56", "31": "fbbcfc059751cc6a", "32": "f6bcf56c4589316b", "33": "75f750c5b7d9f63d", "34": "f024ff7942935690", "35": "c4fa292c3dfb0d0e", "36": "a7d375041779bad4", "37": "cb8f26249485324a", "38": "9a25b1230b5fe649", "39": "fdd95375b4a5ddb3", "40": "c6e2efd58425d13d", "41": "d96493a5f110bd4c", "42": "ffd960136fde00ad", "43": "5b04375ec4594cb1", "44": "852c1bb2446edd9c", "45": "92ab3e5134ed8685", "46": "65718282b3c32109", "47": "e594ecaa8e7d1538", "48": "1e2c13775a52fdea", "49": "1f976711cda158dc", "50": "bbb2b57d72922b16", "51": "eb6a182204867275", "52": "2ec3c8c088568ba9", "53": "68c45056378341a7", "54": "c58d41e8e580fdc6", "55": "54d7329fed675057", "56": "8c9a3fc5edff7e44", "57": "f2a40b5f1b29f669", "58": "d0d4f9872c8bcc83", "59": "891f59cda3708718", "60": "a505b7de6257a4e8", "61": "2d008ec4a8df7849", "62": "1366ae24c7e5897d", "63": "c256b43f75d7809e", "64": "ce0e68dab611f022", "65": "74ae017de0ffd36b", "66": "e042d7fe7351bcb9", "67": "3e126d8deaf6e200", "68": "6b91f3679541de79", "69": "e511846eeba03076", "70": "880a74c6d255e5cc", "71": "cd6f168abba94fea", "72": "c84f196a7bd35861", "73": "2b887bf601ccfb9f", "74": "ae2a154311e1f53a", "75": "69fdd23278518884", "76": "68250611c66f576f", "77": "429cd62f9137881c", "78": "f4aae1bece83f9e0", "79": "c6cfdfe181232ecc", "80": "315325cde1352e98", "81": "37c559741825be74", "82": "2b037735e1f5b0f6", "83": "1284897282eb47a3", "84": "d8bb296741d3d05c", "86": "f8b38aeaaab11ec4", "87": "e5fa7717989eda80", "89": "9e3363b80eeceeea", "90": "dd1c246e19a2d032", "92": "fced244d93677d90", "97": "01f68dfc34a29d32", "98": "8c471c7baeaaca54"}
|
||||
@@ -1,16 +1,16 @@
|
||||
# Graph Report - juzi (2026-10-12)
|
||||
|
||||
## Corpus Check
|
||||
- 77 files · ~4,389,710 words
|
||||
- 77 files · ~4,389,750 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 1280 nodes · 2677 edges · 93 communities (76 shown, 17 thin omitted)
|
||||
- 1280 nodes · 2677 edges · 92 communities (75 shown, 17 thin omitted)
|
||||
- Extraction: 93% EXTRACTED · 7% INFERRED · 0% AMBIGUOUS · INFERRED: 181 edges (avg confidence: 0.53)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Graph Freshness
|
||||
- Built from commit: `abb1c4c1`
|
||||
- Built from commit: `fe9623a1`
|
||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||
- Run `graphify update .` after code changes (no API cost).
|
||||
|
||||
@@ -92,7 +92,6 @@
|
||||
- wechat-browser.mjs
|
||||
- 10.09 新版 H5 实施与验收
|
||||
- 微信登录联调:2026-10-12
|
||||
- .predictAgeAndGender
|
||||
- LabeledFaceDescriptors
|
||||
- 产品推荐规则:肤龄基准与边界调整
|
||||
- 傅艳NEW与项思炼的会话 2026年10月12日.md
|
||||
@@ -127,7 +126,7 @@
|
||||
## Import Cycles
|
||||
- None detected.
|
||||
|
||||
## Communities (93 total, 17 thin omitted)
|
||||
## Communities (92 total, 17 thin omitted)
|
||||
|
||||
### Community 0 - "face-api.js"
|
||||
Cohesion: 0.02
|
||||
@@ -214,8 +213,8 @@ Cohesion: 0.05
|
||||
Nodes (28): AgeGenderNet(), disposeUnusedWeightTensors(), extractorsFactory$3(), extractorsFactory$5(), extractorsFactory$7(), extractorsFactory$9(), extractParamsFromWeigthMap(), extractParamsFromWeigthMap$1() (+20 more)
|
||||
|
||||
### Community 22 - "extractAllFacesAndComputeResults"
|
||||
Cohesion: 0.12
|
||||
Nodes (8): ComputeAllFaceDescriptorsTask(), ComputeSingleFaceDescriptorTask(), extendWithFaceDescriptor(), extendWithFaceExpressions(), extractAllFacesAndComputeResults(), extractSingleFaceAndComputeResult(), PredictAllFaceExpressionsTask(), PredictSingleFaceExpressionsTask()
|
||||
Cohesion: 0.09
|
||||
Nodes (12): ComputeAllFaceDescriptorsTask(), ComputeSingleFaceDescriptorTask(), extendWithAge(), extendWithFaceDescriptor(), extendWithFaceExpressions(), extendWithGender(), extractAllFacesAndComputeResults(), extractSingleFaceAndComputeResult() (+4 more)
|
||||
|
||||
### Community 23 - "facepp-skinanalyze(旷视皮肤分析专业版调用技能)"
|
||||
Cohesion: 0.20
|
||||
@@ -310,7 +309,7 @@ Cohesion: 0.60
|
||||
Nodes (5): diffCtx(), loadJSON(), main(), okNum(), okStr()
|
||||
|
||||
### Community 58 - ".dispose"
|
||||
Cohesion: 0.22
|
||||
Cohesion: 0.21
|
||||
Nodes (9): FaceRecognitionNet(), getSizesForScale(), nonMaxSuppression(), normalize$1(), rescaleAndNormalize(), scale(), stage1(), stage2() (+1 more)
|
||||
|
||||
### Community 61 - ".extractWeights"
|
||||
@@ -385,10 +384,6 @@ Nodes (5): 10.09 新版 H5 实施与验收, 按确认项实现, 文档未定义
|
||||
Cohesion: 0.33
|
||||
Nodes (6): 后续真机确认与体验优化, 微信登录联调:2026-10-12, 本轮修正, 白名单与凭据, 真实微信验收与排查, 自动验证
|
||||
|
||||
### Community 85 - ".predictAgeAndGender"
|
||||
Cohesion: 0.28
|
||||
Nodes (4): extendWithAge(), extendWithGender(), PredictAllAgeAndGenderTask(), PredictSingleAgeAndGenderTask()
|
||||
|
||||
### Community 87 - "产品推荐规则:肤龄基准与边界调整"
|
||||
Cohesion: 0.33
|
||||
Nodes (6): 产品推荐规则:肤龄基准与边界调整, 决策顺序, 后台与前端一致性, 实施与验证范围, 已明确的要求, 已确认的三个条件
|
||||
|
||||
File diff suppressed because one or more lines are too long
+21
-21
@@ -4130,7 +4130,7 @@
|
||||
"label": "actualFont()",
|
||||
"file_type": "code",
|
||||
"source_file": "h5/test/customer-feedback-second.mjs",
|
||||
"source_location": "L65",
|
||||
"source_location": "L69",
|
||||
"_callable": true,
|
||||
"_origin": "ast",
|
||||
"id": "h5_test_customer_feedback_second_actualfont",
|
||||
@@ -9981,8 +9981,8 @@
|
||||
"_callable": true,
|
||||
"_origin": "ast",
|
||||
"id": "h5_vendor_faceapi_face_api_agegendernet_predictageandgender",
|
||||
"community": 85,
|
||||
"community_name": ".predictAgeAndGender",
|
||||
"community": 58,
|
||||
"community_name": ".dispose",
|
||||
"norm_label": ".predictageandgender()"
|
||||
},
|
||||
{
|
||||
@@ -10569,8 +10569,8 @@
|
||||
"_callable": true,
|
||||
"_origin": "ast",
|
||||
"id": "h5_vendor_faceapi_face_api_extendwithage",
|
||||
"community": 85,
|
||||
"community_name": ".predictAgeAndGender",
|
||||
"community": 22,
|
||||
"community_name": "extractAllFacesAndComputeResults",
|
||||
"norm_label": "extendwithage()"
|
||||
},
|
||||
{
|
||||
@@ -10593,8 +10593,8 @@
|
||||
"_callable": true,
|
||||
"_origin": "ast",
|
||||
"id": "h5_vendor_faceapi_face_api_extendwithgender",
|
||||
"community": 85,
|
||||
"community_name": ".predictAgeAndGender",
|
||||
"community": 22,
|
||||
"community_name": "extractAllFacesAndComputeResults",
|
||||
"norm_label": "extendwithgender()"
|
||||
},
|
||||
{
|
||||
@@ -11853,8 +11853,8 @@
|
||||
"_callable": true,
|
||||
"_origin": "ast",
|
||||
"id": "h5_vendor_faceapi_face_api_predictallageandgendertask",
|
||||
"community": 85,
|
||||
"community_name": ".predictAgeAndGender",
|
||||
"community": 22,
|
||||
"community_name": "extractAllFacesAndComputeResults",
|
||||
"norm_label": "predictallageandgendertask()"
|
||||
},
|
||||
{
|
||||
@@ -11865,8 +11865,8 @@
|
||||
"_callable": true,
|
||||
"_origin": "ast",
|
||||
"id": "h5_vendor_faceapi_face_api_predictallageandgendertask_run",
|
||||
"community": 85,
|
||||
"community_name": ".predictAgeAndGender",
|
||||
"community": 22,
|
||||
"community_name": "extractAllFacesAndComputeResults",
|
||||
"norm_label": ".run()"
|
||||
},
|
||||
{
|
||||
@@ -11877,8 +11877,8 @@
|
||||
"_callable": true,
|
||||
"_origin": "ast",
|
||||
"id": "h5_vendor_faceapi_face_api_predictallageandgendertask_withfaceexpressions",
|
||||
"community": 85,
|
||||
"community_name": ".predictAgeAndGender",
|
||||
"community": 22,
|
||||
"community_name": "extractAllFacesAndComputeResults",
|
||||
"norm_label": ".withfaceexpressions()"
|
||||
},
|
||||
{
|
||||
@@ -11889,8 +11889,8 @@
|
||||
"_callable": true,
|
||||
"_origin": "ast",
|
||||
"id": "h5_vendor_faceapi_face_api_predictsingleageandgendertask",
|
||||
"community": 85,
|
||||
"community_name": ".predictAgeAndGender",
|
||||
"community": 22,
|
||||
"community_name": "extractAllFacesAndComputeResults",
|
||||
"norm_label": "predictsingleageandgendertask()"
|
||||
},
|
||||
{
|
||||
@@ -11901,8 +11901,8 @@
|
||||
"_callable": true,
|
||||
"_origin": "ast",
|
||||
"id": "h5_vendor_faceapi_face_api_predictsingleageandgendertask_run",
|
||||
"community": 85,
|
||||
"community_name": ".predictAgeAndGender",
|
||||
"community": 22,
|
||||
"community_name": "extractAllFacesAndComputeResults",
|
||||
"norm_label": ".run()"
|
||||
},
|
||||
{
|
||||
@@ -11913,8 +11913,8 @@
|
||||
"_callable": true,
|
||||
"_origin": "ast",
|
||||
"id": "h5_vendor_faceapi_face_api_predictsingleageandgendertask_withfaceexpressions",
|
||||
"community": 85,
|
||||
"community_name": ".predictAgeAndGender",
|
||||
"community": 22,
|
||||
"community_name": "extractAllFacesAndComputeResults",
|
||||
"norm_label": ".withfaceexpressions()"
|
||||
},
|
||||
{
|
||||
@@ -23650,7 +23650,7 @@
|
||||
"relation": "contains",
|
||||
"confidence": "EXTRACTED",
|
||||
"source_file": "h5/test/customer-feedback-second.mjs",
|
||||
"source_location": "L65",
|
||||
"source_location": "L69",
|
||||
"weight": 1.0,
|
||||
"_origin": "ast",
|
||||
"source": "h5_test_customer_feedback_second_mjs_h5_test_customer_feedback_second",
|
||||
@@ -45977,5 +45977,5 @@
|
||||
}
|
||||
],
|
||||
"hyperedges": [],
|
||||
"built_at_commit": "abb1c4c1deafca7b072f8bf1b0d4fdfa3085d100"
|
||||
"built_at_commit": "fe9623a1d7c8e990eb00e36a3f532969bc3429a6"
|
||||
}
|
||||
@@ -1680,8 +1680,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"h5/test/customer-feedback-second.mjs": {
|
||||
"mtime": 1791786653.9070883,
|
||||
"ast_hash": "4dbb7749ae94be10910e3dbf8b090c72",
|
||||
"mtime": 1791787113.9230983,
|
||||
"ast_hash": "2ee0f030571c4a0f6b897a8f9bd4b15d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"docs/\u5ba2\u6237\u53cd\u9988\u7b2c\u4e8c\u6279\u4fee\u6539-2026-10-12.md": {
|
||||
|
||||
@@ -55,7 +55,11 @@ try {
|
||||
await page.waitForLoadState('networkidle');
|
||||
assert(!requests.some(p => /\.woff2$|faceapi/.test(p)), 'home typography must not add full fonts or face engine');
|
||||
await page.click('[data-action="open-privacy"]');
|
||||
await page.waitForSelector('#p-privacy.show');
|
||||
await page.waitForSelector('link[href="css/fonts.css"]', { state: 'attached' });
|
||||
// A link being attached does not mean its font faces are registered yet,
|
||||
// especially through the public reverse proxy rather than localhost.
|
||||
await page.waitForFunction(() => [...document.fonts].some(font => /MiSans Demibold/.test(font.family)));
|
||||
await page.evaluate(async () => { await document.fonts.load('700 23px "MiSans Demibold"', "欢迎体验肌肤状态评估服务"); });
|
||||
await page.waitForLoadState('networkidle');
|
||||
assert(requests.some(p => /MiSans-Demibold\.woff2$/.test(p)), 'consent must load PSD Demibold before profile');
|
||||
@@ -108,6 +112,7 @@ try {
|
||||
}
|
||||
await page.goto(base + '?mock=1&screen=report');
|
||||
await page.waitForFunction(() => document.querySelector('#stat-score b').textContent !== '--');
|
||||
await page.waitForFunction(() => [...document.fonts].some(font => /MiSans Demibold/.test(font.family)));
|
||||
await page.evaluate(async () => { await document.fonts.load('700 40px "MiSans Demibold"', '0123456789'); await document.fonts.load('600 23px MiSans', '护理建议您的肌肤状态表现紧塑力'); });
|
||||
await page.waitForLoadState('networkidle');
|
||||
for (const selector of ['#stat-score b', '#stat-age b', '.dim-score b']) await actualFont(selector, 'Demibold');
|
||||
|
||||
Reference in New Issue
Block a user