# QA — ObesityTrialProtocolAmend-Kor

**검수 일자**: 2026-05-28
**검수자**: build agent (Claude)
**결과**: PASS

---

## 1. 매뉴얼 확인 (글로벌 규칙 1)

- `/Users/sangjoonpark/claude daily project/2026 metabolic daily idea/manuals/` 폴더 미존재 확인.
- 일반적인 방식으로 진행함을 사용자에게 보고.

---

## 2. 파일 구문 체크

```bash
$ python3 -c "import ast; ast.parse(open('app.py').read()); print('app.py OK')"
app.py OK
$ python3 -c "import ast; ast.parse(open('main.py').read()); print('main.py OK')"
main.py OK
$ python3 -c "import ast; ast.parse(open('core.py').read()); print('core.py OK')"
core.py OK
```

세 파일 모두 syntax PASS.

---

## 3. CLI `--help`

```bash
$ python3 main.py --help
usage: obesity-trial-amend-kor [-h] [--summary] [--top N] [--alerts] ...
```

streamlit / pandas 미설치 상태에서도 동작 가능하도록 lazy import 적용 (각 cmd 함수 안에서 `from core import ...`).

---

## 4. Mock data 로드

```bash
$ python3 -c "import json; t=json.load(open('data/trials.json')); r=json.load(open('data/scoring_rules.json')); print(f'trials: {len(t)}, amendments_total: {sum(len(x[\"amendments\"]) for x in t)}, rules: {len(r[\"rules\"])}, term_categories: {len(r[\"termination_reason_categories\"])}')"
trials: 31, amendments_total: 64, rules: 12, term_categories: 5
```

- trial 31개 (요구 ≥30 충족)
- amendment 총 64건 (각 trial 1~4건, 평균 2.06건)
- 채점 규칙 12개, 종료사유 카테고리 5개

5개 registry 분포:
- ClinicalTrials.gov: 16
- EudraCT: 4
- jRCT: 3
- CRIS-Korea: 5
- ANZCTR: 3

---

## 5. CLI 기능 동작 확인

| 명령 | 결과 |
|---|---|
| `--summary` | PASS — 전체 31 trial / 64 amendment / 평균 위기점수 2.87점 / ALERT 4, WATCH 15 |
| `--top 5` | PASS — REDEFINE-1(8점) · SURMOUNT-MMO/OBESITAS-EU/SURPASS-CVOT-EU(6점) · MERIDIAN-Obesity(5점) |
| `--alerts` | PASS — ALERT/WATCH 레벨 분류, 종료사유(AE/Funding/Recruitment 등) 자동 분류 동작 |
| `--trial CRIS-KCT0009122` | PASS — KOREA-IDB-MA biosimilar trial의 comparator 변경(★★★) 상세 출력 |
| `--korea` | PASS — 9건 한국 sponsor/site trial 출력 (LG, 종근당, 동아, 일동, Severance/유한, Eli Lilly Korea site 포함) |
| `--rob2` | PASS — RoB2 5개 도메인 신호 자동 평가 |
| `--registry CRIS-Korea --summary` | PASS — registry 필터 동작 |
| `--export-digest /tmp/d.md` | PASS — 10,637 chars Markdown 생성 |
| `--export-csv /tmp/t.csv` | PASS — 31 row CSV 생성 |

---

## 6. 핵심 기능 5개 — 구현 확인

1. ✅ **5개 registry ingest + 항비만 필터** — `core.is_obesity_trial()`이 condition/intervention/drug_class 키워드 매칭. 31/31 trial 모두 필터 통과 (mock data가 모두 항비만 trial 구성).
2. ✅ **Amendment delta 자동 추출** — `score_amendment()`가 type별 before/after diff 추출. Streamlit Tab 2에서 timeline 표시. CLI `--trial`에서 상세 history 출력.
3. ✅ **중요도 채점 + leading indicator alert** — `data/scoring_rules.json` 12개 rule + composite crisis score + ALERT(≥6점) / WATCH(≥3점) threshold + termination 사유 5개 카테고리 자동 분류.
4. ✅ **Dashboard + 경쟁 landscape** — Streamlit Tab 4: drug_class · sponsor · country별 위기점수 bar chart, readout D-day 카운트다운 표, 한국 sponsor 하이라이트. CLI `--summary`에서 동일 집계.
5. ✅ **Weekly digest + RoB2 보조** — `build_weekly_digest()` Markdown 생성 (alert + ★★ 이상 amendment + 위기점수 top 10 + readout D-day + 한국 trial 5섹션). `rob2_view()`로 RoB2 5도메인 신호. competitor intelligence CSV export.

---

## 7. 기술 제약 준수

- ✅ Python Streamlit 사용 (`streamlit run app.py`)
- ✅ 외부 네트워크 / 유료 API 호출 없음 (모두 `data/*.json` mock)
- ✅ 전역 패키지 설치 명령 없음 (`requirements.txt`에만 streamlit/pandas 명시)
- ✅ LLM 호출 0 (rule-based 채점)
- ✅ 디스클레이머 README · CLI 모든 명령 헤더 · Streamlit 메인 화면에 노출
- ✅ CLI 진입점 별도 제공 (`main.py`)

---

## 8. 의도 부합 점검

- 요청 핵심 기능 5개 모두 구현 (필터 / delta / 채점·alert / dashboard / digest+RoB2).
- 명시된 trial 이름(SURMOUNT · STEP · REDEFINE · TRIUMPH · ESSENCE · MERIDIAN · VK2735 · orforglipron · CagriSema · survodutide) 모두 mock data에 반영.
- 한국 sponsor (LG · 종근당 · 동아 · 일동 · 유한 · Severance) 모두 별도 trial로 등재.
- amendment 타입(primary/secondary endpoint, sample size, enrollment criteria, exclusion, comparator, blinding, analysis plan, target completion date, status, sponsor, funding) 모두 채점 규칙·mock data로 커버.
- 디스클레이머 노출 위치 3곳 이상.

추가 구현:
- jRCT/CRIS-Korea/EudraCT trial id 포맷을 각 registry 규칙대로 작성.
- competitor intelligence CSV export 추가 (docx 대신 — docx export는 외부 라이브러리 의존 회피 차원).

---

## 9. 재현성

```bash
cd "/Users/sangjoonpark/claude daily project/2026 metabolic daily idea/projects/2026-05-28-2-obesity-trial-protocol-amend-kor"
pip install -r requirements.txt
streamlit run app.py    # 브라우저 UI
python3 main.py --help  # CLI
```

---

## 10. 알려진 제한

- mock data는 시연용 — 실제 amendment 사유·날짜·표본 수와 다름 (README 명시).
- docx export는 미구현 (Markdown / CSV로 대체). 추가 시 `python-docx` 의존 필요.
- ClinicalTrials.gov v2 / EudraCT / jRCT / CRIS / ANZCTR 실 API 연동은 별도 구현 필요. 본 도구는 amendment scoring 로직 / UI 프로토타입 목적.
