본문으로 건너뛰기

ADR-016 — Analysis Publish (Notebook → Streamlit viewer + ABAC)

항목
StatusProposed (2026-05-25 — #997 design step)
Related Epic#997
Related ADRADR-004 (_protected_routers 익명 라우터 패턴)

한 줄 결정: Jupyter Notebook → Streamlit app 자동 변환 + slug 기반 외부 공개 (/pub/{slug}). ADR-004 의 익명 라우터 패턴으로 viewer 노출, ABAC 으로 ViewSecret 검증.

결정

  1. Publish pipeline: Notebook .ipynb → jupytext → streamlit_app.py 자동 생성. 사용자 메타 입력 (제목/설명/태그/카드 이미지).
  2. Viewer: /pub/{slug} — 익명 가능 (a2a_public_router 패턴) + ViewSecret 쿼리 파라미터로 비공개.
  3. Card metadata: /pub/{slug}/meta 익명 (외부 SNS / 메신저 카드 표시).
  4. Embed: streamlit + iframe + X-Frame-Options: ALLOWALL (또는 CSP frame-ancestors workspace 도메인).
  5. Audit: PublishView 테이블 (slug, viewer_ip_hash, viewed_at, referrer).

비목표

  • 데이터 임베드 (raw row) — 본 Phase 비목표. Plot / aggregate 만 노출.
  • Custom domain (publish.gend.com/x) 별도.