fix(mapping): correct region↔IO mapping per on-device measurement

Measured on real hardware: IO1=right IO2=left IO3=top IO4=middle IO5=bottom
(0x01=right 0x02=left 0x04=top 0x08=middle 0x10=bottom). The earlier verbal
'left=IO1/upper=IO2...' spec was wrong; this reverts to the original Phase-1
mapping, which the measurement confirms.

- protocol.js REGION constants + getRegionName + REGION_NAMES
- CRITICAL: buildVendorCommand ioMasks was built from REGION.* constants whose
  values just flipped, scrambling IO slot order; pin to literal [0x01..0x10]
- diagnosis.js REGION_DEFS key↔mask; pd_region_map values unchanged (PD is
  keyed by orientation, which is stable) — right=PD5 left=PD1 top=PD2
  middle=PD3,6,7 bottom=PD4
- common.js region labels back to right/left/top/middle/bottom (上/中/下)
- treatment-setup / manual-treatment / treating / scan-report / ble-debug
  face-map bindings and REGION_MAP realigned
- verified: mock pipeline lands left→IO2, middle→IO4 correctly
这个提交包含在:
Guoguo
2026-07-28 07:22:36 -07:00
父节点 74b0c5fa86
当前提交 21dccd2274
修改 11 个文件,包含 75 行新增73 行删除
+8 -8
查看文件
@@ -18,14 +18,14 @@ module.exports = {
saveFailed: '保存失败',
networkError: '网络异常,请重试',
deviceNotConnected: '设备未连接',
// 区域 = IO 纵列布局:left=IO1(0x01) top=IO2(0x02中上) middle=IO3(0x04)
// bottom=IO4(0x08中下) right=IO5(0x10)。key 名沿用,语义以掩码为准。
// 区域 = IO↔物理位置(实测):right=IO1(0x01) left=IO2(0x02) top=IO3(0x04)
// middle=IO4(0x08) bottom=IO5(0x10)。语义以掩码为准。
regions: {
right: '右区',
left: '左区',
top: '上区',
top: '上区',
middle: '中区',
bottom: '下区',
right: '右区'
bottom: '下区'
},
wavelengths: {
red: '红光',
@@ -53,11 +53,11 @@ module.exports = {
networkError: 'Network error, please retry',
deviceNotConnected: 'Device not connected',
regions: {
right: 'Right',
left: 'Left',
top: 'Upper Center',
top: 'Top',
middle: 'Center',
bottom: 'Lower Center',
right: 'Right'
bottom: 'Bottom'
},
wavelengths: {
red: 'Red',