Conversation
- AsyncBoundary 공용 컴포넌트 생성 (common/boundary/) - FaqSection에서 FaqInput, FaqButton, FaqItem 서브컴포넌트 추출 (domain/faq/ui/) - FaqSection 로직을 useFaqList 커스텀 훅으로 분리 (domain/faq/hooks/) - FaqChat 내부 함수명 FaqDropdown → FaqChat으로 변경 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- ProgramSelectModal 모달 컴포넌트 분리 (modal/) - ProgramRecommendItem 아이템 카드 분리 (ui/) - isSameProgram, toRecommendItem 헬퍼로 비교/변환 로직 정리 - ProgramRecommendEditor를 조합 컴포넌트로 축소 (317줄 → 93줄) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- useSignup 훅 추출 (상태, mutation, validation, effects) - AgreementSection 컴포넌트 분리 (약관 동의 체크박스) - formatPhoneNumber 순수 함수 추출 - SignupPage를 UI 조합 컴포넌트로 축소 (552줄 → 168줄) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 미사용 v2 폴더 전체 삭제 (라우트 연결 없는 dead code) - v1/ 내용을 domain/about/ 루트로 이동 (불필요한 중첩 제거) - 상대경로 import를 @/ alias로 통일 - about/dev 페이지 import 경로 수정 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Code Review
This pull request focuses on refactoring the signup and FAQ management logic by extracting complex state and logic into custom hooks (useSignup, useFaqList) and modularizing UI components. It also includes a reorganization of the 'About' domain files to align with the domain-based folder structure. Key feedback points include optimizing the buttonDisabled state in useSignup as a derived value using useMemo to prevent unnecessary re-renders, and ensuring that all necessary React hooks like useMemo and useCallback are properly imported. Additionally, a functional update pattern is recommended for the handleToggle function in ProgramSelectModal to maintain stable function identity by removing the direct dependency on the programRecommend state.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
useEffect + setState로 동기화하던 buttonDisabled를 렌더 중 계산되는 파생 변수로 변경. 추가 렌더 1회와 불필요한 상태 1개 제거. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
field === '' 검사가 공백만 입력된 경우(' ')를 통과시키던 문제를
trim() === ''로 보강.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- AsyncBoundary 충돌 해결: main 버전 채택 - 'use client' 추가 (App Router boundary 컴포넌트 요건) - 정적 에러 메시지 채택 (main 테스트 계약과 일치) - 디자인 토큰 스타일(text-xsmall14, neutral-*) 적용
연관 작업