# MASHePRO-Kor — QA / 검수 로그

**검수일**: 2026-04-28
**검수자**: 자동 빌드 에이전트
**대상**: 24h MVP 빌드물 (5 .py + 2 HTML + 합성 데이터 + exports)

---

## 1. Python 정적 검사 (`ast.parse`)

| 파일 | 결과 |
|------|------|
| `scales.py` | OK |
| `notifications.py` | OK |
| `power.py` | OK |
| `exports.py` | OK |
| `backend.py` | OK |
| `_build_dashboard.py` | OK |

**판정: PASS**

## 2. CLI smoke test

### 2.1 `backend.py --help`
- 서브커맨드 5개 노출 확인: `schedule`, `power`, `gendata`, `export`, `demo`. PASS.

### 2.2 `backend.py schedule --protocol weekly --duration 12 --limit 4`
- `weekly_epro` 시점 4개 정상 출력. PASS.

### 2.3 `backend.py power --compliance 0.70 --n-current 100`
- nominal n/arm = 100, 컴플라이언스 70% 보정 후 159 (`100 / (0.7 × 0.9)` 근사) 출력. PASS.
- 현재 N=100/arm 추정 power 0.802 — 의도한 baseline과 일치. PASS.

### 2.4 `backend.py demo` end-to-end
- 5단계 모두 정상 종료. PASS.
- 산출물:
  - `data/patients.json` (50명 × 12주)
  - `data/dashboard_data.json`
  - `exports/redcap_dictionary.csv`
  - `exports/sdtm_qs.csv`
  - `exports/dsmb_kr_report.md`
  - `exports/sponsor_en_report.md`

## 3. HTML 검수

### 3.1 `epro.html`
- 5종 척도 ID `CLDQ_NASH_KOR_DEMO` / `FACIT_FATIGUE_KOR` / `PROMIS_FATIGUE_KOR_SF8A` / `HEPATIC_ITCH_NRS` / `EQ5D5L_KOR` 모두 grep 매칭(5/5). PASS.
- 검증 상태 badge (`VALIDATED` / `PARTIAL` / `STANDARD`) 노출 확인 (9건 매칭). PASS.
- localStorage 키 `mashepro_kor_v1` 사용, 자동 저장 + 수동 저장 + JSON export + 초기화 버튼 동작 코드 존재. PASS (정적 확인).
- 진행률 bar `#bar`, 응답 카운터 함수 `answeredCount()`, 총 문항 카운터 `totalItemCount()` 존재. PASS.
- 의학적 디스클레이머 상단·하단 노출. PASS.

### 3.2 `dashboard.html`
- inline JSON `<script id="dashboard-data" type="application/json">` 로 `dashboard_data.json` 임베드 (31KB). PASS.
- KPI 카드 6개, 사이트 SVG 차트, power 시나리오 표 (`#powerTable`), 환자 표 (`#patientTable`), alert 표 (`#alertTable`) 모두 존재. PASS.
- 검색·필터·정렬 toolbar 동작 코드 존재. PASS.
- HIGH risk 환자 8명 alert 자동 노출 (현 시드 기준). PASS.

## 4. 검정력 sanity check (필수)

규칙: 컴플라이언스가 낮아질수록 필요 sample size 증가해야 함.

| compliance | required n/arm |
|------------|----------------|
| 95% | 117 |
| 90% | 124 |
| 85% | 131 |
| 80% | 139 |
| 75% | 149 |
| 70% | 159 |
| 65% | 171 |
| 60% | 186 |

**단조 증가 확인**. PASS.

## 5. 합성 데이터 sanity

- N=50, 12주, 시드 20260428.
- 사이트 평균 컴플라이언스: 73.8% (의도한 HIGH/MID/LOW 5:3:2 mix와 정합).
- ≥80% 환자: 27명, <50% 환자: 7명.
- HIGH risk: 8명, dropout: 5명. 모두 의도한 분포.

## 6. Export 산출물 검증 (정적)

- `redcap_dictionary.csv`: REDCap 18-컬럼 표준 헤더, 5종 척도 모든 문항 행 포함. PASS.
- `sdtm_qs.csv`: CDISC SDTM QS 도메인 표준 변수 (STUDYID, DOMAIN, USUBJID, QSSEQ, QSTESTCD, QSTEST, QSCAT, QSORRES, ...). PASS.
- `dsmb_kr_report.md`: 5개 섹션 (시험 진행, 컴플라이언스, 안전성, dropout 위험, 권고). PASS.
- `sponsor_en_report.md`: 4개 섹션 (Enrollment, Compliance, Power, Actions). PASS.

## 7. 알려진 한계

- CLDQ-NASH-Kor: 단축형 8문항 데모만 포함 (정식 36문항 한국어판 라이선스 별도).
- PROMIS-Fatigue T-score: 정식 IRT scoring 미구현, 선형 근사만 (`note: 데모 근사`).
- EQ-5D-5L Kim 2016 value set: 가중치는 데모용 근사 (정식 발표 weight와 차이 있음).
- DSMB 보고서: 한국 MFDS 공식 양식과 100% 정합 보장 안 함 — 시연용.
- 외부 네트워크/패키지 사용 안 함; Chart.js 없이 SVG fallback.

## 8. 종합 판정

**BUILD_STATUS: PASS (모든 필수 검수 통과, 알려진 한계 명시)**

`README.md` 디스클레이머 + 본 QA.md 의 "한계" 섹션을 통해 prototype 범위가 명확히 표기됨.
