백로그
0할 일
0진행 중
0리뷰
0완료 (30일)
1공개 세션 탐색 탭 + max_participants 제한
## 목표 QT 플랜 목록(index)에 "공개 플랜" 탭 추가 + join 시 max_participants 제한 적용 ## 구현 내용 ### 1. SessionsController 수정 - index 액션에 `@public_sessions` 추가: `QtSession.active.where(is_public: true).where.not(id: current_user.qt_sessions.pluck(:id)).includes(:qt_theme, :creator).order(created_at: :desc)` - join 액션에 max_participants 체크 추가: `if @session.max_participants && @session.qt_participants.count >= @session.max_participants` → 거부 메시지 ### 2. index.html.erb 수정 - 기존 탭(활성/전체)에 "공개 플랜" 탭 추가 - 공개 플랜 탭 내용: 공개 세션 카드 목록 + "참여하기" 버튼 - 참여하기 버튼은 invite 페이지로 이동 (기존 invite 뷰 재활용) - 이미 참여 중이면 "참여 중" 뱃지 표시 - max_participants가 설정된 경우 "N/M명" 표시 ### 3. _session_card.html.erb 수정 - 공개 세션용 카드에 참여 인원 수 표시 - "참여하기" 버튼 또는 "참여 중" 뱃지 ### 4. 통합 테스트 작성 - test/controllers/qt/sessions_controller_test.rb에 추가: - 공개 세션 목록 표시 테스트 - max_participants 초과 시 join 거부 테스트 - 정상 join 테스트 (기존 테스트 있으면 확인) ## 관련 파일 (이 파일들만 수정) - app/controllers/qt/sessions_controller.rb - app/views/qt/sessions/index.html.erb - app/views/qt/sessions/_session_card.html.erb - test/controllers/qt/sessions_controller_test.rb - test/fixtures/qt_sessions.yml (필요시 공개 세션 fixture 추가) ## 주의사항 - 디자인 시스템 파셜 사용 (shared/card, shared/button, shared/tabs, shared/badge 등) - N+1 쿼리 방지: includes 사용 - 기존 invite/join 로직 유지, max_participants 체크만 추가 - 기존 테스트 전체 통과 확인 필수