ADR-016 — Analysis Publish (Notebook → Streamlit viewer + ABAC)
| 항목 | 값 |
|---|---|
| Status | Proposed (2026-05-25 — #997 design step) |
| Related Epic | #997 |
| Related ADR | ADR-004 (_protected_routers 익명 라우터 패턴) |
한 줄 결정: Jupyter Notebook → Streamlit app 자동 변환 + slug 기반 외부 공개 (
/pub/{slug}). ADR-004 의 익명 라우터 패턴으로 viewer 노출, ABAC 으로ViewSecret검증.
결정
- Publish pipeline: Notebook
.ipynb→ jupytext →streamlit_app.py자동 생성. 사용자 메타 입력 (제목/설명/태그/카드 이미지). - Viewer:
/pub/{slug}— 익명 가능 (a2a_public_router패턴) +ViewSecret쿼리 파라미터로 비공개. - Card metadata:
/pub/{slug}/meta익명 (외부 SNS / 메신저 카드 표시). - Embed: streamlit + iframe +
X-Frame-Options: ALLOWALL(또는 CSP frame-ancestors workspace 도메인). - Audit:
PublishView테이블 (slug, viewer_ip_hash, viewed_at, referrer).
비목표
- 데이터 임베드 (raw row) — 본 Phase 비목표. Plot / aggregate 만 노출.
- Custom domain (publish.gend.com/x) 별도.