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
这个提交包含在:
@@ -35,26 +35,26 @@
|
||||
<view class="card-title">{{i18n.report.faceTitle}}</view>
|
||||
<!-- 脸型图(与「使用设置」同款布局);位置↔faceZones 下标:1=中上 0=左 4=右 2=中 3=中下 -->
|
||||
<view class="face-map">
|
||||
<view class="face-region forehead {{faceZones[1].colorClass}}" bindtap="onTapZone" data-wave="{{faceZones[1].waveKey}}">
|
||||
<view class="fz-name">{{faceZones[1].name}}</view>
|
||||
<view class="fz-mode" wx:if="{{faceZones[1].hasProblem}}">{{faceZones[1].modeLabel}}</view>
|
||||
</view>
|
||||
<view class="face-region left-cheek {{faceZones[0].colorClass}}" bindtap="onTapZone" data-wave="{{faceZones[0].waveKey}}">
|
||||
<view class="fz-name">{{faceZones[0].name}}</view>
|
||||
<view class="fz-mode" wx:if="{{faceZones[0].hasProblem}}">{{faceZones[0].modeLabel}}</view>
|
||||
</view>
|
||||
<view class="face-region right-cheek {{faceZones[4].colorClass}}" bindtap="onTapZone" data-wave="{{faceZones[4].waveKey}}">
|
||||
<view class="fz-name">{{faceZones[4].name}}</view>
|
||||
<view class="fz-mode" wx:if="{{faceZones[4].hasProblem}}">{{faceZones[4].modeLabel}}</view>
|
||||
</view>
|
||||
<view class="face-region nose {{faceZones[2].colorClass}}" bindtap="onTapZone" data-wave="{{faceZones[2].waveKey}}">
|
||||
<view class="face-region forehead {{faceZones[2].colorClass}}" bindtap="onTapZone" data-wave="{{faceZones[2].waveKey}}">
|
||||
<view class="fz-name">{{faceZones[2].name}}</view>
|
||||
<view class="fz-mode" wx:if="{{faceZones[2].hasProblem}}">{{faceZones[2].modeLabel}}</view>
|
||||
</view>
|
||||
<view class="face-region chin {{faceZones[3].colorClass}}" bindtap="onTapZone" data-wave="{{faceZones[3].waveKey}}">
|
||||
<view class="face-region left-cheek {{faceZones[1].colorClass}}" bindtap="onTapZone" data-wave="{{faceZones[1].waveKey}}">
|
||||
<view class="fz-name">{{faceZones[1].name}}</view>
|
||||
<view class="fz-mode" wx:if="{{faceZones[1].hasProblem}}">{{faceZones[1].modeLabel}}</view>
|
||||
</view>
|
||||
<view class="face-region right-cheek {{faceZones[0].colorClass}}" bindtap="onTapZone" data-wave="{{faceZones[0].waveKey}}">
|
||||
<view class="fz-name">{{faceZones[0].name}}</view>
|
||||
<view class="fz-mode" wx:if="{{faceZones[0].hasProblem}}">{{faceZones[0].modeLabel}}</view>
|
||||
</view>
|
||||
<view class="face-region nose {{faceZones[3].colorClass}}" bindtap="onTapZone" data-wave="{{faceZones[3].waveKey}}">
|
||||
<view class="fz-name">{{faceZones[3].name}}</view>
|
||||
<view class="fz-mode" wx:if="{{faceZones[3].hasProblem}}">{{faceZones[3].modeLabel}}</view>
|
||||
</view>
|
||||
<view class="face-region chin {{faceZones[4].colorClass}}" bindtap="onTapZone" data-wave="{{faceZones[4].waveKey}}">
|
||||
<view class="fz-name">{{faceZones[4].name}}</view>
|
||||
<view class="fz-mode" wx:if="{{faceZones[4].hasProblem}}">{{faceZones[4].modeLabel}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 底部图例:各光简要功效(果果指定保留) -->
|
||||
<view class="face-legend">
|
||||
|
||||
在新工单中引用
屏蔽一个用户