test(deploy): verify report touch release on public server

This commit is contained in:
xsl
2026-10-12 22:44:41 +08:00
parent 63c9e065a9
commit 2a49ebdab2
8 changed files with 669 additions and 559 deletions
@@ -51,3 +51,12 @@ node h5/test/analyze-timeout.js
本次未修改拍摄合格阈值、评分算法、推荐规则、报告文案、登录或保存逻辑。未追踪的 `new_feedback/` 保持原样,不纳入本次提交。
发布目标为 `ubuntu@1me.xajuzi.com:/home/ubuntu/juzi`,服务 `juzi-h5.service`。沿用 Git bundle 快进同步,不代用户推送 origin,不更改服务器环境配置或历史数据;上线后核对静态文件哈希、服务健康和匿名访问保护,并通过公网执行只读模拟账号浏览器测试。
## 线上验收(2026-10-12)
- 功能提交 `63c9e06`,从服务器基线 `69dc996` 快进发布,已重启服务。`active/running`,退出码 0、自动重启次数 0,本机及公网健康检查均通过。
- 公网首页、app/swipe-track/report-ui/profile-store/capture-quality 脚本、最新 CSS、三张 JPG、扫描底图与蒙版,共 12 份静态资源均为 200,SHA-256 与本地一致,保持 `Cache-Control: no-cache`;JPG 正确返回 `image/jpeg`。
- 公网匿名会话未登录且 `no-store`;报告列表、后台页面/统计返回 401,账号私有数据及服务端源码/测试入口返回 404。
- 公网 `report-touch-layout.mjs`、`scan-placeholder.mjs`、`profile-interaction.mjs` 全部通过;覆盖此次报告布局、三组真实触摸跟手/吸附/取消/边界/上下滚动/图片放大,以及白色人头扫描完整周期、失败/取消/迟到响应和基础信息记忆/隔离。没有页面 JS 异常,不创建线上账号/报告,不调用付费检测。
- 新报告专项脚本首次使用默认 `load` 导航与 30 秒预算,在公网冷加载字体/测试素材时超时。测试改为与现有公网用例一致的 60 秒预算及 `domcontentloaded` 导航,仍等待真实报告渲染与字体加载后执行原有断言,复验通过;不改运行时代码和界面行为。
- 已检查线上报告、滑动中状态和白色人头扫描截图。震动是否实际发生仍需支持该能力的手机真机确认。
+10 -10
View File
@@ -5,7 +5,7 @@
"3": "skin-score.js",
"4": "customer-feedback-second.js",
"5": "n",
"6": "ComputeAllFaceDescriptorsTask",
"6": "f",
"7": "test/profile-store.js",
"8": "admin.js",
"9": "__awaiter",
@@ -20,7 +20,7 @@
"18": "1'me肌肤状态检测 H5",
"19": "customer-feedback-fourth.js",
"20": "build_fixtures.py",
"21": "disposeUnusedWeightTensors",
"21": "AgeGenderNet",
"22": ".loadFromDisk",
"23": "facepp-skinanalyze(旷视皮肤分析专业版调用技能)",
"24": "巨子测肤 · 1'me 语音播报内容设计文档 V1.0",
@@ -40,9 +40,9 @@
"38": "FaceLandmark68Net",
"39": "UI交互界面调整",
"40": "第四轮反馈修改与验收",
"41": ".forwardInput",
"41": "SsdMobilenetv1",
"42": "layer_at",
"43": "AgeGenderNet",
"43": "height",
"44": "start-local.sh",
"45": "PredictAllAgeAndGenderWithFaceAlignmentTask",
"46": "PredictAllFaceExpressionsWithFaceAlignmentTask",
@@ -54,18 +54,18 @@
"52": "region-data.js",
"53": "护理建议(全量文本,按需求摘抄)",
"54": "UI 对齐 10.09 设计稿:调研与实施计划",
"55": "i",
"55": "FaceLandmarks68",
"56": "report-ui.js",
"57": "regression.js",
"58": ".forwardInput",
"59": "call_skinanalyze.sh",
"60": "report-fixture.js",
"61": "extractAllFacesAndComputeResults",
"61": "报告布局与跟手交互调整",
"62": "提交前 Review(2026-10-11)",
"63": "e2e-browser.mjs",
"64": "start",
"65": "微信登录接入与公网部署说明",
"66": "FaceLandmarks",
"66": "normalize",
"67": "ui-20261009.mjs",
"68": "analyze-timeout.js",
"69": "misans/README.md",
@@ -100,8 +100,8 @@
"98": "PredictSingleFaceExpressionsWithFaceAlignmentTask",
"99": "DetectSingleFaceLandmarksTask",
"100": "ComputeSingleFaceDescriptorTask",
"101": "drawFaceExpressions",
"102": "extractFaceTensors",
"101": "PredictSingleFaceExpressionsTask",
"102": "Box",
"103": "第四轮反馈/傅艳NEW与项思炼的会话 2026年10月12日.md",
"104": "export_fourth_feedback_assets.py",
"105": "capture-quality-browser.mjs",
@@ -110,7 +110,7 @@
"108": "profile-interaction.mjs",
"109": "submitPhotos",
"110": "doCapture",
"111": "k",
"111": "i",
"112": "showScreen",
"113": "swipe-track.js",
"114": "optimize_delivery_images.py",
+1 -1
View File
@@ -1 +1 @@
{"0": "dcb526d7f5862ca1", "1": "cb6ea50bd4e4a5ca", "2": "3427a6e8a9c7cb3e", "3": "bcbfbc0b66f44357", "4": "56bf12952b0de42b", "5": "9c2200b016047a0f", "6": "3dd68cce72af5314", "7": "417f570ec3320aca", "8": "a689fcb62e7754af", "9": "78f24ff96d971d81", "10": "2b037735e1f5b0f6", "11": "4a490abd5e503318", "12": "aeca274694e158d2", "13": "7e3b558a587a4ebe", "14": "bf75bfc99d4f9e34", "15": "24564b251581a338", "16": "95add6a975c0cb72", "17": "e042d7fe7351bcb9", "18": "f93d5d85e671fcee", "19": "39abb1eef19df707", "20": "aecf2fce44ba49c5", "21": "b53e90dd83caf582", "22": "be2f6d3dcfc9aabd", "23": "90fac00055070ce2", "24": "f85b5b1634224c86", "25": "46e8db3e6e3f37ea", "26": "def3f7743d0ffa30", "27": "eab427ce9a5219e9", "28": "9fae77ec21097d72", "29": "c608f1c6492e1cb1", "30": "73c13793fca09f56", "31": "fbbcfc059751cc6a", "32": "f6bcf56c4589316b", "33": "75f750c5b7d9f63d", "34": "f024ff7942935690", "35": "241be5abeab1da6f", "36": "a7d375041779bad4", "37": "cb8f26249485324a", "38": "9a25b1230b5fe649", "39": "fdd95375b4a5ddb3", "40": "5e546676ab96de03", "41": "880a74c6d255e5cc", "42": "916170b9f5d7346b", "43": "68c816ca169c7a23", "44": "852c1bb2446edd9c", "45": "92ab3e5134ed8685", "46": "65718282b3c32109", "47": "e594ecaa8e7d1538", "48": "cf2f2424bc00436f", "49": "1f976711cda158dc", "50": "bbb2b57d72922b16", "51": "eb6a182204867275", "52": "2ec3c8c088568ba9", "53": "68c45056378341a7", "54": "c58d41e8e580fdc6", "55": "0148452bf4e4efe0", "56": "9ee2ad45dc27851d", "57": "f2a40b5f1b29f669", "58": "f1a11f57dc1f84a8", "59": "891f59cda3708718", "60": "a505b7de6257a4e8", "61": "0e4124a270816f7a", "62": "1366ae24c7e5897d", "63": "c256b43f75d7809e", "64": "a01bccd7f7c24c78", "65": "bdee3c4a37df52f8", "66": "04df478e971b7941", "67": "3e126d8deaf6e200", "68": "6b91f3679541de79", "69": "e511846eeba03076", "70": "be0c8310abda2467", "71": "b6cde9f25b294afc", "72": "c84f196a7bd35861", "73": "2b887bf601ccfb9f", "74": "ae2a154311e1f53a", "75": "69fdd23278518884", "76": "50a4503d0a778ed2", "77": "2ee521497bb8506a", "78": "42c9bc548e269a96", "79": "0746e33eaf6cd1f9", "80": "315325cde1352e98", "81": "37c559741825be74", "82": "200f25fbad7af8fb", "83": "1284897282eb47a3", "84": "d8bb296741d3d05c", "85": "4bc370be8afd7db1", "86": "386c6fcc7be918e0", "87": "e5fa7717989eda80", "88": "8b5ab5232cef3457", "89": "9e3363b80eeceeea", "90": "dd1c246e19a2d032", "91": "83b0fd3b14363e4d", "92": "fced244d93677d90", "93": "5a9014c4a7f87699", "94": "713d04996c4627df", "95": "59c31f858c7b6970", "96": "4195478d5c528371", "97": "01f68dfc34a29d32", "98": "8c471c7baeaaca54", "99": "23f1d406f6c779ae", "100": "7ac475ea9bc280f8", "101": "a0bc88eb14b70170", "102": "74e90d27271154a1", "103": "6ffbe07b521a061b", "104": "e114a7aebaaca2f1", "105": "0567be4dc8048b9c", "106": "8bc72c179793e1c2", "107": "d9c195d9ccdb137e", "108": "e0fc0a42e33bda91", "109": "2c27e5c32bc10822", "110": "b7f77cb02f68832b", "111": "6cc4ed7ee9712ccc", "112": "71cbe5098f4c1b6f", "113": "0d99f86b9e41c4bb", "114": "b9d7c266afa84437", "124": "29790cf710874dd0", "125": "e4f29216745ec758"}
{"0": "350e88c1423ab124", "1": "cb6ea50bd4e4a5ca", "2": "3427a6e8a9c7cb3e", "3": "1f737ca8edb978f2", "4": "56bf12952b0de42b", "5": "171f3b1f99ef2776", "6": "f074a081a584c171", "7": "417f570ec3320aca", "8": "a689fcb62e7754af", "9": "ff49d722f6484b4e", "10": "2b037735e1f5b0f6", "11": "4a490abd5e503318", "12": "aeca274694e158d2", "13": "7e3b558a587a4ebe", "14": "bf75bfc99d4f9e34", "15": "3866142b66f8bfdd", "16": "95add6a975c0cb72", "17": "e042d7fe7351bcb9", "18": "f93d5d85e671fcee", "19": "39abb1eef19df707", "20": "aecf2fce44ba49c5", "21": "0c9d5cdd4092b114", "22": "f125f2a02294efd7", "23": "90fac00055070ce2", "24": "f85b5b1634224c86", "25": "46e8db3e6e3f37ea", "26": "ab23d3f368091829", "27": "eab427ce9a5219e9", "28": "d5bc4d13da321cc8", "29": "c608f1c6492e1cb1", "30": "73c13793fca09f56", "31": "fbbcfc059751cc6a", "32": "f6bcf56c4589316b", "33": "75f750c5b7d9f63d", "34": "f024ff7942935690", "35": "241be5abeab1da6f", "36": "a7d375041779bad4", "37": "cb8f26249485324a", "38": "9a25b1230b5fe649", "39": "fdd95375b4a5ddb3", "40": "5e546676ab96de03", "41": "2f0c86fdda7fa4a4", "42": "916170b9f5d7346b", "43": "3b9b3f4698579e2e", "44": "852c1bb2446edd9c", "45": "92ab3e5134ed8685", "46": "65718282b3c32109", "47": "e594ecaa8e7d1538", "48": "cf2f2424bc00436f", "49": "1f976711cda158dc", "50": "bbb2b57d72922b16", "51": "eb6a182204867275", "52": "2ec3c8c088568ba9", "53": "68c45056378341a7", "54": "c58d41e8e580fdc6", "55": "68c52c80f38f8b2c", "56": "9ee2ad45dc27851d", "57": "f2a40b5f1b29f669", "58": "0c0cbd63a7b39bc6", "59": "891f59cda3708718", "60": "a505b7de6257a4e8", "61": "4b39db1973f82bfe", "62": "1366ae24c7e5897d", "63": "c256b43f75d7809e", "64": "a01bccd7f7c24c78", "65": "bdee3c4a37df52f8", "66": "2a59363e5caa0628", "67": "3e126d8deaf6e200", "68": "6b91f3679541de79", "69": "e511846eeba03076", "70": "be0c8310abda2467", "71": "ecb8093dbcce277d", "72": "c84f196a7bd35861", "73": "2b887bf601ccfb9f", "74": "ae2a154311e1f53a", "75": "69fdd23278518884", "76": "50a4503d0a778ed2", "77": "429cd62f9137881c", "78": "71f300fdfae6e5a6", "79": "86f177bf0a7dd07c", "80": "315325cde1352e98", "81": "37c559741825be74", "82": "200f25fbad7af8fb", "83": "1284897282eb47a3", "84": "2fb17901aa87e0e7", "85": "4bc370be8afd7db1", "86": "386c6fcc7be918e0", "87": "e5fa7717989eda80", "88": "8b5ab5232cef3457", "89": "9e3363b80eeceeea", "90": "dd1c246e19a2d032", "91": "83b0fd3b14363e4d", "92": "fced244d93677d90", "93": "8bd61518dd267641", "94": "713d04996c4627df", "95": "59c31f858c7b6970", "96": "4195478d5c528371", "97": "01f68dfc34a29d32", "98": "8c471c7baeaaca54", "99": "23f1d406f6c779ae", "100": "7ac475ea9bc280f8", "101": "cb5ac3401283c378", "102": "04e5ac36860f09d1", "103": "6ffbe07b521a061b", "104": "e114a7aebaaca2f1", "105": "0567be4dc8048b9c", "106": "8bc72c179793e1c2", "107": "d9c195d9ccdb137e", "108": "e0fc0a42e33bda91", "109": "2c27e5c32bc10822", "110": "b7f77cb02f68832b", "111": "f707b3512f2738ed", "112": "71cbe5098f4c1b6f", "113": "0d99f86b9e41c4bb", "114": "b9d7c266afa84437", "124": "c96276581a8c98d4", "125": "e4f29216745ec758"}
+68 -72
View File
@@ -1,16 +1,16 @@
# Graph Report - juzi (2026-10-12)
## Corpus Check
- 103 files · ~4,904,011 words
- 104 files · ~4,904,196 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 1439 nodes · 2888 edges · 117 communities (93 shown, 24 thin omitted)
- 1444 nodes · 2892 edges · 117 communities (92 shown, 25 thin omitted)
- Extraction: 93% EXTRACTED · 7% INFERRED · 0% AMBIGUOUS · INFERRED: 209 edges (avg confidence: 0.57)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `bcf198ca`
- Built from commit: `63c9e065`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).
@@ -21,7 +21,7 @@
- skin-score.js
- customer-feedback-second.js
- n
- ComputeAllFaceDescriptorsTask
- f
- test/profile-store.js
- admin.js
- __awaiter
@@ -36,7 +36,7 @@
- 1'me肌肤状态检测 H5
- customer-feedback-fourth.js
- build_fixtures.py
- disposeUnusedWeightTensors
- AgeGenderNet
- .loadFromDisk
- facepp-skinanalyze(旷视皮肤分析专业版调用技能)
- 巨子测肤 · 1'me 语音播报内容设计文档 V1.0
@@ -54,9 +54,9 @@
- FaceLandmark68Net
- UI交互界面调整
- 第四轮反馈修改与验收
- .forwardInput
- SsdMobilenetv1
- layer_at
- AgeGenderNet
- height
- start-local.sh
- PredictAllAgeAndGenderWithFaceAlignmentTask
- PredictAllFaceExpressionsWithFaceAlignmentTask
@@ -66,17 +66,17 @@
- call_skinanalyze_3view.sh
- 护理建议(全量文本,按需求摘抄)
- UI 对齐 10.09 设计稿:调研与实施计划
- i
- FaceLandmarks68
- report-ui.js
- regression.js
- .forwardInput
- call_skinanalyze.sh
- extractAllFacesAndComputeResults
- 报告布局与跟手交互调整
- 提交前 Review(2026-10-11)
- e2e-browser.mjs
- start
- 微信登录接入与公网部署说明
- FaceLandmarks
- normalize
- ui-20261009.mjs
- analyze-timeout.js
- misans/README.md
@@ -107,15 +107,15 @@
- PredictSingleFaceExpressionsWithFaceAlignmentTask
- DetectSingleFaceLandmarksTask
- ComputeSingleFaceDescriptorTask
- drawFaceExpressions
- extractFaceTensors
- PredictSingleFaceExpressionsTask
- Box
- 第四轮反馈/傅艳NEW与项思炼的会话 2026年10月12日.md
- 第三轮反馈20261012/傅艳NEW与项思炼的会话 2026年10月12日.md
- 基础信息记忆与肤质拖动
- profile-interaction.mjs
- submitPhotos
- doCapture
- k
- i
- showScreen
- TinyYolov2
- 报告等待页实拍背景-2026-10-12.md
@@ -147,11 +147,11 @@
## Import Cycles
- None detected.
## Communities (117 total, 24 thin omitted)
## Communities (117 total, 25 thin omitted)
### Community 0 - "face-api.js"
Cohesion: 0.02
Nodes (46): bgrToRgbTensor(), cn(), computeReshapedDimensions(), createBrowserEnv(), createFaceDetectionNet(), createFileSystem(), createNodejsEnv(), createSsdMobilenetv1() (+38 more)
Nodes (33): bgrToRgbTensor(), cn(), createBrowserEnv(), createFileSystem(), createNodejsEnv(), Dimensions(), dr(), en() (+25 more)
### Community 1 - "线上闭环测试(不含真实微信授权)"
Cohesion: 0.25
@@ -162,7 +162,7 @@ Cohesion: 0.11
Nodes (22): cancelSkinDrag(), esc(), goSkin(), openHistory(), renderHistoryList(), renderReport(), renderViz(), restartScanCycle() (+14 more)
### Community 3 - "skin-score.js"
Cohesion: 0.11
Cohesion: 0.12
Nodes (45): acneGrade(), buildViewModel(), calcAcne(), calcContour(), calcSens(), calcSmooth(), calcTone(), calcWrinkles() (+37 more)
### Community 4 - "customer-feedback-second.js"
@@ -171,7 +171,11 @@ Nodes (10): assert, context, face, fs, geometry, original, path, source (+2 more
### Community 5 - "n"
Cohesion: 0.12
Nodes (48): a(), ae(), be(), bf(), ce(), cf(), d(), de() (+40 more)
Nodes (37): ae(), be(), bf(), bi(), ce(), de(), e(), Ef() (+29 more)
### Community 6 - "f"
Cohesion: 0.21
Nodes (23): a(), cf(), d(), drawContour(), dt(), ea(), f(), g() (+15 more)
### Community 7 - "test/profile-store.js"
Cohesion: 0.12
@@ -182,8 +186,8 @@ Cohesion: 0.20
Nodes (29): ageText(), api(), bind(), captureQualityHtml(), closeDetail(), collectFilters(), dimsHtml(), doRetry() (+21 more)
### Community 9 - "__awaiter"
Cohesion: 0.17
Nodes (10): __awaiter(), extendWithFaceExpressions(), fetchImage(), fetchJson(), fetchNetWeights(), fetchOrThrow(), __generator(), loadWeightMap() (+2 more)
Cohesion: 0.13
Nodes (14): __awaiter(), bufferToImage(), extendWithFaceExpressions(), extractAllFacesAndComputeResults(), extractSingleFaceAndComputeResult(), FaceRecognitionNet(), fetchImage(), fetchJson() (+6 more)
### Community 10 - "wechat-browser.mjs"
Cohesion: 0.22
@@ -202,8 +206,8 @@ Cohesion: 0.12
Nodes (15): files, analyze-fail, analyzing, countdown-321, hint-far, hint-front, hint-hold, hint-near (+7 more)
### Community 15 - "extractFaces"
Cohesion: 0.21
Nodes (17): awaitMediaLoaded(), bufferToImage(), createCanvas(), createCanvasFromMedia(), extractFaces(), extractImagePatches(), getContext2dOrThrow(), getEnv() (+9 more)
Cohesion: 0.16
Nodes (20): awaitMediaLoaded(), createCanvas(), createCanvasFromMedia(), extractFaces(), extractFaceTensors(), extractImagePatches(), getContext2dOrThrow(), getEnv() (+12 more)
### Community 16 - "巨子测肤 · 1'me 在线肌肤测试 — UI 设计规范"
Cohesion: 0.15
@@ -225,13 +229,13 @@ Nodes (37): evaluate(), finite(), assertPoints(), check(), clamp(), dist(), esti
Cohesion: 0.40
Nodes (9): build_case1(), build_case2(), build_truth(), col(), dump(), main(), parse_value(), set_path() (+1 more)
### Community 21 - "disposeUnusedWeightTensors"
Cohesion: 0.10
Nodes (23): disposeUnusedWeightTensors(), extractorsFactory$3(), extractorsFactory$5(), extractorsFactory$7(), extractorsFactory$9(), extractParamsFromWeigthMap(), extractParamsFromWeigthMap$1(), extractParamsFromWeigthMap$2() (+15 more)
### Community 21 - "AgeGenderNet"
Cohesion: 0.05
Nodes (28): AgeGenderNet(), disposeUnusedWeightTensors(), extractorsFactory$3(), extractorsFactory$5(), extractorsFactory$7(), extractorsFactory$9(), extractParams$1(), extractParamsFromWeigthMap() (+20 more)
### Community 22 - ".loadFromDisk"
Cohesion: 0.20
Nodes (5): ComposableTask(), getModelUris(), Gf(), Kf(), TinyFaceDetector()
Cohesion: 0.24
Nodes (5): ComposableTask(), getModelUris(), Gf(), loadWeightMap(), TinyFaceDetector()
### Community 23 - "facepp-skinanalyze(旷视皮肤分析专业版调用技能)"
Cohesion: 0.20
@@ -247,7 +251,7 @@ Nodes (16): _arrayLikeToArray(), _arrayWithHoles(), _arrayWithoutHoles(), _class
### Community 26 - "NeuralNetwork"
Cohesion: 0.07
Nodes (26): createFaceRecognitionNet(), createMtcnn(), createTinyFaceDetector(), createTinyYolov2(), extractConvParamsFactory(), extractFCParamsFactory(), extractorsFactory(), extractorsFactory$1() (+18 more)
Nodes (25): createFaceDetectionNet(), createFaceRecognitionNet(), createMtcnn(), createSsdMobilenetv1(), createTinyFaceDetector(), createTinyYolov2(), extractConvParamsFactory(), extractFCParamsFactory() (+17 more)
### Community 27 - "gen_voice.py"
Cohesion: 0.30
@@ -255,7 +259,7 @@ Nodes (11): ndarray, Path, gen_countdown(), main(), normalize_clip(), 倒计时
### Community 28 - "C"
Cohesion: 0.09
Nodes (29): ao(), Bo(), C(), cd(), co(), Do(), eo(), fo() (+21 more)
Nodes (31): ao(), Bo(), C(), cd(), co(), Do(), eo(), fo() (+23 more)
### Community 29 - "face-api.js 本地化依赖(h5/vendor/faceapi/)"
Cohesion: 0.29
@@ -285,17 +289,17 @@ Nodes (4): 1meAI测肤旷视UI问题反馈, UI交互界面调整, 交互, **设
Cohesion: 0.22
Nodes (8): PSD 来源, 前端参数及限制, 后台校准留痕, 已确认并实现, 生产部署及只读验收, 皱纹(紧塑力)原文, 第四轮反馈修改与验收, 验证
### Community 41 - ".forwardInput"
Cohesion: 0.22
Nodes (9): boxPredictionLayer(), decodeBoxesLayer(), depthwiseConvLayer(), getCenterCoordinatesAndSizesLayer(), getStridesForLayerIdx(), mobileNetV1(), outputLayer(), pointwiseConvLayer() (+1 more)
### Community 41 - "SsdMobilenetv1"
Cohesion: 0.18
Nodes (10): boxPredictionLayer(), decodeBoxesLayer(), depthwiseConvLayer(), getCenterCoordinatesAndSizesLayer(), getStridesForLayerIdx(), mobileNetV1(), outputLayer(), pointwiseConvLayer() (+2 more)
### Community 42 - "layer_at"
Cohesion: 0.18
Nodes (11): list, bounds(), layer_at(), main(), save_image(), composite(), main(), sha256() (+3 more)
### Community 43 - "AgeGenderNet"
Cohesion: 0.10
Nodes (14): AgeGenderNet(), convLayer(), convWithBatchNorm(), depthwiseSeparableConv$1(), FaceLandmark68TinyNet(), FaceProcessor(), fullyConnectedLayer(), leaky() (+6 more)
### Community 43 - "height"
Cohesion: 0.27
Nodes (5): height(), FaceLandmark68NetBase(), sigmoid(), TinyYolov2Base(), validateConfig()
### Community 44 - "start-local.sh"
Cohesion: 0.50
@@ -317,10 +321,6 @@ Nodes (19): 5\.1 轮廓(紧塑力), 5\.2 皱纹(紧塑力), 5\.3 肤色
Cohesion: 0.11
Nodes (17): 1. 结论和依据, 2. 统一比较口径, 3. 逐页差异和调整内容, 4. 报告数据如何接到新 UI, 5. 登录与“我的报告”的真实能力缺口, 6. 原稿中需要整理的内容, 7. 实施顺序与交付物, 8. 验收定义 (+9 more)
### Community 55 - "i"
Cohesion: 0.07
Nodes (32): bi(), bn(), dn(), ee(), Ef(), er(), et(), fn() (+24 more)
### Community 56 - "report-ui.js"
Cohesion: 0.50
Nodes (7): build(), count(), fill(), focusOf(), numeric(), scalar(), wrinkleDetails()
@@ -331,11 +331,11 @@ Nodes (5): diffCtx(), loadJSON(), main(), okNum(), okStr()
### Community 58 - ".forwardInput"
Cohesion: 0.14
Nodes (12): height(), FaceLandmark68NetBase(), getSizesForScale(), nonMaxSuppression(), normalize$1(), rescaleAndNormalize(), scale(), SsdMobilenetv1() (+4 more)
Nodes (15): computeReshapedDimensions(), extractBoundingBoxes(), getSizesForScale(), iou(), isEven(), nonMaxSuppression(), nonMaxSuppression$1(), normalize$1() (+7 more)
### Community 61 - "extractAllFacesAndComputeResults"
Cohesion: 0.31
Nodes (4): extendWithFaceDescriptor(), extractAllFacesAndComputeResults(), extractSingleFaceAndComputeResult(), FaceRecognitionNet()
### Community 61 - "报告布局与跟手交互调整"
Cohesion: 0.40
Nodes (4): 报告布局与跟手交互调整, 本次范围, 资源体积, 验证
### Community 62 - "提交前 Review(2026-10-11)"
Cohesion: 0.40
@@ -353,9 +353,9 @@ Nodes (7): decode(), drain(), load(), preload(), start(), stopCur(), unlock()
Cohesion: 0.29
Nodes (7): 公网服务器配置, 公网真机验收清单, 反向代理与后台保护, 已完成的链路, 微信登录接入与公网部署说明, 数据、迁移与备份, 本机开发环境限制(不代表线上状态)
### Community 66 - "FaceLandmarks"
Cohesion: 0.06
Nodes (24): conv(), conv$1(), convDown(), convLayer$1(), convNoRelu(), denseBlock3(), denseBlock4(), depthwiseSeparableConv() (+16 more)
### Community 66 - "normalize"
Cohesion: 0.08
Nodes (28): conv(), conv$1(), convDown(), convLayer(), convLayer$1(), convNoRelu(), convWithBatchNorm(), denseBlock3() (+20 more)
### Community 68 - "analyze-timeout.js"
Cohesion: 0.20
@@ -366,23 +366,23 @@ Cohesion: 0.29
Nodes (3): errors, samples, unexpectedWrites
### Community 71 - ".predictAgeAndGender"
Cohesion: 0.18
Nodes (5): age(), extendWithAge(), extendWithGender(), FaceExpressionNet(), PredictSingleAgeAndGenderTask()
Cohesion: 0.29
Nodes (5): age(), extendWithAge(), extendWithGender(), PredictAllAgeAndGenderTask(), PredictSingleAgeAndGenderTask()
### Community 76 - "onPhotoCaptured"
Cohesion: 0.18
Nodes (15): busyWithFlow(), captureHaptic(), checkStill(), dropHint(), faceLuma(), faceOffsetX(), handleCamVisible(), hideCamStatus() (+7 more)
### Community 77 - ".runAndExtendWithFaceDetections"
Cohesion: 0.18
Nodes (8): DetectAllFacesTask(), DrawBox(), drawDetections(), DrawFaceLandmarks(), extendWithFaceDetection(), isWithFaceDetection(), isWithFaceLandmarks(), resizeResults()
Cohesion: 0.15
Nodes (11): DetectAllFacesTask(), DrawBox(), drawDetections(), drawFaceExpressions(), DrawFaceLandmarks(), extendWithFaceDetection(), FaceExpressions(), isWithFaceDetection() (+3 more)
### Community 78 - ".toString"
Cohesion: 0.50
Nodes (3): FaceMatch(), la(), pr()
Cohesion: 0.12
Nodes (11): FaceLandmarks5(), FaceMatch(), getCenterPoint(), la(), Point(), pr(), pt(), vt() (+3 more)
### Community 79 - "登录反馈与加载优化(2026-10-12)"
Cohesion: 0.22
Cohesion: 0.33
Nodes (5): 体验变化, 公网部署后复测, 慢的原因与处理, 登录反馈与加载优化(2026-10-12), 验证
### Community 80 - "线上微信登录部署记录"
@@ -402,7 +402,7 @@ Cohesion: 0.29
Nodes (5): 10.09 新版 H5 实施与验收, 按确认项实现, 文档未定义部分的实施口径, 素材再生成, 验证命令
### Community 84 - "微信登录联调:2026-10-12"
Cohesion: 0.33
Cohesion: 0.22
Nodes (6): 后续真机确认与体验优化, 微信登录联调:2026-10-12, 本轮修正, 白名单与凭据, 真实微信验收与排查, 自动验证
### Community 85 - "test/accounts.js"
@@ -426,8 +426,8 @@ Cohesion: 0.33
Nodes (5): 公网部署与复测, 客户反馈修改(2026-10-12), 皱纹数据说明, 逐项处理, 验证
### Community 93 - ".runAndExtendWithFaceDetection"
Cohesion: 0.33
Nodes (5): allFacesMtcnn(), allFacesSsdMobilenetv1(), allFacesTinyYolov2(), detectAllFaces(), DetectSingleFaceTask()
Cohesion: 0.23
Nodes (6): allFacesMtcnn(), allFacesSsdMobilenetv1(), allFacesTinyYolov2(), DetectAllFaceLandmarksTask(), detectAllFaces(), DetectSingleFaceTask()
### Community 94 - "第三轮反馈:PSD 对齐、验收及上线记录"
Cohesion: 0.33
@@ -437,13 +437,9 @@ Nodes (5): 原稿与导出可追溯性, 已完成, 本地验证, 生产部署及
Cohesion: 0.50
Nodes (3): artifacts, errors, samples
### Community 101 - "drawFaceExpressions"
Cohesion: 0.50
Nodes (3): drawFaceExpressions(), FaceExpressions(), isWithFaceExpressions()
### Community 102 - "extractFaceTensors"
Cohesion: 0.18
Nodes (5): Box(), DetectAllFaceLandmarksTask(), extendWithFaceLandmarks(), extractFaceTensors(), isTensor3D()
### Community 102 - "Box"
Cohesion: 0.11
Nodes (8): Box(), ComputeAllFaceDescriptorsTask(), extendWithFaceDescriptor(), extendWithFaceLandmarks(), FaceLandmarks(), isDimensions(), minBbox(), ObjectDetection()
### Community 107 - "基础信息记忆与肤质拖动"
Cohesion: 0.33
@@ -461,27 +457,27 @@ Nodes (16): applyMirror(), bindBackdropClose(), closeLoginSuccess(), closeOverla
Cohesion: 0.17
Nodes (19): armNudge(), beginDetect(), captureFromVideo(), detectFrame(), detTick(), doCapture(), enableFallback(), hideNudge() (+11 more)
### Community 111 - "k"
Cohesion: 0.10
Nodes (24): b(), ba(), ca(), cl(), da(), fa(), gn(), k() (+16 more)
### Community 111 - "i"
Cohesion: 0.07
Nodes (36): b(), ba(), bn(), ca(), cl(), da(), dn(), ee() (+28 more)
### Community 112 - "showScreen"
Cohesion: 0.22
Nodes (11): loadAppFont(), loginAllowed(), loginBrowser(), loginSucceeded(), loginWechat(), openOverlay(), prepareScanArtwork(), renderAccountStatus() (+3 more)
## Knowledge Gaps
- **311 isolated node(s):** `source`, `document_size`, `pages`, `assets`, `layers` (+306 more)
- **314 isolated node(s):** `source`, `document_size`, `pages`, `assets`, `layers` (+309 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **24 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
- **25 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `v()` connect `n` to `report-ui.js`, `face-api.js`, `app.js`, `C`?**
_High betweenness centrality (0.047) - this node is a cross-community bridge._
- **Why does `height()` connect `.forwardInput` to `app.js`, `customer-feedback.js`, `scan-placeholder.mjs`, `extractFaceTensors`, `extractFaces`, `showScreen`?**
- **Why does `v()` connect `f` to `report-ui.js`, `face-api.js`, `app.js`, `C`?**
_High betweenness centrality (0.046) - this node is a cross-community bridge._
- **Why does `height()` connect `height` to `app.js`, `customer-feedback.js`, `scan-placeholder.mjs`, `extractFaces`, `showScreen`, `.forwardInput`?**
_High betweenness centrality (0.045) - this node is a cross-community bridge._
- **Why does `k()` connect `k` to `face-api.js`, `app.js`, `n`, `lib/accounts.js`, `i`?**
- **Why does `k()` connect `i` to `face-api.js`, `app.js`, `n`, `f`, `lib/accounts.js`, `C`?**
_High betweenness centrality (0.040) - this node is a cross-community bridge._
- **Are the 24 inferred relationships involving `n()` (e.g. with `newRecordId()` and `ae()`) actually correct?**
_`n()` has 24 INFERRED edges - model-reasoned connections that need verification._
@@ -490,4 +486,4 @@ _Questions this graph is uniquely positioned to answer:_
- **Are the 9 inferred relationships involving `i()` (e.g. with `da()` and `f()`) actually correct?**
_`i()` has 9 INFERRED edges - model-reasoned connections that need verification._
- **What connects `source`, `document_size`, `pages` to the rest of the system?**
_311 weakly-connected nodes found - possible documentation gaps or missing edges._
_314 weakly-connected nodes found - possible documentation gaps or missing edges._
File diff suppressed because one or more lines are too long
+566 -467
View File
File diff suppressed because it is too large Load Diff
+9 -4
View File
@@ -1910,8 +1910,8 @@
"semantic_hash": ""
},
"docs/\u62a5\u544a\u7b49\u5f85\u9875\u5b9e\u62cd\u80cc\u666f-2026-10-12.md": {
"mtime": 1791815038.0630124,
"ast_hash": "518dc04cd26577c59a14994f42fa65d6",
"mtime": 1791815348.6150107,
"ast_hash": "5e1c3161ecdeb5cf94988d1fdc814332",
"semantic_hash": ""
},
"design/ui-20261012/delivery-optimization-20261012.json": {
@@ -1925,8 +1925,8 @@
"semantic_hash": ""
},
"h5/test/report-touch-layout.mjs": {
"mtime": 1791815159.3550136,
"ast_hash": "b0967f039f8c1177dec801a03651c5dc",
"mtime": 1791816131.9590158,
"ast_hash": "8d8d8f76a50da655e7d577660c14579e",
"semantic_hash": ""
},
"h5/test/scan-placeholder.mjs": {
@@ -1953,5 +1953,10 @@
"mtime": 1791814981.5989842,
"ast_hash": "949de309b645a513c695da5782de351c",
"semantic_hash": ""
},
"docs/\u62a5\u544a\u5e03\u5c40\u4e0e\u8ddf\u624b\u4ea4\u4e92\u8c03\u6574-2026-10-12.md": {
"mtime": 1791815756.2269309,
"ast_hash": "97b6337ca9d46e521225c2d312e2efb7",
"semantic_hash": ""
}
}
+2 -1
View File
@@ -18,6 +18,7 @@ for (const asset of manifest.assets) {
const browser = await chromium.launch({ headless: true });
try {
const page = await browser.newPage({ viewport: { width: 375, height: 726 }, isMobile: true, hasTouch: true });
page.setDefaultTimeout(60000); // Public-site cold font/fixture downloads may exceed 30s.
const errors = [], writes = [];
page.on('pageerror', e => errors.push(e.message));
await page.route('**/*', route => {
@@ -26,7 +27,7 @@ try {
if (req.url().endsWith('/api/auth/session')) return route.fulfill({ json: { ok: true, user: { id: 'report-touch-fixture', kind: 'browser' } } });
return route.continue();
});
await page.goto(base + '?mock=1&screen=report');
await page.goto(base + '?mock=1&screen=report', { waitUntil: 'domcontentloaded' });
await page.waitForFunction(() => document.querySelector('#stat-score b').textContent !== '--' && [...document.querySelectorAll('.ditem-img')].every(i => !i.hidden && i.naturalWidth));
await page.evaluate(async () => { await Promise.all([document.fonts.load('500 40px MiSans'), document.fonts.load('400 12px MiSans')]); });
for (const width of [320, 375, 390, 414, 480]) {