# MASHTrialPulse

MASH 신약 파이프라인·규제 일간 트래커. ClinicalTrials.gov + FDA/EMA/PMDA + sponsor IR + AASLD abstract를 일간 fetch(합성)하여 어제 대비 변화가 있을 때만 daily digest를 생성한다.

## 디스클레이머

본 도구는 연구·교육 목적의 참고용이며, 임상시험 등록·MASH 처방·임상 의사결정 근거로 사용할 수 없습니다. 모든 데이터는 합성(synthetic)입니다. 실제 회사 IR, SEC filing, FDA decision, EMA/PMDA 결정과는 무관합니다. 임상 적용을 위해서는 반드시 1차 자료(공식 사이트)를 직접 확인하십시오.

## 도메인 / 카테고리

- 도메인: MASLD (MASH 신약)
- 카테고리: 연구 알림 (PubMed/ClinicalTrials.gov 큐레이션 + 규제기관 + IR diff)

## 핵심 기능 (5개)

1. MASH 약물 vocabulary 큐레이션 (50+ active candidates, target mechanism: THR-β / FGF21 / GLP-1 / GIP-GLP / GCG-GLP / PPAR / ACC / SCD1 / FASN / DGAT2 / FXR / FGF19 / SGLT2 / ASK1 등 분류)
2. ClinicalTrials.gov API v2 daily snapshot (mock) → 어제 대비 phase / status / results posted / AE term / primary completion field-level diff 추출 (`difflib` + dict diff)
3. FDA NewsRoom + EMA EPAR + PMDA news mock daily HTML diff
4. 주요 sponsor (Madrigal, 89bio, Akero, Inventiva, Boehringer, Lilly, Novo, Pfizer, Altimmune, Viking, Sagimet, NGM, Enyo 등) IR + SEC EDGAR 8-K filing mock daily diff
5. 변화 발생 시에만 (a) 한국어 1줄 요약(rule-based 템플릿, 외부 LLM 미사용) (b) `safety / efficacy / regulatory / pipeline` 분류 태그 (c) 영향받는 약물·표적 리스트와 함께 daily digest (Markdown / HTML) 생성

## 디렉토리 구조

```
2026-04-26-3-mash-trial-pulse/
├── README.md
├── main.py                     # CLI 진입점
├── mtpulse/
│   ├── __init__.py
│   ├── vocab.py                # 50+ MASH 약물 + mechanism + sponsor
│   ├── snapshot.py             # CTG/FDA/EMA/PMDA/IR/AASLD JSON 로더
│   ├── differ.py               # 어제 vs 오늘 snapshot diff event 추출
│   ├── classifier.py           # diff event → 4개 태그 분류
│   ├── summarizer.py           # rule-based 한국어 1줄 요약 템플릿
│   └── digest.py               # daily digest Markdown / HTML 빌더
├── data/
│   ├── ctg_snapshot_2026-04-25.json     # 전날 CTG (12건)
│   ├── ctg_snapshot_2026-04-26.json     # 오늘 CTG (14건, 변화 6+건 포함)
│   ├── fda_news_2026-04-25.json         # 전날 FDA (3건)
│   ├── fda_news_2026-04-26.json         # 오늘 FDA (5건, 신규 2건)
│   ├── ema_epar_2026-04-26.json         # EMA mock (2건)
│   ├── pmda_news_2026-04-26.json        # PMDA mock (1건)
│   ├── ir_filings_2026-04-26.json       # 회사 IR + SEC 8-K (5건)
│   └── aasld_abstracts_2026.json        # AASLD abstract (7건)
├── output/
│   └── .gitkeep
└── QA.md
```

## 실행법

```bash
cd "projects/2026-04-26-3-mash-trial-pulse"

# 도움말
python3 main.py --help

# Markdown digest
python3 main.py --offline --date 2026-04-26 --format md \
    --output output/digest.md

# HTML digest
python3 main.py --offline --date 2026-04-26 --format html \
    --output output/digest.html

# differ 자체 검증
python3 main.py --self-check
```

표준 라이브러리만으로 동작합니다. 별도 dependency 설치 불필요.

## 검수 체크리스트 (요약)

자세한 결과는 `QA.md` 참조.

1. 모든 .py 파일 syntax 통과 (`python3 -c "import ast; ast.parse(...)"`).
2. `python3 main.py --help` → usage 출력.
3. `python3 main.py --offline --date 2026-04-26 --format md --output output/digest.md` → exit 0.
4. `python3 main.py --offline --date 2026-04-26 --format html --output output/digest.html` → HTML 출력.
5. 출력 digest에 한국어 요약 + 분류 태그 + 영향 약물 모두 포함.
6. 모든 mock JSON 파일 로드 성공.
7. differ 단위 assertion: 어제에 없던 trial이 오늘 있으면 `new_trial` event 반환.
8. 디스클레이머가 README와 digest 모두에 포함.

## 출처 (모두 합성)

- ClinicalTrials.gov API v2 — synthetic snapshot
- FDA NewsRoom — synthetic
- EMA EPAR — synthetic
- PMDA news — synthetic
- Sponsor IR pages + SEC EDGAR 8-K — synthetic
- AASLD The Liver Meeting 2026 abstracts — synthetic

## 제약 (현재 MVP)

- 외부 네트워크 호출 절대 금지. 모든 데이터는 합성.
- 외부 LLM / 유료 API 미사용.
- 한국어 요약은 rule-based 템플릿("{drug}의 {sponsor}이 {date}에 {phase} 단계에서 {event}를 보고함" 형태).
- 표준 라이브러리만 (json / csv / datetime / pathlib / argparse / difflib / hashlib / html). 전역 패키지 설치 불필요.
- 24시간 시간창 범위 확장 금지 (어제↔오늘 단 하루 diff만).

## Future enhancements (구현 보류)

- llama.cpp + Llama 3 8B 로컬 inference 기반 한국어 요약 품질 개선.
- BeautifulSoup + 실제 FDA / EMA / PMDA HTML 파서.
- `sec-edgar-downloader`로 8-K 본문 fetch.
- DuckDB로 snapshot 시계열 archive.
- `clinicaltrials.gov` 공식 v2 API 실제 호출 (rate limit 준수).
- PubMed E-utilities 통합.

## 안전성 / 윤리 사항

- 본 디지스트는 임상 의사결정 근거로 사용할 수 없습니다.
- 합성 데이터를 인용하여 실제 회사·약물의 안전성·유효성·승인 여부를 단정하지 마십시오.
- 실제 운영 시에는 1차 자료를 반드시 확인하고, 의학적 판단은 자격을 갖춘 전문가의 검토를 받으십시오.
