# CHANGELOG — ObesityRecruitFeas-Kor

## [2026-05-17]

### 수행 내용
- 항비만 임상연구 모집 feasibility 계산기 MVP 빌드.
- 합성 KNHANES microdata 생성기(`data/generate_knhanes_synthetic.py`) 작성
  및 산출물 CSV(7,000행 × 25열) 생성.
- 핵심 계산 로직 `core.py` 구현: 적격성 기준 적용·가중 인구 외삽(95% CI)·
  기준 민감도(tornado)·screen-fail 예측·모집 timeline Monte-Carlo·
  국문 feasibility 리포트 생성.
- Streamlit UI `app.py` (5개 탭) 및 argparse CLI `main.py`(`--demo`/`--help`) 작성.
- README.md, QA.md 작성. 전 검수 항목 통과.

### 주요 결정 사항
- **합성 데이터 사용**: 실제 KNHANES microdata는 공개 다운로드/네트워크
  접근이 제한되므로, 공개 유병률 추세에 근접하도록 난수 생성한 합성
  데이터셋으로 대체. seed 고정으로 재현성 확보.
- **로직/UI 분리**: Streamlit 미설치 환경을 고려해 모든 계산을 `core.py`
  (pandas/numpy만)에 두고 `app.py`(UI)·`main.py`(CLI)는 얇은 래퍼로 구성.
  CLI만으로 전체 분석을 오프라인 시연 가능.
- **MASLD/OSA 대용지표**: KNHANES형 데이터에 영상·수면검사가 없으므로
  MASLD는 BMI>=25 + ALT 상승, OSA는 STOP-Bang 유사 대용 점수로 정의.
- **신뢰구간**: 복합표본 분산을 Kish 근사 설계효과(deff)로 단순 보정해
  가중 비율의 95% CI 산출.
- **데이터 파라미터 튜닝**: 1차 생성 시 고도비만 4.1%·고혈압 20.9%로
  목표에서 벗어나, BMI 분산·혈압 절편을 조정해 목표 범위에 재정렬.

### 변경된 파일
- `data/generate_knhanes_synthetic.py` — 신규: 합성 microdata 생성기
- `data/knhanes_synthetic.csv` — 신규: 생성 산출물 (7,000행)
- `core.py` — 신규: 핵심 계산 로직 (pandas/numpy)
- `app.py` — 신규: Streamlit UI
- `main.py` — 신규: argparse CLI 진입점
- `README.md` — 신규: 목적·기능·실행법·합성데이터 주의·검수 체크리스트
- `QA.md` — 신규: 검수 로그
- `CHANGELOG.md` — 신규: 본 파일

### 재현 방법
1. `cd data && python3 generate_knhanes_synthetic.py` — 합성 CSV 생성
2. `cd .. && python3 main.py --demo` — CLI로 전체 feasibility 분석 확인
3. (선택) `streamlit run app.py` — 웹 UI 실행
4. 검수: `python3 -c "import ast; ast.parse(open('core.py').read())"` 등
   4개 Python 파일 AST 파싱 + `python3 main.py --help`/`--demo` 동작 확인
- 필수 패키지: pandas, numpy (CLI/core), streamlit (웹 UI, 선택)
