feat(bv): METHOD_D_P legacy fork · phantom 시연용 (bcbc7b4 시점 로직 격리)

배경:
  · 8/4 default 스위치 (bvMethod V41 → METHOD_D) 순간 · 7/20 도입돼 있던
    Python parity fix 4종 (Halir-Flusser ellipse fit · adaptive_large_bladder_relax ·
    b_si_floor · subsample refined wall) 이 처음 활성화됨.
  · 사용자 관찰 "이전 시연 대비 volume 값이 조금 작음" 은 이 fix 들의 정확도
    개선 (실제값에 가까워짐) 효과. 인체엔 좋으나 phantom (구 형태 방광 모형)
    시연 재현성이 손상됨.

해결:
  · BvMethod 에 METHOD_D_P 추가 (P = phantom · 구 가정) · demo-final default 로.
  · bcbc7b4 (2026-07-02) 시점 PiezoBVEstimator 를 legacydp 서브패키지에 격리.
  · BVResult · WallWithSpan · GreenZoneConstants 등 최상위 shared 심볼은 최신 참조
    (BVResult 신규 optional 필드는 default 로 자동 채워짐).
  · PiezoHW 는 legacy 파일 내부에 격리 (bcbc7b4 시점 V0/V1/V2 preset · 최신
    R100/R200/R300 preset 변경과 무관하게 phantom 재현성 유지).

파일:
  · [신규] managers/legacydp/PiezoBVEstimatorLegacyDP.kt (821 lines)
    - bcbc7b4 원본 855 lines 에서 BVResult 정의 (40 lines) 제거 · import 로 대체
    - package = com.medithings.vesiscan.managers.legacydp
  · [수정] managers/GreenZoneConstants.kt — BvMethod 확장 · demo default 변경
  · [수정] ui/views/monitoring/PiezoMonitoringView.kt — dispatcher 분기
    (WallWithSpan → Pair<Int,Int> 변환 · legacy estimateBladderVolume6ch 호출)

효과:
  · demo-final default = METHOD_D_P → phantom 값 재현
  · 인체용/개발용은 dev-mode 토글로 METHOD_D 선택 가능 (기존 로직 무손상)
  · cloud-mvp 브랜치의 METHOD_D 개선사항은 계속 원본 코드로 흘러올 수 있음
    (legacy 는 완전 격리 · touch 안 됨).

빌드: BUILD SUCCESSFUL 8s (첫 시도 통과).
This commit is contained in:
2026-08-11 14:41:48 +09:00
parent 73e2596842
commit fd7b5dad53
3 changed files with 842 additions and 3 deletions
@@ -30,7 +30,11 @@ enum class PlacementGuideMode { SIMPLE, BOUNDARY, SWEEP }
* - METHOD_D 에 phantom-style lr floor (1.0) 를 추가하지 말 것. 사용자 결정
* 2026-06-30: "phantom QC 는 V41 로, 인체는 Python 1:1".
*/
enum class BvMethod { FRUSTUM, V41, METHOD_D }
// METHOD_D_P: 2026-08-11 신설. Python parity fix (Halir-Flusser ellipse fit ·
// adaptive_large_bladder_relax · b_si_floor · subsample refined 등) 도입 이전
// (bcbc7b4 · 2026-07-02) 시점 BV 로직 격리 fork. phantom (구 가정) 시연 재현용.
// demo-final default. 인체 (타원 방광) 정확도 필요 시 METHOD_D 사용.
enum class BvMethod { FRUSTUM, V41, METHOD_D, METHOD_D_P }
/** Sensor alignment 알고리즘 — V1=기존 (computePlacementGuide), V2=신규 (alignment.py 포팅). */
enum class AlignmentAlgo { V1, V2 }
@@ -48,7 +52,10 @@ object GreenZoneConstants {
// detectionMethod = METHOD_C (walls 검출 · phantom-검증 파이프라인)
// bvMethod = METHOD_D (BV 계산 · Python parity + adaptive_large_bladder_relax + b_si_floor)
// Method D BV 는 estimateBv(walls) wrapper 로 라우팅 (PiezoMonitoringView).
@Volatile var bvMethod: BvMethod = BvMethod.METHOD_D
// 2026-08-11: demo-final default = METHOD_D_P (phantom · 구 가정 · bcbc7b4 로직).
// 사용자 관찰 "이전 시연 대비 volume 값이 조금 작음" 은 7/20 Python parity fix 들이
// 8/4 default 스위치 순간 활성화된 결과. 시연 재현성 위해 legacy fork 격리.
@Volatile var bvMethod: BvMethod = BvMethod.METHOD_D_P
/**
* lr_ratio 강제 override (algorithm 팀 최신 표준: piezophantomtest 4830e7c).