# CHANGELOG

## [2026-05-01]

### 수행 내용
- ObesityCVHypoMap MVP 초기 구축. 항비만약물 9 × CV outcome subtype 11 × baseline
  phenotype 5 × mediation pathway 5 의 6D 온톨로지를 합성 데이터로 정의.
- CLI(`main.py`) 구현: `--top N`, `--drug X`, `--korea-only`, `--write`, `--summary`
  옵션. 표준 라이브러리만 사용 (argparse, json, dataclasses, math, pathlib, sys).
- 가중 score = 1.5·gap + 1.2·FAERS + 1.0·trial+한국 + 0.8·preprint + 0.7·mediation
  + 1.3·korea_rwe 의 6 component ranking.
- Mediation analysis framework: VanderWeele / Imai-Keele-Tingley 모델 권고, 검정력
  toy simulation, surrogate marker (% TBWL, ΔHbA1c, hs-CRP, NT-proBNP, HRV).
- 4 종 산출물 자동 생성: top hypothesis cards, grant 1-page concept, AHA 영문
  abstract, KSSO 한국어 초록 (모두 디스클레이머 포함).

### 주요 결정 사항
- 외부 네트워크 호출 금지 명세에 따라 PubMed/CTG/FAERS/medRxiv를 모두 mock
  `data/evidence.json` 으로 대체. 향후 키만 교체하면 실데이터로 swap 가능한
  lookup 구조로 설계 (`_ev_lookup`).
- drug-pair (~9,900 cell)는 v2 확장 포인트로 미루고 single-drug 9×11×5=495 cell로
  단순화. 카드 가독성 우선.
- pydantic / scipy 대신 dataclass + math + 정규분포 erf 근사로 의존성 0 달성.
- 한국 RWE 가능성 score는 (drug iis_potential 0.6w + cv incidence 0.25w + pheno
  prevalence 0.15w) 의 rule-based 가중합. NHIS/HIRA 실데이터는 mock.

### 변경된 파일
- `main.py` — 신규 (CLI + 데이터 로더 + 스코어링 + 4종 markdown 렌더러)
- `data/drugs.json` — 신규 (9 drug, class/TBWL/한국허가/IIS potential)
- `data/cv_subtypes.json` — 신규 (CV 11종, 한국 발생률, ICD-10)
- `data/phenotypes.json` — 신규 (baseline 5종, 한국 유병률)
- `data/mediations.json` — 신규 (5 pathway, surrogate, 분석 모델)
- `data/evidence.json` — 신규 (mock PubMed/CTG/FAERS/preprint)
- `outputs/top_hypothesis_cards.md` — 자동 생성 (top 50)
- `outputs/grant_draft.md` — 자동 생성
- `outputs/aha_abstract.md` — 자동 생성
- `outputs/ksso_abstract.md` — 자동 생성
- `README.md` — 신규
- `QA.md` — 신규

### 재현 방법
```bash
cd "/Users/sangjoonpark/claude daily project/2026 metabolic daily idea/projects/2026-05-01-3-obesity-cv-hypo-map"
python3 -c "import ast; ast.parse(open('main.py').read())"   # syntax check
python3 main.py --help                                       # CLI help
python3 main.py --top 50 --write                             # generate outputs/
python3 main.py --korea-only --drug semaglutide --summary    # filter test
```
