feat(diagnosis): 回填固件确认的PD区域映射(左PD1/中上PD2/中PD3,6,7/中下PD4/右PD5)

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