You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
그래프 API 데이터, 뷰 상태, Cytoscape 인스턴스 수명 관리(useCyLifecycle.js)
utils/graph/
델타 누적(graphDeltas.js), 책 범위 그래프(graphMacro.js), 레이아웃(graphLayout.js), 스타일(graphStyles.js)
utils/api/
인증 요청·재시도(client.js), 토큰 저장·갱신(authApi.js), 도서·그래프 API
utils/common/cache/
TTL 캐시 공용 헬퍼(cacheManager.js), 매니페스트·진행률 캐시
Architecture
flowchart LR
U[사용자] --> V[EPUB 뷰어<br/>XHTML 렌더 · locator]
V -- 현재 이벤트 --> P[뷰어 그래프 파이프라인]
U --> GP[전체 관계도<br/>챕터 사이드바]
GP -- 선택 챕터 --> M[책 범위 누적<br/>graphMacro]
P --> C{TTL 캐시<br/>manifest · 챕터 이벤트}
M --> C
C -- miss --> API[(백엔드<br/>manifest · relationship-deltas)]
API --> C
C --> D[델타 누적<br/>graphDeltas]
D --> E[Cytoscape 엘리먼트 변환<br/>노드 크기 · 간선 색]
E --> L[증분 레이아웃<br/>spatial hash 겹침 해소]
L --> G[그래프 캔버스<br/>뷰어 분할 / 풀스크린 공용]
Loading
Getting Started
npm run install:app # Frontend-main 의존성 설치
cp Frontend-main/.env.example Frontend-main/.env # VITE_GOOGLE_CLIENT_ID 필수
npm run dev # Vite 개발 서버, /api·/health·/public은 프록시
npm run build && npm run preview
npm run lint --prefix Frontend-main