# QA.md — ObesityGrantIITRadar 검수 보고서

작성일: 2026-05-07
빌더: Claude (Opus 4.7) 자율 빌드 agent

## 1. Python 구문 체크
- 명령: `python3 -c "import ast; ast.parse(open('main.py').read())"`
- 결과: **PASS** (SYNTAX OK)

## 2. CLI Help
- 명령: `python3 main.py --help`
- 결과: **PASS** — 5개 서브커맨드 (ingest, match, deadlines, iit-watch, digest) 정상 노출

## 3. 데이터 파일 로드 검증
- `data/grants.json` — 65 entries, grant_id 유일성 OK
- `data/researchers.json` — 7 entries (R001~R007)
- `data/clinicaltrials_gov_subinvestigator.json` — 15 entries (NCT06000001~15)
- `data/company_iit_calls.json` — 15 entries
- `data/mentors.json` — 6 entries
- 결과: **PASS**

## 4. 서브커맨드 실행 검증

### 4.1 `ingest --source all`
- 결과: **PASS** — 65 entries 적재, source 별 분포 (KHIDI/NRF/NIH/EU-Horizon/AMED 등 17개 source) 출력. 디덥/마감일·예산 결손 0.

### 4.2 `ingest --source khidi`
- 결과: **PASS** — KHIDI 소스만 필터링 정상.

### 4.3 `match --researcher R001 --top 5`
- 결과: **PASS**
- 검증: 연구자 R001 김철수 (Seoul National University Hospital, mid, GLP-1/tirzepatide/CGM 전문)
- Top 1: KHIDI-2026-001 (비만 GLP-1RA RWE) — score **72.9/100**
  - expertise=0.667, publication=0.389, site=1.0, drug=1.0, recruit=0.85
  - 0.40*0.667 + 0.20*0.389 + 0.15*1.0 + 0.15*1.0 + 0.10*0.85 = 0.2668 + 0.0778 + 0.15 + 0.15 + 0.085 = **0.7296** ≈ 72.9 ✅
- 멘토 매칭: 오영석 교수 (GLP-1/semaglutide/tirzepatide overlap)

### 4.4 `match --researcher R002 --top 5`
- 결과: **PASS** — MASLD senior 박영희에게 MADRIGAL/KASL/KHIDI MASLD grant 우선 노출 OK.

### 4.5 `deadlines --days 30`
- 결과: **PASS** — D-1/D-3/D-7/D-14/D-30 단계로 분류, 각 항목 일수 정렬 OK.
- D-1: KDA-2026-014 (1일) — 정확

### 4.6 `iit-watch --country korea`
- 결과: **PASS** — 15개 기업 IIT call + 14개 sub-investigator open Korean trial 출력.

### 4.7 `digest --korean --researcher R002`
- 결과: **PASS** — 한국어 markdown digest 생성, 카테고리별 그룹 (EU Horizon / NIH / 국내 정부 / 국내 학회 / 기업 IIT call) 분류 OK.
- `digest.md` 파일 자동 저장 확인.

### 4.8 `digest` Telegram/Slack alert 시뮬레이션
- 결과: **PASS** — stdout에 다음 형식 출력 확인:
  ```
  [TELEGRAM SIMULATED] researcher: 김철수 / 3건 마감 임박 (D-7 이내) — 최상위: KDA-2026-014 (KDA-Lilly tirzepatide IIT 공모)
  [SLACK SIMULATED] #grant-radar > 김철수 적합 grant 10건, D-7 이내 3건. 자세한 내용은 digest.md 참조.
  ```

## 5. 디스클레이머 포함 확인
- 모든 서브커맨드 출력 끝에 `[디스클레이머] 본 도구는 mock data 기반 데모 MVP입니다. 참고용이며 실제 grant 신청 전 공고 원문 및 연구자 본인 검토 필수.` 포함 OK.
- README.md 7번 섹션, digest.md 끝, QA.md(본 문서) 모두 디스클레이머 포함.

## 6. 종합 결과
**빌드 상태: ✅ PASS**

- 5개 서브커맨드 모두 정상 작동
- mock data 5개 파일 로드 OK
- 적합도 매칭 알고리즘 (5개 가중 weight) 검증 완료
- 디스클레이머 포함
- 외부 네트워크 호출 없음 (stdlib only)
- 한국어 출력 (UTF-8) 정상

## 7. 알려진 한계 (FAILED 없음, 단 향후 개선 권장)
- TF-IDF 미적용 (단순 토큰 set 기반 jaccard) — 실제 운영 시 sub-domain 표준화 + 임베딩 권장
- ETL 어댑터 미구현 — 실제 KHIDI/NRF/NIH 사이트 연동 필요
- ORCID API 미연동
- Telegram/Slack 실제 webhook 미연결 (stdout 시뮬레이션)

---
_본 QA 보고서는 mock data 기반 데모 MVP에 대한 검수입니다._
