diff --git a/design/ui-20261009/verification/01-login.png b/design/ui-20261009/verification/01-login.png index 3c1876d..e2ee23e 100644 Binary files a/design/ui-20261009/verification/01-login.png and b/design/ui-20261009/verification/01-login.png differ diff --git a/design/ui-20261009/verification/02-home.png b/design/ui-20261009/verification/02-home.png index de133a3..c141ca5 100644 Binary files a/design/ui-20261009/verification/02-home.png and b/design/ui-20261009/verification/02-home.png differ diff --git a/design/ui-20261009/verification/02-login-success.png b/design/ui-20261009/verification/02-login-success.png new file mode 100644 index 0000000..49b5cc4 Binary files /dev/null and b/design/ui-20261009/verification/02-login-success.png differ diff --git a/design/ui-20261009/verification/03-history-empty.png b/design/ui-20261009/verification/03-history-empty.png index 5d6d5a1..5188f34 100644 Binary files a/design/ui-20261009/verification/03-history-empty.png and b/design/ui-20261009/verification/03-history-empty.png differ diff --git a/design/ui-20261009/verification/04-privacy.png b/design/ui-20261009/verification/04-privacy.png index 1ff9938..087bee1 100644 Binary files a/design/ui-20261009/verification/04-privacy.png and b/design/ui-20261009/verification/04-privacy.png differ diff --git a/design/ui-20261009/verification/05-profile.png b/design/ui-20261009/verification/05-profile.png index 5d35874..d5e6b8a 100644 Binary files a/design/ui-20261009/verification/05-profile.png and b/design/ui-20261009/verification/05-profile.png differ diff --git a/design/ui-20261009/verification/06-report-top.png b/design/ui-20261009/verification/06-report-top.png index c0bcef5..4b2d9a2 100644 Binary files a/design/ui-20261009/verification/06-report-top.png and b/design/ui-20261009/verification/06-report-top.png differ diff --git a/design/ui-20261009/verification/07-report-full.png b/design/ui-20261009/verification/07-report-full.png index bb0f76e..6882628 100644 Binary files a/design/ui-20261009/verification/07-report-full.png and b/design/ui-20261009/verification/07-report-full.png differ diff --git a/docs/客户反馈修改-2026-10-12.md b/docs/客户反馈修改-2026-10-12.md new file mode 100644 index 0000000..ceb0d63 --- /dev/null +++ b/docs/客户反馈修改-2026-10-12.md @@ -0,0 +1,53 @@ +# 客户反馈修改(2026-10-12) + +依据:`feedback/傅艳NEW与项思炼的会话 2026年10月12日/傅艳NEW与项思炼的会话 2026年10月12日.md` 及其 6 张截图。本文仅处理本次客户反馈,不修改评分公式、肤龄显示规则或产品推荐规则。 + +## 逐项处理 + +| 客户反馈 | 处理 | +| --- | --- | +| 报告 Tab 同时支持滑动、点击 | 三组维度卡分别支持横向手势及点击;纵向滚动不切换,边界不循环。保留键盘方向键、Home/End 操作。 | +| 检测图脸部放大,同时保留点开放大 | 根据接口原始人脸矩形统一裁切照片、增强图和标记的展示区域,保留额头、下巴余量;七张检测图均处理,点开放大保留。无人脸矩形或矩形无效时展示原图。上传原图、检测输入、存档照片不裁切。 | +| 皱纹分区详细说明 | 展示 12 个真实分区的 9 项原始指标,缺失显示「未获取」,0 保留为 0。抬头纹和额头纹在现有数据中同属 `forehead_wrinkle_info`,合并为「抬头纹(额头纹)」,不虚构第 13 区。左右以本人为准。 | +| 平滑度图有框,但文字说无毛孔、黑头 | 原图错误使用色斑、痣、痤疮框。改为真实的毛孔、黑头增强图,并说明颜色及其不代表严重程度。缺图不绘制其他问题框。总体评分优秀但局部计数大于 0 时明确列出计数,不再写「无明显」。评分与档位本身不变。 | +| 黄色按钮色号不一致 | 最新 PSD 按钮矢量填色与导出像素均为 `#F5F078`,当前按钮也使用该色;正常按钮没有额外透明度/滤镜。傅艳已确认暂按 PSD 的 `#F5F078`,保持现有色值。屏幕色彩模式可能影响观感,不能据截图猜测新色。 | +| 产品名固定断句 | 三款副标题第一行分别为「以我本然有光蓄活」「以我自在有势挺括」「以我从容有态构塑」,第二行统一「双仓精华液」,独立块且不自动换行。 | +| 链接卡顿、拍摄提示不符 | 卡顿已由上一轮首屏延迟加载与静态缓存优化处理,本次复测无回退。拍摄提示按最新 PSD 改为「为使测试结果更准确,请关闭美颜/滤镜、并确保光线充足均匀。」 | +| 字号不随手机宽度缩放 | 原来按 `--u` 缩放的字号改为 375 宽设计基准的固定 CSS px;布局间距和图片仍适应屏宽。既有文字自动放大控制保留。不承诺不同屏幕的物理毫米大小或系统强制辅助缩放完全相同。 | + +## 皱纹数据说明 + +12 区:抬头纹(额头纹)、左右法令纹、左右鱼尾纹、左右眼部细纹、左右嘴角纹、眉间纹、左右脸颊纹。 + +9 项:皱纹分、严重等级、深纹条数、浅纹条数、标准化长度、标准化深度、像素密度、面积比例、深纹比例。 + +数值来自接口原始字段,最多显示四位小数;比例保留接口原值,不擅自转成百分比或补单位。分区深浅纹条数仅在对应指标缺失时使用接口分区计数回退,其余缺失不推算。不对原始数据及评分模型作任何写入。 + +新生成报告由后端保存新版文案快照,后台与前端读取同一份内容。已有历史报告继续保留当时的文案和推荐快照,不批量重算、不修改历史记录;展示图片可依据已保存原图与矩形使用新的裁切方式。验收新增皱纹话术请生成新报告,不以旧快照作为新版话术验证依据。 + +## 验证 + +```bash +node h5/test/customer-feedback.js +H5_ARTIFACT_DIR=/tmp/juzi-feedback-customer-20261012 node h5/test/customer-feedback.mjs +node h5/test/recommendation.js +node h5/test/regression.js +node h5/test/accounts.js +node h5/test/report-persistence.mjs +node h5/test/ui-20261009.mjs +node h5/test/login-performance.mjs +node h5/test/wechat-browser.mjs +node h5/test/analyze-timeout.js +node h5/test/browser-failures.mjs +node h5/test/e2e-browser.mjs +``` + +专项验证包括真实浏览器触摸事件、三组独立切换、纵滚不误触、横滑不误开放大图、点开放大仍正常、七图裁切及边界容错、12 区真实指标和缺失值、部分增强图缺失、三款产品在 320/375/390/414/480 五种宽度下固定两行且无溢出。专项截图见上述临时目录。 + +登录性能复测:150 ms 网络延迟、约 2 Mbps 下载、CPU 四倍降速,冷登录可操作约 1636 ms、静态资源编码后 262618 字节;登录仍不加载人脸引擎、模型或完整字体。该结果是开发机模拟观测,不保证所有手机耗时。微信回归使用模拟授权上游,实际 HTTPS Cookie 和跨设备身份隔离均验证,不代表重新完成一次真人微信授权。 + +上述测试全部通过,包含 126 个产品推荐案例、86 条评分真值断言;UI 回归同时刷新了 `design/ui-20261009/verification/` 内的验收截图。已执行 `graphify update .` 更新代码关系图。 + +测试使用样例、隔离数据目录或只读演示页,不调用收费 Face++,不修改生产账号或历史报告。确认本地没有近 180 秒进行中的检测后,已重启本地 H5 服务以加载后端新版话术,健康检查正常。黄色按钮色值已确认,无其他待确认项。 + +提交仅包含代码、修改说明、代码关系图及验收截图,不包含客户聊天原文和附件。公网部署沿用既有 Git bundle 快进同步方式,不推送远程仓库,不迁移或覆盖 `h5/data`,不修改微信凭据、nginx 或后台访问保护。部署实测结果在完成后追加。 diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json index dd0413d..b08c00b 100644 --- a/graphify-out/.graphify_labels.json +++ b/graphify-out/.graphify_labels.json @@ -4,17 +4,17 @@ "2": "app.js", "3": "skin-score.js", "4": "k", - "5": "r", - "6": "extractFaceTensors", - "7": "ComputeSingleFaceDescriptorTask", + "5": "f", + "6": ".runAndExtendWithFaceDetection", + "7": ".run", "8": "admin.js", "9": "__awaiter", - "10": ".forwardInput", + "10": "SsdMobilenetv1", "11": "lib/accounts.js", "12": "server.js", "13": "files", "14": "AgeGenderNet", - "15": ".runAndExtendWithFaceDetections", + "15": "extractFaceTensors", "16": "巨子测肤 · 1'me 在线肌肤测试 — UI 设计规范", "17": "extractFaces", "18": "1'me 在线肌肤测试 H5", @@ -34,15 +34,15 @@ "32": "FaceMatcher", "33": "build-fixture.py", "34": "smoke-test.js", - "35": "DetectSingleFaceLandmarksTask", + "35": "customer-feedback.js", "36": "ao", "37": "UI 外发版 10.09 图片资源", "38": "FaceLandmark68Net", "39": "UI交互界面调整", "40": ".predictAgeAndGender", - "41": "test/accounts.js", + "41": "NeuralNetwork", "42": "export_psd_assets.py", - "43": ".toBatchTensor", + "43": "normalize", "44": "start-local.sh", "45": "PredictAllAgeAndGenderWithFaceAlignmentTask", "46": "PredictAllFaceExpressionsWithFaceAlignmentTask", @@ -60,34 +60,40 @@ "58": ".dispose", "59": "call_skinanalyze.sh", "60": "report-fixture.js", - "61": "NeuralNetwork", + "61": ".extractWeights", "62": "提交前 Review(2026-10-11)", "63": "e2e-browser.mjs", "64": "account-client.js", "65": "微信登录接入与公网部署说明", - "66": "wechat-browser.mjs", + "66": "TinyYolov2Base", "67": "ui-20261009.mjs", "68": "analyze-timeout.js", "69": "misans/README.md", "70": ".draw", - "71": "production-loop.mjs", + "71": "initialize", "72": "build_report_copy.py", "73": "camera-geometry.js", "74": "report-copy.js", "75": "prepare_h5_assets.py", - "76": "TinyYolov2", - "77": "drawFaceExpressions", + "76": ".detect", + "77": ".runAndExtendWithFaceDetections", "78": "n", - "79": "微信登录联调-2026-10-12.md", + "79": "登录反馈与加载优化(2026-10-12)", "80": "线上微信登录部署记录", "81": "wechat-production.mjs", - "82": "ComputeAllFaceDescriptorsTask", + "82": "test/accounts.js", "83": "10.09 新版 H5 实施与验收", "84": "微信登录联调:2026-10-12", "85": "FaceLandmarks", + "86": "isValidNumber", "87": "产品推荐规则:肤龄基准与边界调整", - "91": "login-performance.mjs", - "94": "Box", + "88": "gn", + "89": "傅艳NEW与项思炼的会话 2026年10月12日.md", + "90": "customer-feedback.mjs", + "91": "FaceDetection", + "92": "客户反馈修改(2026-10-12)", + "93": "TinyFaceFeatureExtractor", + "94": "DetectSingleFaceLandmarksTask", "95": "PredictAllFaceExpressionsTask", "97": "PredictSingleAgeAndGenderWithFaceAlignmentTask", "98": "PredictSingleFaceExpressionsWithFaceAlignmentTask", diff --git a/graphify-out/.graphify_labels.json.sig b/graphify-out/.graphify_labels.json.sig index f53dfb5..5a9c4c3 100644 --- a/graphify-out/.graphify_labels.json.sig +++ b/graphify-out/.graphify_labels.json.sig @@ -1 +1 @@ -{"0": "bf880d08a452d7b9", "1": "cb6ea50bd4e4a5ca", "2": "e45f02a2d81f378b", "3": "1f737ca8edb978f2", "4": "68c8c4a53446cb29", "5": "d50faa21d10efe9c", "6": "21004e7ec716999e", "7": "7ac475ea9bc280f8", "8": "1ecf47531e1d507b", "9": "bb9def5316182bbf", "10": "880a74c6d255e5cc", "11": "4a490abd5e503318", "12": "53594b653ad48743", "13": "7e3b558a587a4ebe", "14": "d982c7c094e0d01c", "15": "4184c65898b38dd8", "16": "95add6a975c0cb72", "17": "d522c79a290badbf", "18": "38bb0b185ceed116", "19": "0a373ad2197fd1a6", "20": "aecf2fce44ba49c5", "21": "8835aeeaa165e9f9", "22": "af8f2189aee7bcc9", "23": "90fac00055070ce2", "24": "f85b5b1634224c86", "25": "46e8db3e6e3f37ea", "26": "83b0fd3b14363e4d", "27": "eab427ce9a5219e9", "28": "08e85dab33772c23", "29": "c608f1c6492e1cb1", "30": "73c13793fca09f56", "31": "fbbcfc059751cc6a", "32": "f6bcf56c4589316b", "33": "75f750c5b7d9f63d", "34": "f024ff7942935690", "35": "23f1d406f6c779ae", "36": "a3859fc25c864a81", "37": "cb8f26249485324a", "38": "9a25b1230b5fe649", "39": "fdd95375b4a5ddb3", "40": "a2b13160223b5a98", "41": "4bc370be8afd7db1", "42": "ffd960136fde00ad", "43": "b434f4a4ecab270c", "44": "852c1bb2446edd9c", "45": "92ab3e5134ed8685", "46": "65718282b3c32109", "47": "e594ecaa8e7d1538", "48": "e042d7fe7351bcb9", "49": "1f976711cda158dc", "50": "bbb2b57d72922b16", "51": "eb6a182204867275", "52": "2ec3c8c088568ba9", "53": "68c45056378341a7", "54": "c58d41e8e580fdc6", "55": "ac5257538f52da80", "56": "91d7ab49459e0b92", "57": "f2a40b5f1b29f669", "58": "16bec50ccad83d20", "59": "891f59cda3708718", "60": "a505b7de6257a4e8", "61": "5f4ba3be5e4fe3af", "62": "1366ae24c7e5897d", "63": "c256b43f75d7809e", "64": "ce0e68dab611f022", "65": "74ae017de0ffd36b", "66": "2b037735e1f5b0f6", "67": "3e126d8deaf6e200", "68": "6b91f3679541de79", "69": "e511846eeba03076", "70": "bf75bfc99d4f9e34", "71": "4195478d5c528371", "72": "c84f196a7bd35861", "73": "2b887bf601ccfb9f", "74": "ae2a154311e1f53a", "75": "69fdd23278518884", "76": "c96276581a8c98d4", "77": "d5ce16a18b491627", "78": "bff404f6e2fa3713", "79": "f31ac836426a58b6", "80": "315325cde1352e98", "81": "37c559741825be74", "82": "3dd68cce72af5314", "83": "1284897282eb47a3", "84": "d8bb296741d3d05c", "85": "1d30b164aa092dc6", "87": "e5fa7717989eda80", "91": "59c31f858c7b6970", "94": "c6eac02ad7178f8e", "95": "e800d832c255899a", "97": "01f68dfc34a29d32", "98": "8c471c7baeaaca54", "99": "cb5ac3401283c378"} \ No newline at end of file +{"0": "04a103a1199997a0", "1": "cb6ea50bd4e4a5ca", "2": "b663df3416204401", "3": "1f737ca8edb978f2", "4": "377a4f12232bbcdc", "5": "f074a081a584c171", "6": "5a9014c4a7f87699", "7": "6cda159cdef28f96", "8": "1ecf47531e1d507b", "9": "a16154b22fd8e2b3", "10": "d0c91dec45eac5ad", "11": "ae1e487145595eb9", "12": "53594b653ad48743", "13": "7e3b558a587a4ebe", "14": "d0f5c6e307b85cb1", "15": "0e3ea8dc60f6e10f", "16": "95add6a975c0cb72", "17": "0d185c03b2040000", "18": "38bb0b185ceed116", "19": "0a373ad2197fd1a6", "20": "aecf2fce44ba49c5", "21": "5d94cf57d5d1a6fb", "22": "be2f6d3dcfc9aabd", "23": "90fac00055070ce2", "24": "f85b5b1634224c86", "25": "46e8db3e6e3f37ea", "26": "83b0fd3b14363e4d", "27": "eab427ce9a5219e9", "28": "b992b3cc0a0fa9be", "29": "c608f1c6492e1cb1", "30": "73c13793fca09f56", "31": "fbbcfc059751cc6a", "32": "f6bcf56c4589316b", "33": "75f750c5b7d9f63d", "34": "f024ff7942935690", "35": "c4fa292c3dfb0d0e", "36": "a3859fc25c864a81", "37": "cb8f26249485324a", "38": "9a25b1230b5fe649", "39": "fdd95375b4a5ddb3", "40": "a2b13160223b5a98", "41": "d96493a5f110bd4c", "42": "ffd960136fde00ad", "43": "57726d26805c136b", "44": "852c1bb2446edd9c", "45": "92ab3e5134ed8685", "46": "65718282b3c32109", "47": "e594ecaa8e7d1538", "48": "e042d7fe7351bcb9", "49": "1f976711cda158dc", "50": "bbb2b57d72922b16", "51": "eb6a182204867275", "52": "2ec3c8c088568ba9", "53": "68c45056378341a7", "54": "c58d41e8e580fdc6", "55": "da0f3cd0568e4331", "56": "8c9a3fc5edff7e44", "57": "f2a40b5f1b29f669", "58": "7471c1ff7f7420f0", "59": "891f59cda3708718", "60": "a505b7de6257a4e8", "61": "8394d2bc925a408a", "62": "1366ae24c7e5897d", "63": "c256b43f75d7809e", "64": "ce0e68dab611f022", "65": "74ae017de0ffd36b", "66": "6b96cb56e55af88c", "67": "3e126d8deaf6e200", "68": "6b91f3679541de79", "69": "e511846eeba03076", "70": "bf75bfc99d4f9e34", "71": "eb3733e409dc7411", "72": "c84f196a7bd35861", "73": "2b887bf601ccfb9f", "74": "ae2a154311e1f53a", "75": "69fdd23278518884", "76": "c7c04904801db5b4", "77": "429cd62f9137881c", "78": "1ce63692525fa555", "79": "c6cfdfe181232ecc", "80": "315325cde1352e98", "81": "37c559741825be74", "82": "4bc370be8afd7db1", "83": "1284897282eb47a3", "84": "d8bb296741d3d05c", "85": "4c7d02c634649745", "86": "1c27e5f448dc4f9c", "87": "e5fa7717989eda80", "88": "a3e6d368559999ec", "89": "9e3363b80eeceeea", "90": "dd1c246e19a2d032", "91": "287d60115d9acda8", "92": "9509aca4f2e8a012", "93": "3befc14a32607829", "94": "23f1d406f6c779ae", "95": "e800d832c255899a", "97": "01f68dfc34a29d32", "98": "8c471c7baeaaca54", "99": "cb5ac3401283c378"} \ No newline at end of file diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index 613c051..3b6c849 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ # Graph Report - juzi (2026-10-12) ## Corpus Check -- 70 files · ~4,212,892 words +- 74 files · ~4,387,581 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 1222 nodes · 2613 edges · 93 communities (72 shown, 21 thin omitted) -- Extraction: 93% EXTRACTED · 7% INFERRED · 0% AMBIGUOUS · INFERRED: 180 edges (avg confidence: 0.53) +- 1255 nodes · 2651 edges · 99 communities (78 shown, 21 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: `85790ef9` +- Built from commit: `3193a4b6` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -20,17 +20,17 @@ - app.js - skin-score.js - k -- r -- extractFaceTensors -- ComputeSingleFaceDescriptorTask +- f +- .runAndExtendWithFaceDetection +- .run - admin.js - __awaiter -- .forwardInput +- SsdMobilenetv1 - lib/accounts.js - server.js - files - AgeGenderNet -- .runAndExtendWithFaceDetections +- extractFaceTensors - 巨子测肤 · 1'me 在线肌肤测试 — UI 设计规范 - extractFaces - 1'me 在线肌肤测试 H5 @@ -49,15 +49,15 @@ - browser-failures.mjs - FaceMatcher - build-fixture.py -- DetectSingleFaceLandmarksTask +- customer-feedback.js - ao - UI 外发版 10.09 图片资源 - FaceLandmark68Net - UI交互界面调整 - .predictAgeAndGender -- test/accounts.js +- NeuralNetwork - export_psd_assets.py -- .toBatchTensor +- normalize - start-local.sh - PredictAllAgeAndGenderWithFaceAlignmentTask - PredictAllFaceExpressionsWithFaceAlignmentTask @@ -72,31 +72,36 @@ - regression.js - .dispose - call_skinanalyze.sh -- NeuralNetwork +- .extractWeights - 提交前 Review(2026-10-11) - e2e-browser.mjs - account-client.js - 微信登录接入与公网部署说明 -- wechat-browser.mjs +- TinyYolov2Base - ui-20261009.mjs - analyze-timeout.js - misans/README.md - .draw -- production-loop.mjs +- initialize - build_report_copy.py -- TinyYolov2 -- drawFaceExpressions +- .detect +- .runAndExtendWithFaceDetections - n -- 微信登录联调-2026-10-12.md +- 登录反馈与加载优化(2026-10-12) - 线上微信登录部署记录 - wechat-production.mjs -- ComputeAllFaceDescriptorsTask +- test/accounts.js - 10.09 新版 H5 实施与验收 - 微信登录联调:2026-10-12 - FaceLandmarks +- isValidNumber - 产品推荐规则:肤龄基准与边界调整 -- login-performance.mjs -- Box +- gn +- 傅艳NEW与项思炼的会话 2026年10月12日.md +- FaceDetection +- 客户反馈修改(2026-10-12) +- TinyFaceFeatureExtractor +- DetectSingleFaceLandmarksTask - PredictAllFaceExpressionsTask - PredictSingleAgeAndGenderWithFaceAlignmentTask - PredictSingleFaceExpressionsWithFaceAlignmentTask @@ -123,17 +128,17 @@ h5/js/app.js → h5/vendor/faceapi/face-api.js - `vizCompose()` --indirect_call--> `rh()` [INFERRED] h5/js/app.js → h5/vendor/faceapi/face-api.js -- `vizCompose()` --indirect_call--> `w()` [INFERRED] +- `vizCompose()` --indirect_call--> `scale()` [INFERRED] h5/js/app.js → h5/vendor/faceapi/face-api.js ## Import Cycles - None detected. -## Communities (93 total, 21 thin omitted) +## Communities (99 total, 21 thin omitted) ### Community 0 - "face-api.js" -Cohesion: 0.02 -Nodes (29): cn(), createBrowserEnv(), createFileSystem(), createNodejsEnv(), dr(), en(), FaceDetection(), ff() (+21 more) +Cohesion: 0.03 +Nodes (20): cn(), dr(), en(), ff(), ge(), ia(), na(), nt() (+12 more) ### Community 1 - "线上闭环测试(不含真实微信授权)" Cohesion: 0.25 @@ -141,39 +146,43 @@ Nodes (7): 发现并修复, 可复现命令, 已通过的检查, 线上闭环测 ### Community 2 - "app.js" Cohesion: 0.05 -Nodes (79): applyMirror(), armNudge(), beginDetect(), bindBackdropClose(), busyWithFlow(), captureFromVideo(), checkStill(), closeLoginSuccess() (+71 more) +Nodes (80): applyMirror(), armNudge(), beginDetect(), bindBackdropClose(), busyWithFlow(), captureFromVideo(), checkStill(), closeLoginSuccess() (+72 more) ### Community 3 - "skin-score.js" Cohesion: 0.12 Nodes (45): acneGrade(), buildViewModel(), calcAcne(), calcContour(), calcSens(), calcSmooth(), calcTone(), calcWrinkles() (+37 more) ### Community 4 - "k" -Cohesion: 0.15 -Nodes (15): b(), ba(), ca(), da(), fa(), k(), ne(), pa() (+7 more) +Cohesion: 0.13 +Nodes (19): b(), ba(), ca(), cl(), da(), fa(), k(), ll() (+11 more) -### Community 5 - "r" -Cohesion: 0.14 -Nodes (34): a(), ae(), bf(), cf(), d(), drawContour(), dt(), ea() (+26 more) +### Community 5 - "f" +Cohesion: 0.21 +Nodes (23): a(), cf(), d(), drawContour(), dt(), ea(), f(), g() (+15 more) -### Community 6 - "extractFaceTensors" -Cohesion: 0.25 -Nodes (4): DetectAllFaceLandmarksTask(), extractFaceTensors(), isTensor3D(), isTensor4D() +### Community 6 - ".runAndExtendWithFaceDetection" +Cohesion: 0.33 +Nodes (5): allFacesMtcnn(), allFacesSsdMobilenetv1(), allFacesTinyYolov2(), detectAllFaces(), DetectSingleFaceTask() + +### Community 7 - ".run" +Cohesion: 0.22 +Nodes (3): ComputeAllFaceDescriptorsTask(), ComputeSingleFaceDescriptorTask(), extendWithFaceDescriptor() ### Community 8 - "admin.js" Cohesion: 0.21 Nodes (28): ageText(), api(), bind(), closeDetail(), collectFilters(), dimsHtml(), doRetry(), dSec() (+20 more) ### Community 9 - "__awaiter" -Cohesion: 0.14 -Nodes (14): __awaiter(), extendWithFaceDescriptor(), extendWithFaceExpressions(), extractAllFacesAndComputeResults(), extractSingleFaceAndComputeResult(), FaceRecognitionNet(), fetchImage(), fetchJson() (+6 more) +Cohesion: 0.15 +Nodes (13): __awaiter(), extendWithFaceExpressions(), extractAllFacesAndComputeResults(), extractSingleFaceAndComputeResult(), fetchImage(), fetchJson(), fetchNetWeights(), fetchOrThrow() (+5 more) -### Community 10 - ".forwardInput" -Cohesion: 0.22 -Nodes (9): boxPredictionLayer(), decodeBoxesLayer(), depthwiseConvLayer(), getCenterCoordinatesAndSizesLayer(), getStridesForLayerIdx(), mobileNetV1(), outputLayer(), pointwiseConvLayer() (+1 more) +### Community 10 - "SsdMobilenetv1" +Cohesion: 0.17 +Nodes (10): boxPredictionLayer(), decodeBoxesLayer(), depthwiseConvLayer(), getCenterCoordinatesAndSizesLayer(), getStridesForLayerIdx(), mobileNetV1(), outputLayer(), pointwiseConvLayer() (+2 more) ### Community 11 - "lib/accounts.js" -Cohesion: 0.17 -Nodes (20): atomic(), body(), cookie(), cookies(), crypto, fs, json(), login() (+12 more) +Cohesion: 0.08 +Nodes (31): atomic(), body(), cookie(), cookies(), crypto, fs, json(), login() (+23 more) ### Community 12 - "server.js" Cohesion: 0.08 @@ -184,20 +193,20 @@ Cohesion: 0.12 Nodes (15): files, analyze-fail, analyzing, countdown-321, hint-far, hint-front, hint-hold, hint-near (+7 more) ### Community 14 - "AgeGenderNet" -Cohesion: 0.10 -Nodes (6): AgeGenderNet(), extractParams$1(), FaceExpressionNet(), FaceLandmark68NetBase(), FaceLandmark68TinyNet(), FaceProcessor() +Cohesion: 0.12 +Nodes (5): AgeGenderNet(), extractParams$1(), FaceExpressionNet(), FaceLandmark68TinyNet(), FaceProcessor() -### Community 15 - ".runAndExtendWithFaceDetections" -Cohesion: 0.18 -Nodes (8): allFacesMtcnn(), allFacesSsdMobilenetv1(), allFacesTinyYolov2(), detectAllFaces(), DetectAllFacesTask(), DetectSingleFaceTask(), extendWithFaceDetection(), resizeResults() +### Community 15 - "extractFaceTensors" +Cohesion: 0.25 +Nodes (3): DetectAllFaceLandmarksTask(), extractFaceTensors(), isTensor3D() ### Community 16 - "巨子测肤 · 1'me 在线肌肤测试 — UI 设计规范" Cohesion: 0.15 Nodes (12): 1. 基准与尺寸换算, 2. 色彩规范, 3. 字体规范, 4. 组件切图(assets/svg/), 5. 图片素材(assets/images/,共 15 张), 6. 页面清单(design/ 下有整屏 PNG 预览), 7. 目录结构, 8. 还原建议 (+4 more) ### Community 17 - "extractFaces" -Cohesion: 0.25 -Nodes (16): awaitMediaLoaded(), bufferToImage(), createCanvas(), createCanvasFromMedia(), extractFaces(), extractImagePatches(), getContext2dOrThrow(), getEnv() (+8 more) +Cohesion: 0.14 +Nodes (19): awaitMediaLoaded(), Box(), bufferToImage(), createCanvas(), createCanvasFromMedia(), extractFaces(), extractImagePatches(), getContext2dOrThrow() (+11 more) ### Community 18 - "1'me 在线肌肤测试 H5" Cohesion: 0.13 @@ -213,11 +222,11 @@ Nodes (9): build_case1(), build_case2(), build_truth(), col(), dump(), main(), p ### Community 21 - "disposeUnusedWeightTensors" Cohesion: 0.09 -Nodes (24): disposeUnusedWeightTensors(), extractorsFactory$3(), extractorsFactory$5(), extractorsFactory$7(), extractorsFactory$9(), extractParamsFromWeigthMap(), extractParamsFromWeigthMap$1(), extractParamsFromWeigthMap$2() (+16 more) +Nodes (23): disposeUnusedWeightTensors(), extractorsFactory$3(), extractorsFactory$5(), extractorsFactory$7(), extractorsFactory$9(), extractParamsFromWeigthMap(), extractParamsFromWeigthMap$1(), extractParamsFromWeigthMap$2() (+15 more) ### Community 22 - ".loadFromDisk" -Cohesion: 0.22 -Nodes (4): ComposableTask(), getModelUris(), Gf(), TinyFaceDetector() +Cohesion: 0.20 +Nodes (5): ComposableTask(), getModelUris(), Gf(), Kf(), TinyFaceDetector() ### Community 23 - "facepp-skinanalyze(旷视皮肤分析专业版调用技能)" Cohesion: 0.20 @@ -240,8 +249,8 @@ Cohesion: 0.30 Nodes (11): ndarray, Path, gen_countdown(), main(), normalize_clip(), 倒计时单独按字生成再拼接,避免「三、二、一」整句被读成播报腔、与提示音气质漂移。 与提示音共用同一 speaker + instruct;句间留约…, 裁掉过长首尾静音,保留 ≤150ms 边沿,避免提示显迟钝。, 响度归一 −16 LUFS + 转 MP3 48k CBR mono 22050Hz。 (+3 more) ### Community 28 - "C" -Cohesion: 0.12 -Nodes (28): Bo(), C(), cd(), cl(), co(), e(), eo(), fo() (+20 more) +Cohesion: 0.14 +Nodes (22): bf(), Bo(), C(), cd(), co(), eo(), fo(), Ft() (+14 more) ### Community 29 - "face-api.js 本地化依赖(h5/vendor/faceapi/)" Cohesion: 0.29 @@ -255,6 +264,10 @@ Nodes (5): assets, document_size, layers, pages, source Cohesion: 0.60 Nodes (4): main(), 递归缩放 result 内全部坐标:{left,top,width,height} 矩形与 {x,y} 点,与原数据同为整数。, scale_coords(), to_data_url() +### Community 35 - "customer-feedback.js" +Cohesion: 0.11 +Nodes (17): alternate, assert, crop, details, excellent, fs, model, modelBefore (+9 more) + ### Community 36 - "ao" Cohesion: 0.40 Nodes (5): ao(), Do(), io(), so(), To() @@ -271,17 +284,13 @@ Nodes (4): 1meAI测肤旷视UI问题反馈, UI交互界面调整, 交互, **设 Cohesion: 0.28 Nodes (4): extendWithAge(), extendWithGender(), PredictAllAgeAndGenderTask(), PredictSingleAgeAndGenderTask() -### Community 41 - "test/accounts.js" -Cohesion: 0.22 -Nodes (9): assert, create, fs, http, os, path, ReportUI, SkinScore (+1 more) - ### Community 42 - "export_psd_assets.py" Cohesion: 0.70 Nodes (4): bounds(), layer_at(), main(), save_image() -### Community 43 - ".toBatchTensor" -Cohesion: 0.09 -Nodes (28): conv(), conv$1(), convDown(), convLayer(), convLayer$1(), convNoRelu(), convWithBatchNorm(), denseBlock3() (+20 more) +### Community 43 - "normalize" +Cohesion: 0.13 +Nodes (15): conv(), conv$1(), convDown(), convLayer$1(), convNoRelu(), denseBlock3(), denseBlock4(), depthwiseSeparableConv() (+7 more) ### Community 44 - "start-local.sh" Cohesion: 0.50 @@ -304,24 +313,24 @@ Cohesion: 0.11 Nodes (17): 1. 结论和依据, 2. 统一比较口径, 3. 逐页差异和调整内容, 4. 报告数据如何接到新 UI, 5. 登录与“我的报告”的真实能力缺口, 6. 原稿中需要整理的内容, 7. 实施顺序与交付物, 8. 验收定义 (+9 more) ### Community 55 - "i" -Cohesion: 0.10 -Nodes (21): bn(), dn(), ee(), et(), fn(), i(), je(), ln() (+13 more) +Cohesion: 0.12 +Nodes (19): bn(), dn(), ee(), Ef(), et(), fn(), i(), je() (+11 more) ### Community 56 - "report-ui.js" -Cohesion: 0.90 -Nodes (4): build(), count(), fill(), numeric() +Cohesion: 0.50 +Nodes (8): build(), count(), fill(), metricText(), numeric(), scalar(), wrinkleDetails(), wrinkleText() ### Community 57 - "regression.js" Cohesion: 0.60 Nodes (5): diffCtx(), loadJSON(), main(), okNum(), okStr() ### Community 58 - ".dispose" -Cohesion: 0.14 -Nodes (17): computeReshapedDimensions(), extractBoundingBoxes(), getSizesForScale(), iou(), isEven(), NetInput(), nonMaxSuppression(), nonMaxSuppression$1() (+9 more) +Cohesion: 0.18 +Nodes (12): extractBoundingBoxes(), FaceRecognitionNet(), getSizesForScale(), nonMaxSuppression(), normalize$1(), pyramidDown(), rescaleAndNormalize(), scale() (+4 more) -### Community 61 - "NeuralNetwork" -Cohesion: 0.06 -Nodes (28): createFaceDetectionNet(), createFaceRecognitionNet(), createMtcnn(), createSsdMobilenetv1(), createTinyFaceDetector(), createTinyYolov2(), extractConvParamsFactory(), extractFCParamsFactory() (+20 more) +### Community 61 - ".extractWeights" +Cohesion: 0.09 +Nodes (25): createFaceDetectionNet(), createFaceRecognitionNet(), createMtcnn(), createSsdMobilenetv1(), createTinyFaceDetector(), createTinyYolov2(), extractConvParamsFactory(), extractFCParamsFactory() (+17 more) ### Community 62 - "提交前 Review(2026-10-11)" Cohesion: 0.40 @@ -339,29 +348,33 @@ Nodes (5): browser(), init(), read(), rememberKind(), request() Cohesion: 0.22 Nodes (7): 公网服务器配置, 公网真机验收清单, 反向代理与后台保护, 已完成的链路, 微信登录接入与公网部署说明, 数据、迁移与备份, 本机开发环境限制(不代表线上状态) -### Community 66 - "wechat-browser.mjs" -Cohesion: 0.22 -Nodes (6): createAccounts, h5, ReportUI, require, root, SkinScore +### Community 66 - "TinyYolov2Base" +Cohesion: 0.18 +Nodes (13): convLayer(), convWithBatchNorm(), depthwiseSeparableConv$1(), fullyConnectedLayer(), leaky(), ONet(), PNet(), prelu() (+5 more) ### Community 68 - "analyze-timeout.js" Cohesion: 0.20 Nodes (7): assert, end, fs, path, source, start, vm -### Community 71 - "production-loop.mjs" -Cohesion: 0.50 -Nodes (3): artifacts, errors, samples +### Community 71 - "initialize" +Cohesion: 0.29 +Nodes (7): createBrowserEnv(), createFileSystem(), createNodejsEnv(), initialize(), isBrowser(), monkeyPatch(), setEnv() -### Community 77 - "drawFaceExpressions" -Cohesion: 0.22 -Nodes (8): DrawBox(), drawDetections(), drawFaceExpressions(), DrawFaceLandmarks(), FaceExpressions(), isWithFaceDetection(), isWithFaceExpressions(), isWithFaceLandmarks() +### Community 76 - ".detect" +Cohesion: 0.18 +Nodes (6): computeReshapedDimensions(), iou(), isEven(), NetInput(), nonMaxSuppression$1(), TinyYolov2() + +### Community 77 - ".runAndExtendWithFaceDetections" +Cohesion: 0.15 +Nodes (11): DetectAllFacesTask(), DrawBox(), drawDetections(), drawFaceExpressions(), DrawFaceLandmarks(), extendWithFaceDetection(), FaceExpressions(), isWithFaceDetection() (+3 more) ### Community 78 - "n" -Cohesion: 0.10 -Nodes (31): be(), bi(), ce(), de(), Ef(), er(), fe(), Ie() (+23 more) +Cohesion: 0.11 +Nodes (36): ae(), be(), bi(), ce(), de(), e(), er(), FaceMatch() (+28 more) -### Community 79 - "微信登录联调-2026-10-12.md" -Cohesion: 0.29 -Nodes (4): 体验变化, 慢的原因与处理, 登录反馈与加载优化(2026-10-12), 验证 +### Community 79 - "登录反馈与加载优化(2026-10-12)" +Cohesion: 0.25 +Nodes (5): 体验变化, 公网部署后复测, 慢的原因与处理, 登录反馈与加载优化(2026-10-12), 验证 ### Community 80 - "线上微信登录部署记录" Cohesion: 0.33 @@ -371,6 +384,10 @@ Nodes (6): 初次部署时的凭据查找记录(现已由用户提供), 初 Cohesion: 0.60 Nodes (4): api(), base, callback(), start() +### Community 82 - "test/accounts.js" +Cohesion: 0.22 +Nodes (9): assert, create, fs, http, os, path, ReportUI, SkinScore (+1 more) + ### Community 83 - "10.09 新版 H5 实施与验收" Cohesion: 0.29 Nodes (5): 10.09 新版 H5 实施与验收, 按确认项实现, 文档未定义部分的实施口径, 素材再生成, 验证命令 @@ -380,31 +397,39 @@ Cohesion: 0.33 Nodes (6): 后续真机确认与体验优化, 微信登录联调:2026-10-12, 本轮修正, 白名单与凭据, 真实微信验收与排查, 自动验证 ### Community 85 - "FaceLandmarks" -Cohesion: 0.08 -Nodes (12): bgrToRgbTensor(), Dimensions(), extendWithFaceLandmarks(), FaceLandmarks(), FaceLandmarks5(), FaceLandmarks68(), getCenterPoint(), isValidNumber() (+4 more) +Cohesion: 0.07 +Nodes (15): extendWithFaceLandmarks(), FaceLandmark68NetBase(), FaceLandmarks(), FaceLandmarks5(), FaceLandmarks68(), getCenterPoint(), isDimensions(), minBbox() (+7 more) + +### Community 86 - "isValidNumber" +Cohesion: 0.33 +Nodes (5): bgrToRgbTensor(), Dimensions(), isValidNumber(), isValidProbablitiy(), isWithGender() ### Community 87 - "产品推荐规则:肤龄基准与边界调整" Cohesion: 0.33 Nodes (6): 产品推荐规则:肤龄基准与边界调整, 决策顺序, 后台与前端一致性, 实施与验证范围, 已明确的要求, 已确认的三个条件 -### Community 94 - "Box" -Cohesion: 0.20 -Nodes (3): Box(), isDimensions(), ObjectDetection() +### Community 88 - "gn" +Cohesion: 0.40 +Nodes (5): gn(), kn(), tt(), wo(), z() + +### Community 92 - "客户反馈修改(2026-10-12)" +Cohesion: 0.40 +Nodes (4): 客户反馈修改(2026-10-12), 皱纹数据说明, 逐项处理, 验证 ## Knowledge Gaps -- **198 isolated node(s):** `source`, `document_size`, `pages`, `assets`, `layers` (+193 more) +- **220 isolated node(s):** `source`, `document_size`, `pages`, `assets`, `layers` (+215 more) These have ≤1 connection - possible missing edges or undocumented components. - **21 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 `r()` connect `r` to `face-api.js`, `.toBatchTensor`, `server.js`, `n`, `i`, `C`?** - _High betweenness centrality (0.063) - this node is a cross-community bridge._ +- **Why does `r()` connect `n` to `face-api.js`, `k`, `f`, `normalize`, `server.js`, `i`, `C`?** + _High betweenness centrality (0.050) - this node is a cross-community bridge._ +- **Why does `k()` connect `k` to `face-api.js`, `app.js`, `f`, `lib/accounts.js`, `n`, `gn`?** + _High betweenness centrality (0.050) - this node is a cross-community bridge._ - **Why does `renderReport()` connect `app.js` to `k`, `n`?** - _High betweenness centrality (0.051) - this node is a cross-community bridge._ -- **Why does `k()` connect `k` to `face-api.js`, `app.js`, `r`, `lib/accounts.js`, `n`, `C`?** - _High betweenness centrality (0.047) - this node is a cross-community bridge._ + _High betweenness centrality (0.038) - 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._ - **Are the 27 inferred relationships involving `r()` (e.g. with `handleExport()` and `handleRecordsQuery()`) actually correct?** @@ -412,4 +437,4 @@ _Questions this graph is uniquely positioned to answer:_ - **Are the 7 inferred relationships involving `t()` (e.g. with `renderReport()` and `e()`) actually correct?** _`t()` has 7 INFERRED edges - model-reasoned connections that need verification._ - **What connects `source`, `document_size`, `pages` to the rest of the system?** - _198 weakly-connected nodes found - possible documentation gaps or missing edges._ \ No newline at end of file + _220 weakly-connected nodes found - possible documentation gaps or missing edges._ \ No newline at end of file diff --git a/graphify-out/graph.html b/graphify-out/graph.html index b4304c7..7bdc70c 100644 --- a/graphify-out/graph.html +++ b/graphify-out/graph.html @@ -63,12 +63,12 @@
-