diff --git a/docs/客户反馈第二批修改-2026-10-12.md b/docs/客户反馈第二批修改-2026-10-12.md new file mode 100644 index 0000000..9203d7e --- /dev/null +++ b/docs/客户反馈第二批修改-2026-10-12.md @@ -0,0 +1,65 @@ +# 12 日第二批:明确项修改 + +依据用户提供的 `12 日第二批.docx`(正文与 6 张截图)、随后补充的首页高清批注图及最新 `UI外发版10.09.psd`。原第 3 张首页截图仅 73×160 像素,未猜测;收到高清图后补齐下面两项。 + +## 已修改 + +### 首页高清批注 + +- 将三行口号中的中文「以我为始 自有表现」独立为 700 字重,英文继续使用 400 字重,保留三行断句与位置。PSD 对应中文 `0/4` 为 Demibold、英文 `0/5` 为 Regular,确实有粗细区别。 +- 放大底部「肌肤状态检测」到 24 CSS px、700 字重,与原始 Logo 约 26 CSS px 的可见高度对齐;Logo 保持原图宽高比。Logo 与文字均固定 CSS px,不再因屏宽缩放 Logo 而让二者比例失衡。 +- 首页继续使用系统字体表达字重区别,不提前下载约 5 MB 的完整 MiSans 字体;不改动或子集化字体。系统字体字形的细微差别仍依手机系统而定。 +- 在 320、375、390、414、480 五种屏宽验证:品牌行不溢出,口号仍三行,登录状态不遮挡口号,首屏不新增字体或检测引擎请求。 + +### 拍照展示 + +- 去掉人脸外轮廓的白色描边,以及原来无脸呼吸/合格变绿的轮廓描边;保留明暗镂空、五官虚线、扫描提示和「保持不动」反馈。 +- 视频由 85% 缩小预览恢复为铺满视口,避免外侧矩形取景边界;镜像仍保留。屏幕人脸中心坐标的缩放系数同步为 1,距离、姿态、光线判定阈值不变。 +- 对 PSD 导出的折线轮廓做最大 2 CSS px 的局部圆角化,使用二次曲线、不过冲、不改变轮廓坐标系。镂空与扫描裁切使用同一份平滑轮廓。原始 `CameraGeometry` 不修改。 +- 原始视频抓帧、上传图片、报告图片处理与评分/推荐逻辑不变。 + +### 准备捕捉提醒 + +原来仅在补光抓拍瞬间请求 30 ms 震动,改为首次满足检测条件、开始「保持不动」时请求 `[70, 40, 70]` 两次短震动。连续合格 450 ms 后仍按原流程自动抓拍,不增加倒计时。抖动重试时最多每两秒请求一次,每步重置。 + +实时相机的手动快门模式仍在点击抓拍时请求提醒;自动模式不会在抓拍瞬间再重复震动。 + +API 不存在、返回 false 或抛出异常时安全跳过,不能因震动失败卡住拍摄。此处没有接入未经验证的微信私有接口,也不声称所有 iPhone/微信环境均可震动。振动接口存在浏览器、用户激活和系统设置限制,实效必须在手机微信上测试;参见 [MDN Navigator.vibrate](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/vibrate)。保留原有文字、语音和补光反馈。 + +### 字重 + +直接读取 PSD 字体元数据,明确区分而非将所有文字一起加粗: + +| 位置 | PSD 图层 | 原始字体 | +| --- | --- | --- | +| 协议弹窗标题 | `1/3/0` | MiSans-Demibold | +| 拍照引导弹窗标题 | `4/7` | MiSans-Demibold | +| 正/右/左拍照步骤 | `5/3`、`6/2`、`7/2` | MiSans-Demibold | +| 综合评分、肌龄 | `8/12/2`、`8/12/3` | MiSans-Demibold | +| 三维度数字 | `8/12/7/2`、`8/12/7/9`、`8/12/7/13` | MiSans-Demibold | +| 报告标题、三维度大标题 | `8/13`、`8/9/17`、`8/10/20`、`8/11/17` | MiSans-Semibold | +| 护理建议、产品区大标题 | `8/2/0/1/0`、`8/1/3` | MiSans-Semibold | + +项目原来只有 Regular、Semibold,数字和部分提示还使用 Regular 字重。现从[小米官方字体包](https://hyperos.mi.com/font/zh/download/)增加完整的原始 Demibold 文件(4994364 字节),未转换、未子集化、未修改字形;SHA-256 为 `7afe3737efaf6a137db0ef4857fbe4033a8802756485ebc7f008e96a4bdedcf2`。保留字体归属声明。 + +Demibold 使用独立 CSS 字体族,仅应用于本轮明确需要它的位置,避免影响原有正文、Tab 和其他 Semibold 元素。报告大标题按原始 Semibold 字形显示,不能承诺所有原本已经正确加载 Semibold 的标题都会额外变粗。 + +字体样式注册提前到打开协议/拍照引导弹窗时,解决首次协议弹窗尚未注册项目字体的问题。继续 `font-display: swap`,不阻塞交互;登录、首页和账号恢复仍使用系统字体,不在首屏请求完整字体或模型。新增完整字体约 5 MB,在需要的页面下载并缓存;弱网下载完成前仍可能短暂显示回退字体。固定字号与产品两行断句保持不变。 + +## 验证与状态 + +```bash +node h5/test/customer-feedback-second.js +H5_ARTIFACT_DIR=/tmp/juzi-feedback-second-final-20261012 node h5/test/customer-feedback-second.mjs +node h5/test/customer-feedback.js +H5_ARTIFACT_DIR=/tmp/juzi-feedback-second-regression node h5/test/customer-feedback.mjs +node h5/test/recommendation.js +node h5/test/analyze-timeout.js +node h5/test/login-performance.mjs +node h5/test/e2e-browser.mjs +H5_ARTIFACT_DIR=/tmp/juzi-feedback-second-ui-20261012 node h5/test/ui-20261009.mjs +``` + +专项测试覆盖三种轮廓的有界曲线和无原始数据修改、异常输入回退、震动缺失/拒绝/抛错容错、抓拍前触发及频率限制、原有 450 ms 自动抓拍时机;浏览器核验实际渲染字体(不仅是 CSS 数值)、五种屏宽的全屏预览与固定字号、三种状态均无轮廓描边、五官引导保留、登录首屏无大字体/模型请求。专项浏览器测试拦截会话并使用本地合成视频流,不写入后端账号、报告,也不调用收费检测。 + +已完成本地开发及验证,首页高清图的两处批注也已补齐;本轮尚未提交 Git、推送或部署公网。真实手机震动实效仍待确认。 diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json index b08c00b..1c1e030 100644 --- a/graphify-out/.graphify_labels.json +++ b/graphify-out/.graphify_labels.json @@ -3,25 +3,25 @@ "1": "线上闭环测试(不含真实微信授权)", "2": "app.js", "3": "skin-score.js", - "4": "k", - "5": "f", + "4": "customer-feedback-second.js", + "5": "n", "6": ".runAndExtendWithFaceDetection", - "7": ".run", + "7": "k", "8": "admin.js", "9": "__awaiter", - "10": "SsdMobilenetv1", + "10": "mn", "11": "lib/accounts.js", "12": "server.js", "13": "files", - "14": "AgeGenderNet", - "15": "extractFaceTensors", + "14": ".draw", + "15": "extractFaces", "16": "巨子测肤 · 1'me 在线肌肤测试 — UI 设计规范", - "17": "extractFaces", + "17": "FaceLandmarks68", "18": "1'me 在线肌肤测试 H5", "19": "head-pose.js", "20": "build_fixtures.py", - "21": "disposeUnusedWeightTensors", - "22": ".loadFromDisk", + "21": "AgeGenderNet", + "22": "extractAllFacesAndComputeResults", "23": "facepp-skinanalyze(旷视皮肤分析专业版调用技能)", "24": "巨子测肤 · 1'me 语音播报内容设计文档 V1.0", "25": "mobile-select.iife.min.js", @@ -35,11 +35,11 @@ "33": "build-fixture.py", "34": "smoke-test.js", "35": "customer-feedback.js", - "36": "ao", + "36": "actualFont", "37": "UI 外发版 10.09 图片资源", "38": "FaceLandmark68Net", "39": "UI交互界面调整", - "40": ".predictAgeAndGender", + "40": "extractFaceTensors", "41": "NeuralNetwork", "42": "export_psd_assets.py", "43": "normalize", @@ -47,7 +47,7 @@ "45": "PredictAllAgeAndGenderWithFaceAlignmentTask", "46": "PredictAllFaceExpressionsWithFaceAlignmentTask", "47": "recommendation.js", - "48": "report-persistence.mjs", + "48": "已修改", "49": "mobile-select/README.md", "50": "call_skinanalyze_3view.sh", "51": "第二轮2反馈.md", @@ -65,37 +65,31 @@ "63": "e2e-browser.mjs", "64": "account-client.js", "65": "微信登录接入与公网部署说明", - "66": "TinyYolov2Base", + "66": "report-persistence.mjs", "67": "ui-20261009.mjs", "68": "analyze-timeout.js", "69": "misans/README.md", - "70": ".draw", - "71": "initialize", + "70": ".forwardInput", + "71": ".toString", "72": "build_report_copy.py", "73": "camera-geometry.js", "74": "report-copy.js", "75": "prepare_h5_assets.py", "76": ".detect", "77": ".runAndExtendWithFaceDetections", - "78": "n", + "78": "t", "79": "登录反馈与加载优化(2026-10-12)", "80": "线上微信登录部署记录", "81": "wechat-production.mjs", - "82": "test/accounts.js", + "82": "wechat-browser.mjs", "83": "10.09 新版 H5 实施与验收", "84": "微信登录联调:2026-10-12", - "85": "FaceLandmarks", - "86": "isValidNumber", + "85": ".predictAgeAndGender", + "86": "LabeledFaceDescriptors", "87": "产品推荐规则:肤龄基准与边界调整", - "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", - "99": "PredictSingleFaceExpressionsTask" + "98": "PredictSingleFaceExpressionsWithFaceAlignmentTask" } diff --git a/graphify-out/.graphify_labels.json.sig b/graphify-out/.graphify_labels.json.sig index 5a9c4c3..4c033c5 100644 --- a/graphify-out/.graphify_labels.json.sig +++ b/graphify-out/.graphify_labels.json.sig @@ -1 +1 @@ -{"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 +{"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"} \ No newline at end of file diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index 3b6c849..0c4a000 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 -- 74 files · ~4,387,581 words +- 77 files · ~4,389,710 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 1255 nodes · 2651 edges · 99 communities (78 shown, 21 thin omitted) +- 1280 nodes · 2677 edges · 93 communities (76 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: `3193a4b6` +- Built from commit: `abb1c4c1` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -19,25 +19,25 @@ - 线上闭环测试(不含真实微信授权) - app.js - skin-score.js -- k -- f +- customer-feedback-second.js +- n - .runAndExtendWithFaceDetection -- .run +- k - admin.js - __awaiter -- SsdMobilenetv1 +- mn - lib/accounts.js - server.js - files -- AgeGenderNet -- extractFaceTensors -- 巨子测肤 · 1'me 在线肌肤测试 — UI 设计规范 +- .draw - extractFaces +- 巨子测肤 · 1'me 在线肌肤测试 — UI 设计规范 +- FaceLandmarks68 - 1'me 在线肌肤测试 H5 - head-pose.js - build_fixtures.py -- disposeUnusedWeightTensors -- .loadFromDisk +- AgeGenderNet +- extractAllFacesAndComputeResults - facepp-skinanalyze(旷视皮肤分析专业版调用技能) - 巨子测肤 · 1'me 语音播报内容设计文档 V1.0 - mobile-select.iife.min.js @@ -50,11 +50,10 @@ - FaceMatcher - build-fixture.py - customer-feedback.js -- ao - UI 外发版 10.09 图片资源 - FaceLandmark68Net - UI交互界面调整 -- .predictAgeAndGender +- extractFaceTensors - NeuralNetwork - export_psd_assets.py - normalize @@ -62,7 +61,7 @@ - PredictAllAgeAndGenderWithFaceAlignmentTask - PredictAllFaceExpressionsWithFaceAlignmentTask - recommendation.js -- report-persistence.mjs +- 已修改 - mobile-select/README.md - call_skinanalyze_3view.sh - 护理建议(全量文本,按需求摘抄) @@ -77,35 +76,29 @@ - e2e-browser.mjs - account-client.js - 微信登录接入与公网部署说明 -- TinyYolov2Base +- report-persistence.mjs - ui-20261009.mjs - analyze-timeout.js - misans/README.md -- .draw -- initialize +- .forwardInput +- .toString - build_report_copy.py - .detect - .runAndExtendWithFaceDetections -- n +- t - 登录反馈与加载优化(2026-10-12) - 线上微信登录部署记录 - wechat-production.mjs -- test/accounts.js +- wechat-browser.mjs - 10.09 新版 H5 实施与验收 - 微信登录联调:2026-10-12 -- FaceLandmarks -- isValidNumber +- .predictAgeAndGender +- LabeledFaceDescriptors - 产品推荐规则:肤龄基准与边界调整 -- gn - 傅艳NEW与项思炼的会话 2026年10月12日.md -- FaceDetection - 客户反馈修改(2026-10-12) -- TinyFaceFeatureExtractor -- DetectSingleFaceLandmarksTask -- PredictAllFaceExpressionsTask - PredictSingleAgeAndGenderWithFaceAlignmentTask - PredictSingleFaceExpressionsWithFaceAlignmentTask -- PredictSingleFaceExpressionsTask ## God Nodes (most connected - your core abstractions) 1. `__awaiter()` - 59 edges @@ -134,11 +127,11 @@ ## Import Cycles - None detected. -## Communities (99 total, 21 thin omitted) +## Communities (93 total, 17 thin omitted) ### Community 0 - "face-api.js" -Cohesion: 0.03 -Nodes (20): cn(), dr(), en(), ff(), ge(), ia(), na(), nt() (+12 more) +Cohesion: 0.02 +Nodes (43): ce(), cn(), computeReshapedDimensions(), createBrowserEnv(), createFileSystem(), createNodejsEnv(), Dimensions(), dr() (+35 more) ### Community 1 - "线上闭环测试(不含真实微信授权)" Cohesion: 0.25 @@ -146,43 +139,43 @@ Nodes (7): 发现并修复, 可复现命令, 已通过的检查, 线上闭环测 ### Community 2 - "app.js" Cohesion: 0.05 -Nodes (80): applyMirror(), armNudge(), beginDetect(), bindBackdropClose(), busyWithFlow(), captureFromVideo(), checkStill(), closeLoginSuccess() (+72 more) +Nodes (81): applyMirror(), armNudge(), beginDetect(), bindBackdropClose(), busyWithFlow(), captureFromVideo(), captureHaptic(), checkStill() (+73 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.13 -Nodes (19): b(), ba(), ca(), cl(), da(), fa(), k(), ll() (+11 more) +### Community 4 - "customer-feedback-second.js" +Cohesion: 0.17 +Nodes (10): assert, context, face, fs, geometry, original, path, source (+2 more) -### Community 5 - "f" -Cohesion: 0.21 -Nodes (23): a(), cf(), d(), drawContour(), dt(), ea(), f(), g() (+15 more) +### Community 5 - "n" +Cohesion: 0.17 +Nodes (39): a(), ae(), be(), bf(), cf(), d(), de(), drawContour() (+31 more) ### 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 7 - "k" +Cohesion: 0.18 +Nodes (11): b(), gn(), k(), kn(), ne(), tt(), wo(), Yt() (+3 more) ### Community 8 - "admin.js" Cohesion: 0.21 Nodes (28): ageText(), api(), bind(), closeDetail(), collectFilters(), dimsHtml(), doRetry(), dSec() (+20 more) ### Community 9 - "__awaiter" -Cohesion: 0.15 -Nodes (13): __awaiter(), extendWithFaceExpressions(), extractAllFacesAndComputeResults(), extractSingleFaceAndComputeResult(), fetchImage(), fetchJson(), fetchNetWeights(), fetchOrThrow() (+5 more) +Cohesion: 0.14 +Nodes (13): __awaiter(), bufferToImage(), ComposableTask(), fetchImage(), fetchJson(), fetchNetWeights(), fetchOrThrow(), __generator() (+5 more) -### Community 10 - "SsdMobilenetv1" +### Community 10 - "mn" Cohesion: 0.17 -Nodes (10): boxPredictionLayer(), decodeBoxesLayer(), depthwiseConvLayer(), getCenterCoordinatesAndSizesLayer(), getStridesForLayerIdx(), mobileNetV1(), outputLayer(), pointwiseConvLayer() (+2 more) +Nodes (11): Lu(), mn(), Point(), Pu(), Uu(), vn(), Vu(), wl() (+3 more) ### Community 11 - "lib/accounts.js" -Cohesion: 0.08 -Nodes (31): atomic(), body(), cookie(), cookies(), crypto, fs, json(), login() (+23 more) +Cohesion: 0.07 +Nodes (34): atomic(), body(), cookie(), cookies(), crypto, fs, json(), login() (+26 more) ### Community 12 - "server.js" Cohesion: 0.08 @@ -192,21 +185,17 @@ Nodes (51): accounts, appendRecord(), callFacepp(), CRED, crypto, csvCell(), DAT 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.12 -Nodes (5): AgeGenderNet(), extractParams$1(), FaceExpressionNet(), FaceLandmark68TinyNet(), FaceProcessor() - -### Community 15 - "extractFaceTensors" -Cohesion: 0.25 -Nodes (3): DetectAllFaceLandmarksTask(), extractFaceTensors(), isTensor3D() +### Community 15 - "extractFaces" +Cohesion: 0.21 +Nodes (17): awaitMediaLoaded(), createCanvas(), createCanvasFromMedia(), extractFaces(), extractImagePatches(), getContext2dOrThrow(), getEnv(), getMediaDimensions() (+9 more) ### 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.14 -Nodes (19): awaitMediaLoaded(), Box(), bufferToImage(), createCanvas(), createCanvasFromMedia(), extractFaces(), extractImagePatches(), getContext2dOrThrow() (+11 more) +### Community 17 - "FaceLandmarks68" +Cohesion: 0.19 +Nodes (3): FaceLandmarks5(), FaceLandmarks68(), getCenterPoint() ### Community 18 - "1'me 在线肌肤测试 H5" Cohesion: 0.13 @@ -220,13 +209,13 @@ Nodes (8): assertPoints(), check(), clamp(), dist(), estimate(), makeFrontal(), 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.09 -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(), extractParamsFromWeigthMap(), extractParamsFromWeigthMap$1() (+20 more) -### Community 22 - ".loadFromDisk" -Cohesion: 0.20 -Nodes (5): ComposableTask(), getModelUris(), Gf(), Kf(), TinyFaceDetector() +### Community 22 - "extractAllFacesAndComputeResults" +Cohesion: 0.12 +Nodes (8): ComputeAllFaceDescriptorsTask(), ComputeSingleFaceDescriptorTask(), extendWithFaceDescriptor(), extendWithFaceExpressions(), extractAllFacesAndComputeResults(), extractSingleFaceAndComputeResult(), PredictAllFaceExpressionsTask(), PredictSingleFaceExpressionsTask() ### Community 23 - "facepp-skinanalyze(旷视皮肤分析专业版调用技能)" Cohesion: 0.20 @@ -249,8 +238,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.14 -Nodes (22): bf(), Bo(), C(), cd(), co(), eo(), fo(), Ft() (+14 more) +Cohesion: 0.10 +Nodes (22): ao(), Bo(), C(), cd(), co(), Do(), eo(), fo() (+14 more) ### Community 29 - "face-api.js 本地化依赖(h5/vendor/faceapi/)" Cohesion: 0.29 @@ -268,10 +257,6 @@ Nodes (4): main(), 递归缩放 result 内全部坐标:{left,top,width,height} 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() - ### Community 37 - "UI 外发版 10.09 图片资源" Cohesion: 0.40 Nodes (4): UI 外发版 10.09 图片资源, 前端素材对应, 文件位置, 重新导出 @@ -280,17 +265,17 @@ Nodes (4): UI 外发版 10.09 图片资源, 前端素材对应, 文件位置, Cohesion: 0.40 Nodes (4): 1meAI测肤旷视UI问题反馈, UI交互界面调整, 交互, **设计** -### Community 40 - ".predictAgeAndGender" -Cohesion: 0.28 -Nodes (4): extendWithAge(), extendWithGender(), PredictAllAgeAndGenderTask(), PredictSingleAgeAndGenderTask() +### Community 40 - "extractFaceTensors" +Cohesion: 0.08 +Nodes (10): bgrToRgbTensor(), Box(), DetectAllFaceLandmarksTask(), DetectSingleFaceLandmarksTask(), extendWithFaceLandmarks(), extractFaceTensors(), FaceLandmarks(), isTensor3D() (+2 more) ### Community 42 - "export_psd_assets.py" Cohesion: 0.70 Nodes (4): bounds(), layer_at(), main(), save_image() ### Community 43 - "normalize" -Cohesion: 0.13 -Nodes (15): conv(), conv$1(), convDown(), convLayer$1(), convNoRelu(), denseBlock3(), denseBlock4(), depthwiseSeparableConv() (+7 more) +Cohesion: 0.07 +Nodes (27): conv(), conv$1(), convDown(), convLayer(), convLayer$1(), convNoRelu(), convWithBatchNorm(), denseBlock3() (+19 more) ### Community 44 - "start-local.sh" Cohesion: 0.50 @@ -300,9 +285,9 @@ Nodes (3): HOST, PORT, start-local.sh script Cohesion: 0.38 Nodes (6): assert, check(), missing, raw, SS, UI -### Community 48 - "report-persistence.mjs" -Cohesion: 0.29 -Nodes (6): child, dataRoot, fx, h5, ReportUI, require +### Community 48 - "已修改" +Cohesion: 0.25 +Nodes (7): 12 日第二批:明确项修改, 准备捕捉提醒, 字重, 已修改, 拍照展示, 首页高清批注, 验证与状态 ### Community 53 - "护理建议(全量文本,按需求摘抄)" Cohesion: 0.10 @@ -313,8 +298,8 @@ Cohesion: 0.11 Nodes (17): 1. 结论和依据, 2. 统一比较口径, 3. 逐页差异和调整内容, 4. 报告数据如何接到新 UI, 5. 登录与“我的报告”的真实能力缺口, 6. 原稿中需要整理的内容, 7. 实施顺序与交付物, 8. 验收定义 (+9 more) ### Community 55 - "i" -Cohesion: 0.12 -Nodes (19): bn(), dn(), ee(), Ef(), et(), fn(), i(), je() (+11 more) +Cohesion: 0.08 +Nodes (31): ba(), bn(), ca(), cl(), da(), dn(), ee(), et() (+23 more) ### Community 56 - "report-ui.js" Cohesion: 0.50 @@ -325,12 +310,12 @@ Cohesion: 0.60 Nodes (5): diffCtx(), loadJSON(), main(), okNum(), okStr() ### Community 58 - ".dispose" -Cohesion: 0.18 -Nodes (12): extractBoundingBoxes(), FaceRecognitionNet(), getSizesForScale(), nonMaxSuppression(), normalize$1(), pyramidDown(), rescaleAndNormalize(), scale() (+4 more) +Cohesion: 0.22 +Nodes (9): FaceRecognitionNet(), getSizesForScale(), nonMaxSuppression(), normalize$1(), rescaleAndNormalize(), scale(), stage1(), stage2() (+1 more) ### Community 61 - ".extractWeights" Cohesion: 0.09 -Nodes (25): createFaceDetectionNet(), createFaceRecognitionNet(), createMtcnn(), createSsdMobilenetv1(), createTinyFaceDetector(), createTinyYolov2(), extractConvParamsFactory(), extractFCParamsFactory() (+17 more) +Nodes (26): createFaceDetectionNet(), createFaceRecognitionNet(), createMtcnn(), createSsdMobilenetv1(), createTinyFaceDetector(), createTinyYolov2(), extractConvParamsFactory(), extractFCParamsFactory() (+18 more) ### Community 62 - "提交前 Review(2026-10-11)" Cohesion: 0.40 @@ -348,29 +333,33 @@ Nodes (5): browser(), init(), read(), rememberKind(), request() Cohesion: 0.22 Nodes (7): 公网服务器配置, 公网真机验收清单, 反向代理与后台保护, 已完成的链路, 微信登录接入与公网部署说明, 数据、迁移与备份, 本机开发环境限制(不代表线上状态) -### Community 66 - "TinyYolov2Base" -Cohesion: 0.18 -Nodes (13): convLayer(), convWithBatchNorm(), depthwiseSeparableConv$1(), fullyConnectedLayer(), leaky(), ONet(), PNet(), prelu() (+5 more) +### Community 66 - "report-persistence.mjs" +Cohesion: 0.29 +Nodes (6): child, dataRoot, fx, h5, ReportUI, require ### Community 68 - "analyze-timeout.js" Cohesion: 0.20 Nodes (7): assert, end, fs, path, source, start, vm -### Community 71 - "initialize" -Cohesion: 0.29 -Nodes (7): createBrowserEnv(), createFileSystem(), createNodejsEnv(), initialize(), isBrowser(), monkeyPatch(), setEnv() +### Community 70 - ".forwardInput" +Cohesion: 0.22 +Nodes (9): boxPredictionLayer(), decodeBoxesLayer(), depthwiseConvLayer(), getCenterCoordinatesAndSizesLayer(), getStridesForLayerIdx(), mobileNetV1(), outputLayer(), pointwiseConvLayer() (+1 more) + +### Community 71 - ".toString" +Cohesion: 0.33 +Nodes (5): FaceMatch(), la(), pr(), pt(), vt() ### Community 76 - ".detect" -Cohesion: 0.18 -Nodes (6): computeReshapedDimensions(), iou(), isEven(), NetInput(), nonMaxSuppression$1(), TinyYolov2() +Cohesion: 0.15 +Nodes (6): iou(), NetInput(), nonMaxSuppression$1(), SsdMobilenetv1(), TinyYolov2(), TinyYolov2Base() ### Community 77 - ".runAndExtendWithFaceDetections" Cohesion: 0.15 Nodes (11): DetectAllFacesTask(), DrawBox(), drawDetections(), drawFaceExpressions(), DrawFaceLandmarks(), extendWithFaceDetection(), FaceExpressions(), isWithFaceDetection() (+3 more) -### Community 78 - "n" -Cohesion: 0.11 -Nodes (36): ae(), be(), bi(), ce(), de(), e(), er(), FaceMatch() (+28 more) +### Community 78 - "t" +Cohesion: 0.14 +Nodes (14): bi(), Ef(), er(), ia(), Ie(), j(), Kt(), Mf() (+6 more) ### Community 79 - "登录反馈与加载优化(2026-10-12)" Cohesion: 0.25 @@ -384,9 +373,9 @@ Nodes (6): 初次部署时的凭据查找记录(现已由用户提供), 初 Cohesion: 0.60 Nodes (4): api(), base, callback(), start() -### Community 82 - "test/accounts.js" +### Community 82 - "wechat-browser.mjs" Cohesion: 0.22 -Nodes (9): assert, create, fs, http, os, path, ReportUI, SkinScore (+1 more) +Nodes (6): createAccounts, h5, ReportUI, require, root, SkinScore ### Community 83 - "10.09 新版 H5 实施与验收" Cohesion: 0.29 @@ -396,40 +385,32 @@ Nodes (5): 10.09 新版 H5 实施与验收, 按确认项实现, 文档未定义 Cohesion: 0.33 Nodes (6): 后续真机确认与体验优化, 微信登录联调:2026-10-12, 本轮修正, 白名单与凭据, 真实微信验收与排查, 自动验证 -### Community 85 - "FaceLandmarks" -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 85 - ".predictAgeAndGender" +Cohesion: 0.28 +Nodes (4): extendWithAge(), extendWithGender(), PredictAllAgeAndGenderTask(), PredictSingleAgeAndGenderTask() ### Community 87 - "产品推荐规则:肤龄基准与边界调整" Cohesion: 0.33 Nodes (6): 产品推荐规则:肤龄基准与边界调整, 决策顺序, 后台与前端一致性, 实施与验证范围, 已明确的要求, 已确认的三个条件 -### 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), 皱纹数据说明, 逐项处理, 验证 +Cohesion: 0.33 +Nodes (5): 公网部署与复测, 客户反馈修改(2026-10-12), 皱纹数据说明, 逐项处理, 验证 ## Knowledge Gaps -- **220 isolated node(s):** `source`, `document_size`, `pages`, `assets`, `layers` (+215 more) +- **236 isolated node(s):** `source`, `document_size`, `pages`, `assets`, `layers` (+231 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. +- **17 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 `n` to `face-api.js`, `k`, `f`, `normalize`, `server.js`, `i`, `C`?** +- **Why does `r()` connect `n` to `face-api.js`, `.toString`, `mn`, `normalize`, `server.js`, `t`, `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.038) - this node is a cross-community bridge._ +- **Why does `k()` connect `k` to `face-api.js`, `app.js`, `n`, `lib/accounts.js`, `t`, `i`?** + _High betweenness centrality (0.043) - this node is a cross-community bridge._ +- **Why does `renderReport()` connect `app.js` to `t`, `k`?** + _High betweenness centrality (0.041) - 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?** @@ -437,4 +418,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?** - _220 weakly-connected nodes found - possible documentation gaps or missing edges._ \ No newline at end of file + _236 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 7bdc70c..04860a7 100644 --- a/graphify-out/graph.html +++ b/graphify-out/graph.html @@ -63,12 +63,12 @@
-
1255 nodes · 2651 edges · 99 communities
+
1280 nodes · 2677 edges · 93 communities