feat(hospital): Supine 확인 측정의 IMU 평균을 기준각으로 — Sitting 요구 범위를 35+m~55+m 로 민다

35°~55° 는 Supine 에서 프로브가 0° 라는 가정이다. 배가 나온 환자는 누워서도 20° 쯤
나오고, 그러면 Sitting 최적 구간은 55°~75° 다(2026-10-01 제안).

  · Supine 정렬의 확인 측정(N cm, 20 cycle)에서 IMU 평균 기울기 m 을 재
    AppState.supineTiltBaseline 에 두고, 요약 align_result.json 에 confirm_tilt_deg_mean 으로
    남긴다(어느 자세든). 앱을 다시 켜면 그날 Supine 정렬 요약에서 되살린다.
  · PostureTilt.rangeFor/status 가 기준각을 받아 Sitting 범위를 (35+m)..(55+m) 로 민다.
    기준각이 없으면 절대 각도 그대로.
  · 카드: Sitting 에서 "IMU 기울기 n° · Supine 대비 +k°", 띠는 밀린 범위, 문구
    "Sitting 측정 가능 각도 55°~75° (Supine 20° + 35~55)". 기준각이 없으면 "Supine 기준각
    없음" 을 적는다. 다른 자세에서는 "Supine 기준각 20° 저장됨 (Sitting 범위 55°~75°)".
  · run 매니페스트: tilt_deg_required 는 밀린 값, tilt_baseline_supine 추가.
  · 환자가 바뀌면 기준각도 비운다.

시험 PostureTiltTest 기준각 1건 추가 — 전체 191건 · failures 0.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-10-01 09:43:54 +09:00
parent 6f118f3ee4
commit 346f647857
8 changed files with 122 additions and 14 deletions
+1
View File
@@ -179,6 +179,7 @@ IMU 는 2026-09-21 이후 업로드분부터 `sensor.imu` 로 들어옵니다(
| `reattach_frames` | int | 재부착 확인 측정 cycle 수 (2026-09-30~). 0 = 안 했음 |
| `confirm_channels` | bool[4] | 정렬 확인 측정에서 벽이 잡힌 채널 CH0~3 (2026-09-30~). 재부착 확인의 기준 |
| `posture` | string | 이 정렬의 자세 `Supine`/`Sitting`/`Standing` (2026-10-01~). 정렬은 자세마다 따로 합니다 |
| `confirm_tilt_deg_mean` | number | 확인 측정(N cm, 20 cycle)의 IMU 평균 기울기(도, 0~180). Supine 의 값이 Sitting 요구 범위의 기준각 m 입니다 — Sitting 범위 = `35+m ~ 55+m` (2026-10-01~) |
| `reattach` | object | 재부착 확인 판정 `{ok, missing[], detached[], channels[4], ref_channels[4]\|null, bv_ml, at}` — 정렬 뒤 뗐다 붙인 자리에서 정렬 때 잡힌 채널이 빠졌는지 |
| `cycles_total` | int | = `recordCount` |
| `upload_reason` | string | `"nurse_review"` — 사람이 올린 세션 표시 |