# MASLDRetractionWatch-Kor (매슬드리트랙션와치코어)

MASLD/MASH·NAFLD·NASH·hepatic fibrosis 분야 retraction / correction / Expression of Concern 통합 일일 surveillance MVP.

- **카테고리**: 연구 알림 (목요일 정규)
- **도메인**: MASLD (대사성간질환)
- **생성일**: 2026-05-28

## 디스클레이머
본 도구는 연구·참고용이며, retraction 정보는 실제 source(Retraction Watch DB·PubMed·PubPeer·Crossref·학술지 공지) 직접 확인 필수. 모든 데이터는 오프라인 데모용 **mock/synthetic** 입니다. 임상·연구 결정에 그대로 사용 금지.

## 핵심 기능
1. **5개 source 통합 ingest + MASLD 필터** — Retraction Watch DB / PubMed E-utilities(Retracted Publication·Retraction of·Erratum·Comment·EoC) / PubPeer / Crossref event / journal RSS 를 합치고 MeSH(NAFLD·Liver Cirrhosis·Hepatitis) + MASLD 키워드(resmetirom·obeticholic·FGF21·THR-β·ACC·FXR·PPAR…) 룰로 필터 + dedup. (offline → 모두 mock)
2. **Systematic review / meta-analysis cross-reference** — included paper(PMID/DOI) 업로드 → retraction DB 매칭, sensitivity analysis · Cochrane RoB2 · PRISMA flow 보조 권고 자동 생성.
3. **Author / lab 단위 누적 + 패턴 detection** — 동일 author·affiliation 누적 카운트, 2+/5+ yellow·red flag, time cluster, ORCID 매핑, KASL/AASLD/EASL 가이드라인 committee 인사 cross-reference.
4. **Journal / publisher / 사유 분포 + 시계열** — 저널·publisher·사유(plagiarism·fabrication·image manipulation·duplicate·authorship·statistical·protocol) 분포, publication→retraction lag, 저널별 연도별 retraction rate trend.
5. **주간 다이제스트 + KASL/AASLD/EASL sanity check** — Markdown weekly digest + 가이드라인이 인용한 PMID 중 retraction/EoC/correction 자동 cross-reference 리포트 + docx export.

## 실행

```bash
pip install -r requirements.txt        # 최초 1회
streamlit run app.py                   # Streamlit 5개 탭
python3 main.py --help                 # CLI 도움말
python3 main.py --summary              # 요약 출력
python3 main.py --top 10               # 최근 10건
python3 main.py --cross-reference      # 샘플 SR 교차분석
python3 main.py --guideline-check      # KASL/AASLD/EASL sanity
python3 main.py --export-digest weekly_digest.md
python3 main.py --data-test            # mock data 로드 점검
```

## 파일 구조
```
.
├── app.py                     # Streamlit 메인 (5개 tab)
├── main.py                    # CLI 진입점 (lazy import)
├── core.py                    # rule-based 로직 (LLM 호출 0)
├── requirements.txt
├── README.md
├── QA.md                      # 검수 로그
└── data/
    ├── retractions.json               # 60+ mock record
    ├── sample_systematic_review.json  # SR included paper 샘플
    └── guidelines_cited.json          # KASL/AASLD/EASL mock 인용 매핑
```

## 검수 체크리스트
- [ ] `python3 -c "import ast; ast.parse(open('app.py').read())"` OK
- [ ] `python3 -c "import ast; ast.parse(open('main.py').read())"` OK
- [ ] `python3 -c "import ast; ast.parse(open('core.py').read())"` OK
- [ ] `python3 main.py --help` 정상 출력
- [ ] `python3 main.py --data-test` JSON 정상
- [ ] `python3 main.py --summary` 정상 출력
- [ ] `python3 main.py --cross-reference` 정상 출력
- [ ] `python3 main.py --guideline-check` 정상 출력

## 출처 / 참고
- Retraction Watch Database (https://retractionwatch.com/)
- NCBI PubMed E-utilities (publication types: Retracted Publication / Retraction of Publication / Published Erratum / Comment / Expression of Concern)
- PubPeer public API
- Crossref event API
- KASL / AASLD / EASL MASLD-MASH practice guidelines
- 본 MVP 내 모든 record는 실제와 무관한 mock 데이터임.

## 제약
- 외부 네트워크 / 유료 API 호출 0
- LLM 호출 0 (전부 rule-based)
- 전역 패키지 설치 없음 — `requirements.txt`에 명시
