Skip to content

배포를 위한 PR#84

Merged
b1uey0 merged 3 commits intomainfrom
dev
Mar 16, 2026
Merged

배포를 위한 PR#84
b1uey0 merged 3 commits intomainfrom
dev

Conversation

@b1uey0
Copy link
Copy Markdown
Collaborator

@b1uey0 b1uey0 commented Mar 16, 2026

🛠️ PR 유형

어떤 변경 사항이 있나요?

  • FEAT: 새로운 기능 추가
  • FIX: 버그 수정
  • DESIGN: CSS 등 사용자 UI 디자인 변경
  • REFACTOR: 코드 리팩토링
  • COMMENT: 주석 추가 및 수정
  • DOCS: 문서 수정
  • BUILD: 빌드 부분 혹은 패키지 매니저 수정
  • DELETE: 파일 혹은 폴더 삭제
  • CHORE: 그 외 자잘한 수정

📝 요약(Summary)

  • 로그인 유도 모달 제작
  • 현재 페이지에 따른 사이드바 색상
  • build테스트 완료했습니다.

✅ PR Checklist

PR이 다음 요구 사항을 충족하는지 확인하세요.

  • 커밋 메시지 컨벤션에 맞게 작성했습니다.
  • 변경 사항에 대한 테스트를 했습니다.(버그 수정/기능에 대한 테스트).

@github-actions
Copy link
Copy Markdown

🤖 Gemini AI 코드 리뷰

다음은 Git diff에 대한 리뷰입니다.

🐛 잠재적 버그 / 문제점

  • SidebarMenu.tsx - 메뉴 키 변경: SIDEBAR_MENUS에서 key: 'mypage'key: 'profile'로 변경되었습니다. 이 키를 사용하는 다른 라우팅, API 호출 또는 분석 로직이 있다면 예상치 못한 버그를 유발할 수 있습니다.
  • SidebarMenu.tsx - isActive 로직의 모호성: pathname.includes(key)를 사용하여 활성 상태를 판단하는 로직은 특정 상황에서 의도치 않은 메뉴를 활성화할 수 있습니다 (예: key가 다른 경로의 부분 문자열인 경우). /team/new 예외 처리가 있는 것으로 보아 이미 인지하고 있는 문제일 수 있습니다. 보다 정확한 경로 매칭이 필요할 수 있습니다.
  • SidebarMenu.tsx - isLoggedIn prop의 의미 불일치: SidebarMenu 컴포넌트에 전달되는 isLoggedIn prop은 실제 로그인 여부가 아닌 isProfileComplete (로그인 및 프로필 정보 완료 여부) 상태를 나타냅니다. prop 이름과 실제 의미가 달라 혼란을 줄 수 있으며, 로그인했지만 프로필이 미완성인 사용자가 예상보다 적은 메뉴를 보게 될 수 있습니다.

♿ 접근성 (a11y) 문제

  • SidebarIcon.tsx, SidebarItem.tsx - 버튼의 의미 부족: SidebarIcon은 아이콘만, SidebarItem은 아이콘과 텍스트를 포함하는 button 요소입니다. 스크린 리더 사용자를 위해 aria-label 속성을 추가하여 버튼의 목적을 명확히 전달하는 것이 좋습니다. 특히 접힌 상태의 SidebarIcon은 시각적인 정보만 제공합니다.

🎨 CSS / 스타일 개선

  • SidebarIcon.tsx, SidebarItem.tsx - 긴 className 문자열: 조건부 로직으로 인해 className 문자열이 길고 복잡해졌습니다. clsx 또는 classnames와 같은 유틸리티 라이브러리를 사용하여 가독성과 유지보수성을 높일 수 있습니다.
  • SidebarProfile.tsx - 고정 너비 및 패딩: 프로필 정보(username, position)를 담는 divw-[15.2rem]와 같은 고정 너비가 적용되어 있습니다. 사용자 이름이나 포지션이 길어질 경우 텍스트가 잘리거나 레이아웃이 깨질 수 있습니다. 또한, pr-[1rem] 패딩이 특정 요소에만 적용되어 전체적인 정렬이나 간격에 대한 의도를 명확히 파악하기 어렵습니다.

💡 코드 품질 개선

  • SidebarMenu.tsx - isLoggedIn prop 네이밍: SidebarMenu에 전달되는 isLoggedIn prop은 실제로는 isProfileComplete 상태를 나타내므로, hasCompleteProfile 또는 canAccessFullMenus와 같이 더 명확한 이름으로 변경하는 것이 좋습니다.
  • SidebarProfile.tsx - 조건부 텍스트 로직 간소화: '게스트' 및 '로그인해주세요'를 표시하는 조건부 로직이 다소 중복되어 있습니다. isLoggedIn 상태를 활용하여 더 간결하게 표현할 수 있습니다.
    // 현재
    <span className="text-[1.6rem] font-semibold text-black-100">
      {isLoggedIn ? data?.username || '게스트' : '게스트'}
    </span>
    <span className={`h-[2rem] text-[1.3rem] font-medium ${isLoggedIn ? 'text-black-60' : 'text-blue-60'}`}>
      {isLoggedIn && data?.position ? POSITION_CONVERTER[data?.position] || '로그인해주세요' : '로그인해주세요'}
    </span>
    
    // 개선 제안
    <span className="text-[1.6rem] font-semibold text-black-100">
      {isLoggedIn && data?.username ? data.username : '게스트'}
    </span>
    <span className={`h-[2rem] text-[1.3rem] font-medium ${isLoggedIn ? 'text-black-60' : 'text-blue-60'}`}>
      {isLoggedIn && data?.position ? POSITION_CONVERTER[data.position] : '로그인해주세요'}
    </span>

Gemini 2.5 Flash | Diff 크기: 10372 bytes

@b1uey0 b1uey0 merged commit 63f37f9 into main Mar 16, 2026
1 check passed
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