# CHANGELOG — ObesityGrantIITRadar

## [2026-05-07]

### 수행 내용
- 비만대사질환 grant/IIT call multi-source 자동 알림 + 적합도 매칭 MVP 빌드.
- 5개 서브커맨드 (ingest / match / deadlines / iit-watch / digest) 구현.
- Mock data 5개 파일 (grants 65건, researchers 7명, ClinicalTrials.gov sub-investigator 15건, 기업 IIT call 15건, mentors 6명) 생성.
- 적합도 매칭 알고리즘 구현 (expertise 0.40 + publication 0.20 + site_capability 0.15 + drug 0.15 + Korean recruit 0.10).
- 한국어 weekly digest 자동 생성 + Telegram/Slack alert stdout 시뮬레이션.
- README, QA, CHANGELOG 작성.

### 주요 결정 사항
- **stdlib only**: 사용자 지시상 외부 패키지 설치 금지. pandas/numpy 의존성 회피, json/argparse/datetime/pathlib만 사용.
- **TODAY 고정**: 재현성을 위해 `date(2026,5,7)`로 하드코딩. 실제 운영 시 `datetime.today()` 권장.
- **D-7 boost**: digest 생성 시 마감 임박 grant에 +5/+2 boost 적용 — 단순 score 정렬은 마감일 무시 위험.
- **이중 채널 IIT**: grants.json에도 IIT 항목 포함하고 별도 company_iit_calls.json도 유지 — match 알고리즘 적용 필요할 때(grants)와 raw IIT call 모니터링(company_iit) 분리.
- **멘토 매칭**: simple keyword overlap. 임베딩/TF-IDF 도입 시 품질 향상 가능.
- **적합도 score 정규화**: 0~100 스케일.

### 변경된 파일
- `main.py` — CLI entry + 5 subcommands + 적합도 알고리즘
- `data/grants.json` — 65 grants
- `data/researchers.json` — 7 researchers (R001~R007)
- `data/clinicaltrials_gov_subinvestigator.json` — 15 trials
- `data/company_iit_calls.json` — 15 IIT calls
- `data/mentors.json` — 6 mentors
- `README.md` — 사용자 매뉴얼
- `QA.md` — 검수 보고서
- `digest.md` — digest 실행 시 자동 생성 (sample run 결과)

### 재현 방법
```bash
cd "/Users/sangjoonpark/claude daily project/2026 metabolic daily idea/projects/2026-05-07-2-obesity-grant-iit-radar"
python3 -c "import ast; ast.parse(open('main.py').read())"   # 구문 체크
python3 main.py --help                                        # 도움말
python3 main.py ingest --source all                           # 65 grants
python3 main.py match --researcher R001 --top 5               # mid PI 매칭
python3 main.py match --researcher R002 --top 5               # MASLD senior
python3 main.py deadlines --days 30                           # 마감 임박
python3 main.py iit-watch --country korea                     # 기업 IIT
python3 main.py digest --korean --researcher R001             # 한국어 digest
```

데이터 파일 결손 시 main.py가 stderr에 에러 출력 후 exit. data/ 폴더와 5개 JSON 파일 모두 존재해야 함.
