# QA Report — MASLDGuidelineDeltaWatch

작성일: 2026-05-07

## 1. Python 구문 체크
명령: `python3 -c "import ast; ast.parse(open('main.py').read())"`
- 결과: PASS (구문 오류 없음)

## 2. CLI 도움말
명령: `python3 main.py --help`
- 결과: PASS — 8개 서브커맨드 (`ingest`, `diff`, `evidence-trace`, `nit-cutoff`, `drug-update`, `korean-comment`, `masldstager-impact`, `digest`) 모두 노출 확인.

## 3. 서브커맨드별 실행 결과

### 3.1 ingest
- `python3 main.py ingest --society all` → PASS. 13개 가이드라인 파일, 총 107개 권고 적재 확인.
- 학회별 분포: AASLD 38, EASL 17, APASL 13, KASL 16, NICE 13, AISF 5, ALEH 5.

### 3.2 diff
- `python3 main.py diff --society aasld --from 2024_amendment --to 2026_revision_draft` → PASS.
  - 6 matched changes / 5 added / 9 deleted-or-dropped.
  - LSM cutoff 변경 검출: `8-12 indeterminate; >=12 rule in` → `8-15 indeterminate; >=15 rule in`.
  - Resmetirom evidence_grade B → A 검출.
  - 신규 약물 권고(pegozafermin, efruxifermin, survodutide) added 분류.
- `python3 main.py diff --society kasl --from 2021 --to 2025_update_draft` → PASS. MASLD 명명법 도입 + LSM rule-in 12→15 + ELF 도입 + resmetirom 신규 추가 검출.
- `python3 main.py diff --society easl --from 2024 --to 2026_update_draft` → PASS.
- `python3 main.py diff --society apasl --from 2024 --to 2025_update` → PASS.
- `python3 main.py diff --society nice --from ng49_2024 --to ng49_2025_update` → PASS.

### 3.3 evidence-trace
- `python3 main.py evidence-trace --recommendation AASLD-2024-R14` → PASS.
  - PMID 32178492 (FAST score) `expression_of_concern` ORANGE alert 출력.
- `python3 main.py evidence-trace --recommendation AASLD-2024-R09` → PASS.
  - PMID 27322798 (pioglitazone) `correction` YELLOW alert 출력.

### 3.4 nit-cutoff
- `python3 main.py nit-cutoff --biomarker lsm` → PASS. 12→15 kPa 변경된 행에 `<-- CHANGED` 마커 출력.
- `python3 main.py nit-cutoff --biomarker fib4` → PASS. 모든 society/version timeline.
- `python3 main.py nit-cutoff --biomarker elf` → PASS. NICE 10.51 vs 다른 학회 9.8/11.3 차이 시각화.
- `python3 main.py nit-cutoff` (필터 없음) → PASS.

### 3.5 drug-update
- `python3 main.py drug-update --drug resmetirom` → PASS. FDA 2024-03-14, EMA 2025-08-22, MFDS under_review_2026 노출. 9개 가이드라인 cross-reference 출력.
- `python3 main.py drug-update --drug pegozafermin` → PASS. FDA/EMA pending 노출, AASLD-2026-R16/EASL-2026-R13 cross-reference.
- `python3 main.py drug-update` (전체) → PASS.

### 3.6 korean-comment
- `python3 main.py korean-comment --recommendation KASL-2025-R11` → PASS. 한국 resmetirom 권고 KASL template 채워서 출력. 5.4 자동 외삽 평가 절 주입 확인 (resmetirom MFDS 심사·급여 미정·BMI cutoff 적용 권고).
- `python3 main.py korean-comment --recommendation AASLD-2026-R05` → PASS. LSM 권고 자동 외삽 평가 출력 (NHIS VCTE 급여, 12 vs 15 kPa Korean cohort 검증 필요).

### 3.7 masldstager-impact
- `python3 main.py masldstager-impact` → PASS. 9개 rule 출력.
  - MS-RULE-03 (LSM) cutoff drift 자동 검출: rule expects high=12.0 but observed AASLD/EASL/APASL/KASL 2025+ all 15.0 → 업데이트 검토 알림.
  - MS-RULE-05 (ELF) cutoff drift: rule expects high=11.3 but NICE 10.51.

### 3.8 digest
- `python3 main.py digest --korean` → PASS. 한국어 헤더 출력. AASLD 2026 (D-25), EASL 2026 (D-23), KASL 2025 (D-39) 마감일 표시. 20건 권고 변경 emerging change 출력. Telegram/Slack 시뮬레이션 출력.
- `python3 main.py digest` → PASS (영문 헤더).

## 4. data 파일 존재 확인
- `data/guidelines/aasld_2023.json` ✓
- `data/guidelines/aasld_2024_amendment.json` ✓
- `data/guidelines/aasld_2026_revision_draft.json` ✓
- `data/guidelines/easl_2024.json` ✓
- `data/guidelines/easl_2026_update_draft.json` ✓
- `data/guidelines/apasl_2024.json` ✓
- `data/guidelines/apasl_2025_update.json` ✓
- `data/guidelines/kasl_2021.json` ✓
- `data/guidelines/kasl_2025_update_draft.json` ✓
- `data/guidelines/nice_ng49_2024.json` ✓
- `data/guidelines/nice_ng49_2025_update.json` ✓
- `data/guidelines/aisf_2024.json` ✓
- `data/guidelines/aleh_2024.json` ✓
- `data/nit_cutoffs.csv` ✓
- `data/drugs_label.json` ✓
- `data/cite_papers.json` ✓
- `data/kasl_comment_template.md` ✓
- `data/masldstager_logic.json` ✓

## 5. Diff 출력 검증 샘플 (요약)

```
# Diff: aasld 2024_amendment -> 2026_revision_draft
  summary: 6 matched, 5 added, 9 deleted/dropped
## Added
  + [AASLD-2026-R16] (pegozafermin) ...
  + [AASLD-2026-R17] (efruxifermin) ...
  + [AASLD-2026-R18] (survodutide) ...
  + [AASLD-2026-R19] (elf_test) ...
  + [AASLD-2026-R20] (mefib_score) ...
## Changed
  ~ AASLD-2024-R05 -> AASLD-2026-R05 (lsm_cutoff)
    text_en: "...>=12 kPa rule in" -> "...>=15 kPa rule in (raised from 12)"
  ~ AASLD-2024-R08 -> AASLD-2026-R08 (resmetirom)
    evidence_grade: B -> A
    cite_pmids: + ['39501012']
    related_nits: + ['FIB-4', 'LSM', 'PDFF']
```

## 6. 외부 네트워크 호출 점검
- main.py 내 `urllib`, `requests`, `socket` 등 import 없음 (stdlib + difflib + csv + json + argparse만 사용).
- Mock data 기반.

## 7. 결론
- 모든 8개 서브커맨드 정상 작동.
- 권고 diff, evidence-trace cascade alert, NIT cutoff drift, MASLDStager rule 영향 매핑 모두 의도대로 출력.
- 디스클레이머 모든 서브커맨드 출력 끝에 부착.
- FAILED 항목 없음.

## 8. 디스클레이머
참고용·연구용. KASL/AASLD/EASL 가이드라인 정식 의견서 제출 전 본인·위원회 검토 필요. mock data 기반 데모이며 실제 환자 진료에 직접 사용할 수 없음.
