# QA 검수 로그 — DiaRescueMiner-Kor

- 날짜: 2026-06-05
- 환경: macOS (Darwin 25.5.0), Python 3.9.6
- 라이브러리 상태: streamlit **미설치**, networkx **미설치** → 따라서 `main.py` 가
  표준 라이브러리만으로 동작해야 한다는 제약을 실제 환경에서 그대로 검증함.

## 제약 준수 확인
- ✅ 외부 네트워크/API 호출 없음 — 코드 전체가 로컬 `data/terminated_programs.json` 만 사용.
- ✅ 전역 패키지 설치 없음 — pip 설치 미수행. `main.py` 는 argparse/json/os/sys/textwrap/collections 등 표준 라이브러리만 import.
- ✅ `main.py` 에 `import streamlit`/`import networkx` 없음 (grep 확인: NONE).
- ✅ app.py 는 streamlit 의존(미설치 환경에서도 import 라인은 try 없이 두되, networkx 는 try/except 로 optional 처리). 실행은 streamlit 필요.
- ✅ 의학적 안전성 디스클레이머: main.py 배너·--help epilog·README·app.py 상단 모두 포함.

## 검수 항목 결과

| # | 검수 항목 | 명령 | 결과 |
|---|-----------|------|------|
| 1 | main.py 구문 파싱 | `python3 -c "import ast; ast.parse(open('main.py').read())"` | ✅ OK main.py |
| 2 | app.py 구문 파싱 | `python3 -c "import ast; ast.parse(open('app.py').read())"` | ✅ OK app.py |
| 3 | 데이터 로드 | `python3 -c "import json; json.load(open('data/terminated_programs.json'))"` | ✅ 13 programs |
| 4 | `--help` | `python3 main.py --help` | ✅ usage/옵션/디스클레이머 정상 출력 |
| 5 | `--list` | `python3 main.py --list` | ✅ 13종 레지스트리 테이블 출력 |
| 6 | `--summary` | `python3 main.py --summary` | ✅ 클래스/실패축/표적유효성 분포 + 가설 57개 |
| 7 | `--top 8` | `python3 main.py --top 8` | ✅ 상위 8개 가설 + 최소검증설계 출력 |
| 8 | `--top 5 --verbose` | (실행) | ✅ audit 근거추적 블록 포함 |
| 9 | `--drug fasiglifam` | `python3 main.py --drug fasiglifam` | ✅ 상세 + rescue 가설 3개 |
| 10 | `--json` | `python3 main.py --top 2 --json` | ✅ 유효 JSON, items=2 |
| 11 | 인자 없이 실행 | `python3 main.py` | ✅ 기본 top 10 가설 출력 (stdlib only) |
| 12 | main.py 의존성 점검 | `grep -nE "import (streamlit|networkx)" main.py` | ✅ NONE |

## 점수 엔진 sanity check
- 생성 가설 수: 57개 (13 프로그램 × 평균 ~4.4 레버).
- rescue_score 분포: n=57, min=0.365, max=1.0, **distinct=52** → 점수가 의미있게 분산됨(거의 모두 고유값).
- 상위: Atrasentan/Sotagliflozin (표적유효성 강함 + 다축지지) — 도메인 직관과 부합
  (둘 다 실제로 enrichment/적응증 reframing 으로 "부활"된 역사적 사례).
- 참고(⚠️): 상위 3개가 1.000 으로 clamp 됨. 합성 데모 점수이므로 의도된 동작이며,
  순위 자체는 합리적. 임상적 정밀도가 아닌 발상 보조용임을 디스클레이머로 명시.

## 재시도 이력
- 재시도 불필요. 1차 작성에서 12개 검수 항목 전부 통과.

## 종합 판정: ✅ PASS
- 모든 필수 파일 생성: main.py, app.py, data/terminated_programs.json, README.md, QA.md
- 모든 검수 명령 통과, 제약(오프라인/무설치/stdlib-only main.py/디스클레이머) 준수.
- 미해결 FAILED 항목 없음.
