Frontend — 그래프 시스템 - xxriny/KNU-PROJECT GitHub Wiki
1. src/components/SAArtifactGraph.jsx
| 라인 | 코드 | 설명 |
|---|---|---|
| 1–12 | import | ReactFlow, Handle, MarkerType, Position |
| 13–49 | SAArtifactNode |
커스텀 노드 — 타이틀, 서브타이틀, 배지, accent 컬러, dimmed/highlighted 상태 |
| 50–130 | SAArtifactGraph 컴포넌트 |
graph.nodes/edges → ReactFlow 렌더, FIT_VIEW_OPTIONS(padding 0.1, zoom 0.05~1.5), 인접성 기반 하이라이트(hover/select 시 연결 노드만 강조) |
| 131–200 | 줌 레벨 반응 | zoomLevel < 0.78 시 저우선 엣지 라벨 숨김 |
| 201–325 | 사이드 패널 | 선택 노드 상세 — module_id, 기능 목록(테이블), 파일 경로, 매핑 요구사항, 의존 모듈, 증거 |
2. src/components/saGraphAdapters.js
| 라인 | 코드 | 설명 |
|---|---|---|
| 1–3 | import | graphLayout, graphUtils |
| 4–79 | normalizeSystemDiagramForGraph() |
spec → 레이어별 x배치, degree 정렬, 관계 타입별 색상(explicit 파랑/semantic 보라/execution_order 회색) |
| 80–120 | normalizeFlowchartForGraph() |
stages → 수평 나열, sequential 파랑/parallel 틸, 기능명 프리뷰 |
| 121–269 | normalizeUMLForGraph() |
cluster 모드: 레이어 집계 노드, detail 모드: 개별 컴포넌트 노드, hideExecutionOrder/minConfidence 필터 |
| 270–379 | normalizeContainerDiagramForGraph() |
container_config 기반 — 컴포넌트/외부시스템 그래프, edge 색상(http 파랑/ipc 보라/data 틸/external 앰버) |
3. src/components/graphLayout.js
| 라인 | 코드 | 설명 |
|---|---|---|
| 5 | LAYER_ORDER |
5+1 레이어 순서 상수 |
| 7 | LAYER_COLOR |
레이어별 색상 매핑 |
| 16 | getLayerX() |
레이어명 → x좌표(120 + index×620) |
| 22 | clamp() |
값 범위 제한 유틸 |
| 26–43 | buildDynamicLayerXMap() |
활성 레이어 수·최대 아이템 수 기반 동적 갭 계산 → {layer: x} 맵 |
4. src/components/graphUtils.js
| 라인 | 코드 | 설명 |
|---|---|---|
| 5 | groupBy() |
배열 → 키 함수 기반 그룹 객체 |
| 14 | dedupeEdges() |
`source |
| 22 | compactPathLabel() |
"핵심 분석 모듈:" 접두사 제거 + 마지막 2 디렉토리 축약(40자 제한) |
| 33 | buildDegreeMap() |
엣지 목록 → {nodeId: degree} 연결 수 맵 |
5. src/components/TopologyGraph.jsx
| 라인 | 코드 | 설명 |
|---|---|---|
| 1–14 | import | @xyflow/react의 ReactFlow, Background, Controls, MarkerType, 색상 상수 |
| 15–96 | computeLayeredLayout() |
의존성 기반 BFS 레이어링 → 우선순위 정렬 → x/y 좌표 계산 |
| 97–101 | truncateLabel() |
긴 라벨 축약 헬퍼 |
| 102–250 | TopologyGraph 컴포넌트 |
rtmMap 빌드, 노드 원형 스타일(border=우선순위 색), 엣지 smoothstep, NODE_W 332, NODE_H 162 |
| 251–380 | ReactFlow 렌더 | fitView, zoom 0.2~2, 범례(우선순위 3컬러 + 도형 4종) |
| 381–470 | 사이드 패널 | 선택 노드 상세 — ID, 설명, 카테고리, 우선순위, 의존성 버튼, 태그, 네비게이션(Workspace 상세/RTM 탭/SA Topology) |
| 471–478 | SideSection |
사이드 패널 내부 섹션 서브 컴포넌트 |