# QA — GLP1DiscontRebound-Kor

빌드 일시: 2026-05-20  
빌드 위치: `/Users/sangjoonpark/claude daily project/2026 metabolic daily idea/projects/2026-05-20-2-glp1-discont-rebound-kor/`

## 검수 결과

| # | 항목 | 결과 | 비고 |
|---|------|------|------|
| 1 | `ast.parse(app.py)` | ✅ | syntax OK |
| 2 | `ast.parse(data/generate_synthetic.py)` | ✅ | syntax OK |
| 3 | `python3 data/generate_synthetic.py` | ✅ | cohort (450, 41) · longitudinal (11120, 8) |
| 4 | `pd.read_csv(synthetic_glp1_cohort.csv)` | ✅ | shape=(450, 41) |
| 5 | `pd.read_csv(synthetic_longitudinal.csv)` | ✅ | shape=(11120, 8) |
| 6 | `python3 -m py_compile app.py` | ✅ | bytecode OK |
| 7 | `requirements.txt` 존재 + 7개 패키지 | ✅ | streamlit, pandas, numpy, plotly, lifelines, statsmodels, python-docx |
| 8 | `json.load(assets/reference_curves.json)` | ✅ | parse OK |

## 결함 / 경고

- 없음. 모든 검수 통과 (재시도 0회).

## 의학 디스클레이머 확인

- ✅ `README.md` 상단 경고 박스
- ✅ `app.py` `disclaimer_box()` 메인 화면 상단 노출
- ✅ 푸터 caption에도 재차 명시
- ✅ `assets/reference_curves.json` `_meta.disclaimer` 필드
- ✅ 생성되는 docx 리포트에도 디스클레이머 문단 포함

## 합성 데이터 요약

- cohort: **450행 × 41컬럼** (요구사항 n≥400 충족)
- longitudinal: **11,120행 × 8컬럼**, 중단 환자만 -52~+104주 (4주 간격)
- seed=20260520 (재현 가능)
- 약물 분포: semaglutide 40% · liraglutide 10% · tirzepatide 40% · orforglipron 10%
- 중단율 ≈ 62% (사유 7종: AE / cost / shortage / goal_met / pregnancy / CV_event / other)
- STEP-1 ext / SURMOUNT-4 rebound 패턴 반영 (영구 중단 ~67% regain, holiday ~30%)

## 제약 준수

- ✅ 외부 네트워크 호출 0
- ✅ 전역 패키지 설치 0 (`requirements.txt` 제공)
- ✅ 24시간 범위 내 1회 빌드 완료
- ✅ 다른 형제 빌드 디렉토리 미수정
