# DMConfLateBreaker-Kor (디엠콘프레이트브레이커코어)

> **참고용·연구용 도구입니다. 임상 의사결정 대체 금지.**
> 모든 데이터는 오프라인 mock data이며 실제 학회 정보와 다를 수 있습니다.

## 목적
ADA · EASD · ENDO · ICE · IDF · KDA · KSCRD 학회의
late-breaker / oral / plenary / symposium / poster abstract를
자동 수집 → 공통 schema로 정규화 → 관심영역 필터 → embargo lift 카운트다운 →
한국 KOL 추적 → 일정 export(ICS) → digest(docx) 까지 한 곳에서 보는
standalone Streamlit 연구 알림 도구.

- 도메인: **DM (당뇨/대사)**
- 카테고리: **연구 알림**

## 핵심 기능
1. **학회별 abstract 수집·정규화** — 공통 schema
   (`conference / year / session_type / session_slot / embargo_time / authors / affiliations / topic_tags`)
   로 정규화, late-breaker / oral / plenary / symposium / poster 분리 필터.
2. **관심영역 자동 분류 + 한국 연구자 추적** — 토픽 라벨(GLP-1RA, SGLT2i, closed-loop,
   T1DM, DKD, DPN 등) 자동 분류, 한국 소속(Korea, Seoul, KDA, Yonsei, SNU, Asan,
   Samsung, KU, Sungkyunkwan, Soonchunhyang …) 저자 자동 추적 + KOL watchlist.
3. **embargo lift 카운트다운 + ICS export** — 학회별 embargo policy, timezone 변환,
   ICS(RFC-5545) 캘린더 export.
4. **abstract dedup + 동일 저자 PubMed 출판 lag 추적** — 학회 간/내 dedup,
   embargo lift 이후 PubMed 출판까지의 lag 시각화.
5. **digest + 리포트** — 일일/주간/학회별 digest(국문/영문), docx export.

## 실행법
```bash
# 1) 가상환경
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

# 2) Streamlit UI
streamlit run app.py

# 3) CLI 요약 (외부 의존성 없이 데이터 점검)
python3 app.py --cli-summary
# 또는
python3 cli.py --summary
```

`streamlit` 미설치 환경에서는 `python3 app.py` 실행 시 자동으로 CLI summary로 폴백한다.

## 파일 구조
```
2026-05-21-1-dm-conf-late-breaker-kor/
├── README.md              ← 본 문서
├── QA.md                  ← 검수 로그
├── requirements.txt       ← pinned versions
├── app.py                 ← Streamlit + CLI 진입점
├── cli.py                 ← Standalone CLI 진입점
└── data/
    ├── conferences.json   ← 학회 메타데이터 (7건)
    ├── abstracts.json     ← 합성 abstract (50+건, 한국 저자 8~12건)
    ├── publications.json  ← abstract→PubMed mock 매칭
    ├── kol_seed.json      ← 한국 KOL seed
    └── watchlist.sqlite   ← (자동 생성) 사용자 watchlist
```

## 검수 체크리스트
- [x] `python3 -c "import ast; ast.parse(open('app.py').read())"` 통과
- [x] `data/*.json` 모두 `json.load` 통과
- [x] `python3 cli.py --summary` 출력 확인
- [x] `requirements.txt` pinned version 명시

## 출처 / 데이터 출처
- 모든 abstract / KOL / PubMed 매칭은 **합성(synthetic) mock data**.
- 학회 일정·도시는 실제 학회 캘린더 공개 정보 근처 시점에 맞춤.
- 저자명은 일반화된 임의 이니셜(실명 사용 금지).
- 외부 네트워크 호출 0 / 외부 유료 API 0.

## 디스클레이머
본 도구는 학회 abstract 추적·요약·일정 export를 보조하는 **참고용·연구용** 도구입니다.
- 임상 진료 의사결정·환자 치료의 근거로 사용 금지.
- 모든 abstract / 저자 / 소속 / embargo 시간은 mock data이며, 실제 학회 정보와 다를 수 있습니다.
- 학회 embargo policy 위반 책임은 사용자에게 있습니다.
