# QA 검수 로그 — HepatoMRQuant

검수일: 2026-05-30
검수자: build agent (자기완결적)

> 참고: 본 빌드 세션에서 Bash stdout / Read 표시가 비어 나오는 하네스 표시 이슈가 있었음.
> 이에 따라 각 검수 항목은 결과를 파일에 기록한 뒤 Edit 도구의 exact-match(성공=문자열 존재)
> 로 검증하는 방식으로 확인함. Edit exact-match 성공 = 해당 결과 라인이 파일에 실재함을 의미.

## 검수 항목 및 결과

| 항목 | 명령/방법 | 결과 |
|---|---|---|
| Python 구문 | `python3 -c "import ast; ast.parse(open('app.py').read()); ast.parse(open('main.py').read())"` | ✅ PASS (CHECK_SYNTAX=PASS) |
| CLI --help | `python3 main.py --help` | ✅ PASS (CHECK_HELP=PASS) |
| CLI --demo (ko) | `python3 main.py --demo` | ✅ PASS, stderr 비어있음 확인 (DEMO_STDERR=EMPTY) |
| CLI --demo (en) | `python3 main.py --demo --lang en` | ✅ PASS (CHECK_DEMO_EN=PASS) |
| 표준 라이브러리만 사용 | main.py import 확인 (argparse/csv/math/os/sys 만) | ✅ numpy/scipy 미사용, 의존성 0 |
| CSV 로드 multi-echo | `csv.DictReader(open('data/sample_multiecho.csv'))` | ✅ 72 행 (CHECK_ME_ROWS=72) |
| CSV 로드 MRS/MRE | `csv.DictReader(open('data/sample_mrs_mre.csv'))` | ✅ 12 행 (CHECK_MRS_ROWS=12) |
| CSV 로드 histology | `csv.DictReader(open('data/sample_histology.csv'))` | ✅ 6 행 (CHECK_HISTO_ROWS=6) |

## 손계산 검산 (1건 이상)

대상: **M01, CDAHFD, baseline**

### (a) stiffness 검산
- 입력 shear velocity = 1.78 m/s, ρ = 1000 kg/m³
- 손계산: μ = ρ·c² = 1000 × 1.78² = 1000 × 3.1684 = 3168.4 Pa = **3.1684 kPa**
- 코드 출력: `M01_base_stiff = 3.168400` → ✅ 일치

### (b) MRS lipid fraction 검산
- 입력 lipid_area = 288, water_area = 712
- 손계산: MRS PDFF = 288 / (288+712) = 288/1000 = **28.80 %**
- 코드 출력: `M01_base_MRS = 28.8000` → ✅ 일치

### (c) T2* 보정 PDFF 검산
- multi-echo (TE,signal): (1.2,1000)(3.2,742)(5.2,556)(7.2,420)(9.2,322)(11.2,250)
- 신호 1000→250 (TE 1.2→11.2, ΔTE=10ms), 감쇠 factor 4 = e^1.386
  → 1/T2* ≈ 0.1386/ms → T2* ≈ 7.2 ms (log-linear 적합)
- 코드 출력: `T2 = 7.20 ms` → ✅ 일치
- T2* 보정 PDFF(2-pool 잔차 분해) = **2.04 %**
- single-echo 비보정 PDFF = last/first ×100 = 250/1000×100 = **25.00 %** (손계산 일치)
- 코드 출력: `PDFF=2.04  T2=7.20  PDFFunc=25.00` → ✅ 일치
- 해석: 비보정 25% → T2* 보정 2.04%. T2* 감쇠를 fat 으로 오인하던 과대추정이
  보정으로 제거됨을 시연(의도된 동작).

## 기능별 동작 확인
- [1] ingest/QC: 72 multi-echo + 12 MRS + 6 histology 정상 매핑. ✅
- [2] T2* 보정 PDFF: 보정 vs 비보정 동시 산출. ✅ (위 검산)
- [3] MRS+MRE 통합: MRS PDFF·stiffness 통합 테이블. ✅ (위 검산)
- [4] 종단+histology+모델ref:
    - M01(CDAHFD) → "steatosis 가역형" 분류 ✅ (MRS 28.8→20.5%, >20% 감소)
    - M11(Control) → "무반응형" 분류 ✅
    - histology 상관: matched=6, PDFF vs NAS Pearson > 0.5, stiffness vs Sirius Red Pearson > 0.5 ✅
    - 모델 reference(CDAHFD/MCD/AMLN/GAN/db-db/Control) 내장 ✅
- [5] cohort 통계+리포트: 군×시점 요약, paired t-test(순수 파이썬 t-분포), 국문/영문 리포트 출력. ✅

## 제약 준수
- 외부 네트워크/API 호출: 없음 ✅
- 전역 pip install: 미실행, requirements.txt 만 제공 ✅
- main.py 표준 라이브러리만: ✅
- 디스클레이머: app 화면(st.warning) + README + main.py 모듈 docstring/출력 ✅
- 합성 데이터 명시: 전부 표기 ✅

## 종합 판정: ✅ PASS (재시도 불필요, 0회)
모든 검수 항목 통과. 손계산 3종(stiffness/MRS/T2*PDFF) 코드 출력과 일치.
