Skip to content

feat: 토픽 선택 모달 추가 및 토픽 이동#44

Merged
E0min merged 1 commit intodevelopfrom
feat/42-move-to-other-graph
Nov 15, 2025
Merged

feat: 토픽 선택 모달 추가 및 토픽 이동#44
E0min merged 1 commit intodevelopfrom
feat/42-move-to-other-graph

Conversation

@SangHyun01
Copy link
Contributor

"다른 토픽으로 이동" 기능 구현 (토픽 선택 모달 및 그래프 재사용)

PR 요약

사용자가 특정 노드 줄기를 기존의 다른 토픽으로 이동시킬 수 있는 기능을 구현했습니다.

예를 들어, 'Oracle' 토픽에 실수로 생성된 '된장찌개' 노드 줄기를, '요리'라는 이름의 기존 토픽으로 옮길 수 있습니다.

주요 변경 사항

1. "다른 토픽으로 이동" 상태 도입

  • useQuestionTree 훅에 moveToOtherMode 함수와 SELECT_NODE_TO_MOVE_OTHER라는 modifyMode 상태를 추가했습니다.
  • FocusViewHeader에 [다른 토픽으로 이동] 버튼을 추가하고, modifyMode === 'IDLE'일 때만 보이도록 cancelModifyMode와 로직을 공유합니다.
  • 사용자가 [다른 토픽으로 이동] 버튼을 누르면 modifyMode가 변경되고, "이동할 노드를 선택하세요"라는 안내가 표시됩니다.

2. TopicSelectorModal 컴포넌트 신규 생성
사용자가 이동할 '대상'을 선택하는 복잡한 과정을 처리하기 위해 TopicSelectorModal을 새로 구현했습니다. 이 모달은 2단계로 작동합니다.

[1단계: 토픽 선택]

  • 모달이 열리면 getTopicsHistory API를 호출하여 모든 토픽 목록을 불러옵니다.
  • 현재 토픽은 '순환 참조'를 막기 위해 리스트에서 비활성화(disabled) 처리했습니다.

[2단계: 부모 노드 선택]

  • 사용자가 대상 토픽(예: '요리')을 선택하면, getTopicById API를 호출하여 해당 토픽의 전체 ViewData를 불러옵니다.
  • 모달 내부에서 InteractiveD3Graph 컴포넌트를 재사용하여 '요리' 토픽의 미니 그래프를 렌더링합니다.
  • 사용자가 미니 그래프에서 '한식' 노드를 클릭하면, onNodeSelected 콜백이 (targetTopic, targetParentNode) 정보를 반환하며 모달이 닫힙니다.

3. 최종 확인 및 API 연동

  • TopicSelectorModal이 닫히면, EnhancedBreadcrumbFocusViewContent는 setMoveToTopicRequest를 호출하여 "최종 확인 모달"(AlertDialog)을 띄웁니다.
  • 사용자가 "이동"을 최종 확인하면, confirmMoveToOtherTopic 함수가 실행됩니다.
  • 이 함수는 기존의 copyQuestions와 deleteQuestionsBatch API를 재사용하여, 선택된 줄기 전체를 복사하고 원본을 삭제합니다.
  • refreshViewData()를 호출하여 현재 그래프를 갱신합니다.

@E0min E0min merged commit a4999eb into develop Nov 15, 2025
1 check passed
@SangHyun01 SangHyun01 deleted the feat/42-move-to-other-graph branch November 15, 2025 08:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants