diff --git a/miniprogram/services/diagnosis.js b/miniprogram/services/diagnosis.js index 038088e..d9b0fd5 100644 --- a/miniprogram/services/diagnosis.js +++ b/miniprogram/services/diagnosis.js @@ -9,9 +9,8 @@ // PD ADC 值越大 = 反射光越弱 = 皮肤吸收越多。故 NR = zone/avg − 1(吸收多→NR 高)。 // config.polarity = 'direct' 可切回"值大=光强"的旧假设(备用开关,标定时救急)。 // -// 仍未确认(走 config 热调,勿写死): -// 1) PD_REGION_MAP —— 7 路 PD 与 5 区的物理对应,所有文档从未给出,当前为推测值。 -// 2) 3 路 PD 区的聚合 —— 文档 7.1 自相矛盾(几何平均 vs 取最小),按更细的几何平均+3σ剔异常实现。 +// PD↔区域映射已由固件确认(2026-07-28,果果转达):左=PD1 中上=PD2 中=PD3/6/7 中下=PD4 右=PD5。 +// 仍待定:3 路 PD 区的聚合——文档 7.1 自相矛盾(几何平均 vs 取最小),按更细的几何平均+MAD剔异常实现。 // 所有阈值/亮度/映射均可被服务端 diagnosis_config 覆盖,标定后免发版调参。 // 问题类型 -> 治疗波长编码(下发命令用:IR=1, R=2, UV=3, Y=4)。 @@ -36,8 +35,8 @@ var DEFAULT_CONFIG = { th: 0.10, // 判定阈值(文档建议初始值,需临床标定) severity: { low: 0.05, mid: 0.15, high: 0.30 }, // 轻/中/重分级,仅报告展示 brightness: 204, // 治疗强度 80%(果果定案),仅用于推荐方案下发 - // 推测映射:中区含 3 路 PD(文档"1 特殊区 3 路+4 普通区各 1 路"),待固件确认后改 config。 - pd_region_map: { left: [0], top: [1], middle: [2, 3, 4], bottom: [5], right: [6] }, + // PD↔区域映射(固件 2026-07-28 确认):左=PD1 中上=PD2 中=PD3/6/7 中下=PD4 右=PD5(下标 0 基)。 + pd_region_map: { left: [0], top: [1], middle: [2, 5, 6], bottom: [3], right: [4] }, problem_wavelength: PROBLEM_WAVELENGTH } @@ -218,9 +217,9 @@ function mockReport() { scanned_at: 0, region_mask: 0x1F, waves: { - // 左 中上 中(3路) 中下 右 + // 下标: 0=左PD1 1=中上PD2 2=中PD3 3=中下PD4 4=右PD5 5=中PD6 6=中PD7 red: [1350, 920, 900, 910, 905, 890, 940], - uv: [2050, 2020, 2600, 2560, 2620, 1990, 2080], + uv: [2050, 2020, 2600, 2010, 2080, 2560, 2620], yellow: [1500, 1520, 1490, 1505, 1495, 1530, 1510], ir: [1800, 1790, 1805, 1795, 1800, 1815, 1790] } diff --git a/server/sql/migrations/2026-07-28-scan-reports-diagnosis-config.sql b/server/sql/migrations/2026-07-28-scan-reports-diagnosis-config.sql index 7089694..0e6c3da 100644 --- a/server/sql/migrations/2026-07-28-scan-reports-diagnosis-config.sql +++ b/server/sql/migrations/2026-07-28-scan-reports-diagnosis-config.sql @@ -22,8 +22,9 @@ CREATE TABLE IF NOT EXISTS scan_reports ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 2) 诊断配置种子(2026-07-28 新结构:极性/阈值/亮度/PD映射全部热调) +-- pd_region_map 已由固件确认(2026-07-28):左=PD1 中上=PD2 中=PD3/6/7 中下=PD4 右=PD5(0基下标) -- ON DUPLICATE KEY UPDATE 会覆盖已有的 diagnosis_config——当前生产从未配置过该键, -- 若执行前发现已有人工调过的值(见指引文档的核查步骤),先备份再执行。 INSERT INTO system_settings (setting_key, setting_value) VALUES -('diagnosis_config', '{"calibrated": false, "note": "阈值/PD映射为待标定初始值(文档建议值+推测映射);polarity=inverted 已由固件确认(PD值大=吸收多);pd_region_map 待固件给出 PD1~7 实际排布后修正", "polarity": "inverted", "th": 0.10, "severity": {"low": 0.05, "mid": 0.15, "high": 0.30}, "brightness": 204, "pd_region_map": {"left": [0], "top": [1], "middle": [2, 3, 4], "bottom": [5], "right": [6]}, "problem_wavelength": {"aging": 2, "acne": 3, "pigment": 4, "deep": 1}}') +('diagnosis_config', '{"calibrated": false, "note": "阈值为待标定初始值(文档建议值);polarity=inverted 与 pd_region_map(左PD1/中上PD2/中PD3,6,7/中下PD4/右PD5) 均已由固件确认(2026-07-28)", "polarity": "inverted", "th": 0.10, "severity": {"low": 0.05, "mid": 0.15, "high": 0.30}, "brightness": 204, "pd_region_map": {"left": [0], "top": [1], "middle": [2, 5, 6], "bottom": [3], "right": [4]}, "problem_wavelength": {"aging": 2, "acne": 3, "pigment": 4, "deep": 1}}') ON DUPLICATE KEY UPDATE setting_value = VALUES(setting_value); diff --git a/server/sql/schema.sql b/server/sql/schema.sql index 5e9f5b1..b360909 100644 --- a/server/sql/schema.sql +++ b/server/sql/schema.sql @@ -204,4 +204,4 @@ INSERT IGNORE INTO system_settings (setting_key, setting_value) VALUES ('enable_binding', 'true'), ('enable_free_mode', 'true'), ('maintenance_mode', 'false'), -('diagnosis_config', '{"calibrated": false, "note": "阈值/PD映射为待标定初始值(文档建议值+推测映射);polarity=inverted 已由固件确认(PD值大=吸收多);pd_region_map 待固件给出 PD1~7 实际排布后修正", "polarity": "inverted", "th": 0.10, "severity": {"low": 0.05, "mid": 0.15, "high": 0.30}, "brightness": 204, "pd_region_map": {"left": [0], "top": [1], "middle": [2, 3, 4], "bottom": [5], "right": [6]}, "problem_wavelength": {"aging": 2, "acne": 3, "pigment": 4, "deep": 1}}'); +('diagnosis_config', '{"calibrated": false, "note": "阈值为待标定初始值(文档建议值);polarity=inverted 与 pd_region_map(左PD1/中上PD2/中PD3,6,7/中下PD4/右PD5) 均已由固件确认(2026-07-28)", "polarity": "inverted", "th": 0.10, "severity": {"low": 0.05, "mid": 0.15, "high": 0.30}, "brightness": 204, "pd_region_map": {"left": [0], "top": [1], "middle": [2, 5, 6], "bottom": [3], "right": [4]}, "problem_wavelength": {"aging": 2, "acne": 3, "pigment": 4, "deep": 1}}');