# MASLDPreprintRadar (매슬드프리프린트레이더)

**오프라인 우선 MASLD/MASH 프리프린트 레이더** — medRxiv/bioRxiv 프리프린트를 자동
수집·구조화하고, 정식 출판 전환까지 추적하며, 무결성 경고를 띄우고, 주간
Markdown 다이제스트로 정리해 주는 연구 알림 MVP.

- **도메인 / Domain:** MASLD (대사이상 관련 지방간질환) · MASH / NAFLD / NASH
- **카테고리 / Category:** 연구 알림 (프리프린트 큐레이션 + 출판 전환 추적)
- **MVP 한 줄:** MASLD/MASH 신약·바이오마커 프리프린트를 자동 수집·구조화하고
  정식 출판 전환까지 추적하는 오프라인 우선 프리프린트 레이더.

---

## ⚕️ 의학적 디스클레이머 (Medical Disclaimer)

> **참고용·연구용입니다.** 여기 표시되는 프리프린트는 **peer-review(동료심사)를
> 통과하지 않은** 미검증 자료이며, 오류·과장·미확인 주장을 포함할 수 있습니다.
> **어떤 출력물도 임상 결정의 근거로 사용하지 마십시오.**
> 본 MVP의 모든 데이터는 **합성(synthetic) 데이터**로, 실제 연구·실제 DOI·실제
> 저자와 무관합니다.
>
> For reference / research use only. Preprints are **NOT peer-reviewed**. Do
> **NOT** use any output here as a basis for clinical decisions. All data is
> **synthetic**.

---

## 핵심 기능 5가지

1. **도메인 폴링 (Domain polling)** — MASLD/MASH/NAFLD/NASH · fibrosis · MRI-PDFF ·
   FIB-4 · resmetirom/THR-β/FGF21 등 **가중 키워드 사전**으로 시드를 폴링하고
   **관련도 점수(relevance)** 로 랭킹. (`--feed`)
2. **구조화 추출 (Structured extraction)** — 초록·필드에서 중재(intervention)·표적
   (target)·연구설계·1차 결과변수(fibrosis 단계, MRI-PDFF, ALT 등)·효과 방향을
   **규칙기반 정규식/키워드**로 추출해 카드화. (`re`, `difflib` 만 사용)
3. **출판 전환 추적 (Publication tracking)** — 각 프리프린트의 출판 상태
   (**출판됨 / 미출판 / 철회**)와 **전환 소요일수**(preprint→journal days)를 표시.
   (Europe PMC/Crossref 대조를 모사한 합성 필드 사용; 네트워크 호출 없음.) (`--unpublished`)
4. **무결성 경고 (Integrity warnings)** — 7종 자동 배지:
   `PEER_REVIEW`(미동료심사) · `RETRACTED`(철회) · `AMBIGUOUS_ENDPOINT`(결과변수 모호) ·
   `OVERCLAIM`(과장 표현) · `UNDISCLOSED`(중재/표적 미공개) ·
   `DUP_AUTHORS`(동일 저자 중복 게시; Jaccard+제목 유사도). (`--warnings`)
5. **레이더 다이제스트 (Radar digest)** — 신규(NEW)/상태변동 프리프린트를
   **관심 표적군별로 그룹핑한 주간 Markdown 피드**로 출력. (`--digest`)

추가로 정적 **`index.html` 카드 피드**(검색 + 상태/표적 필터, vanilla JS, CDN 없음)와
SQLite 기반 `--stats` 요약을 제공합니다.

---

## 실행법

> 표준 라이브러리만 사용합니다. 별도 설치(pip) 불필요. Python 3.8+.

```bash
cd "projects/2026-06-06-3-masld-preprint-radar"

python3 main.py --help                       # 전체 옵션
python3 main.py --feed                        # 카드 피드 (관련도순)
python3 main.py --feed --status unpublished   # 미출판만
python3 main.py --feed --min-relevance 25     # 관련도 25점 이상
python3 main.py --card synth001               # 단일 DOI 전체 카드 (부분일치)
python3 main.py --target FGF21                # 표적군 필터
python3 main.py --unpublished                 # 출판 미전환 추적
python3 main.py --warnings                    # 무결성 경고 목록
python3 main.py --stats                       # SQLite 요약 통계
python3 main.py --digest --asof 2025-09-25 --window 30 --out radar_digest.md
python3 main.py --html                        # index.html 생성
python3 main.py --online                      # [비활성] 네트워크 호출 안 함
```

`index.html`은 생성 후 브라우저로 바로 열면 됩니다(로컬, 네트워크 불필요).

---

## 파일 구성

```
2026-06-06-3-masld-preprint-radar/
├── README.md              # 본 문서
├── main.py                # Python CLI 진입점 (stdlib only)
├── data/
│   └── preprints.json     # 합성 프리프린트 시드 22편
├── index.html             # 정적 카드 피드 (main.py --html 로 재생성)
├── radar_digest.md        # 샘플 다이제스트 (main.py --digest 로 재생성)
└── QA.md                  # 검수 로그
```

---

## 오프라인 우선 / 제약

- **외부 네트워크/API 호출 없음.** 모든 데이터는 `data/preprints.json` 합성 시드.
- `--online`은 **의도적으로 비활성**(`online_poll_stub()`): 네트워크를 호출하지
  않고 안내만 출력. 실제 medRxiv/Crossref/Europe PMC 연동은 주석 스텁으로만 존재.
- **표준 라이브러리만**: `argparse, json, sqlite3, re, difflib, datetime, html`.
  third-party(spaCy/httpx) 미사용 → import 실패 없음.
- CDN/전역 패키지 설치 없음. HTML은 self-contained(vanilla JS + inline CSS).

---

## 검수 체크리스트

- [x] `python3 -c "import ast; ast.parse(open('main.py').read())"` — 구문 통과
- [x] `python3 main.py --help` — 동작
- [x] 주요 하위명령 실행: `--feed --target --warnings --unpublished --digest --stats --html --online`
- [x] 시드 JSON 22편 정상 로드 + 카드 생성
- [x] 7종 경고 배지 모두 트리거(PEER_REVIEW/RETRACTED/AMBIGUOUS/OVERCLAIM/UNDISCLOSED/DUP_AUTHORS)
- [x] 출판 상태 3종(출판됨/미출판/철회) + 전환 소요일수 표시
- [x] `index.html` 생성 + 기본 구문(doctype/script/div balance) 확인
- [x] `--online` 네트워크 미호출 확인
- [x] 의학적 디스클레이머: README·CLI 배너·HTML·digest 모두 포함

상세 로그는 `QA.md` 참조.

---

## 출처 / Data sources

- **스키마 모델:** medRxiv/bioRxiv details API, Europe PMC, Crossref (출판 상태/DOI 필드).
- **데이터 값:** 전부 **합성(synthetic)**. 실제 호출·실제 레코드 아님 (오프라인 우선 제약).
- 키워드 사전(resmetirom/THR-β, FGF21/FGF19, GLP-1/GIP/glucagon, PPAR, ASK1, SGLT2,
  MRI-PDFF, FIB-4 등)은 MASLD/MASH 신약·바이오마커 도메인 일반 용어 기반.
