[함께보기 PR3] 컨트롤러 + 라우트: CRUD, 참여, 나가기
ID: d818170c-433f-4b48-8e60-b14481f91b58
## 설명
ViewGroupsController 및 라우팅 구현.
## 라우트
- resources :view_groups (index, show, new, create, destroy)
- GET/POST /:locale/view_groups/join/:invite_code (참여)
- DELETE /:locale/view_groups/:id/leave (나가기)
- GET /:locale/view_groups/:id/team_strength (팀강점 데이터)
## 인가 매트릭스
| 액션 | 비로그인 | 일반 사용자 | 그룹 멤버 | 그룹 소유자 |
|------|---------|-----------|----------|-----------|
| index | redirect login | 자기 그룹만 | 자기 그룹만 | 자기 그룹만 |
| show | redirect login | X | O | O |
| create | redirect login | O | - | - |
| destroy | redirect login | X | X | O |
| join | redirect login | O (코드 유효 + report_purchased 진단 필요) | 이미 멤버 안내 | 이미 소유자 안내 |
| leave | redirect login | X | O | X (소유자 불가, 그룹 삭제로 안내) |
| team_strength | redirect login | X | O | O |
## 비즈니스 규칙
- 참여 시 사용자가 diagnosis_session 선택 (report_purchased: true인 것만 목록 표시)
- 무료 검사(report_purchased: false)로는 참여 불가
- 소유자는 나가기 불가 → "그룹을 삭제하세요" 안내
- 소유자 그룹 삭제 시 dependent: :destroy로 멤버 전부 제거
## 완료 기준
- [ ] 컨트롤러 테스트 통과 (CRUD, join, leave, 권한)
- [ ] 비로그인 → 로그인 → return_to join URL 리다이렉트 정상
- [ ] 진단 미구매 사용자 참여 차단 + 안내 메시지
## 의존성
- PR #1, #2 완료 후 진행
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
서브 티켓 (1/1 완료)
활동 로그
-
팀팀리드 상태 변경: 리뷰 → 완료
2026년 03월 17일 07:54:13
-
팀팀리드 팀 작업 완료 - [함께보기 PR3] 컨트롤러 + 라우트
2026년 03월 17일 07:12:42
상세 보기
## 수정된 기능
- ViewGroupsController 8개 액션 (index, show, new, create, destroy, join, process_join, leave, team_strength)
- 라우팅: locale scope 내 view_groups 리소스 + join/process_join 커스텀 라우트
- i18n: flash 메시지 17개 키 (ko.yml)## 생성/수정 파일
- `app/controllers/view_groups_controller.rb` (신규)
- `config/routes.rb` (수정)
- `config/locales/ko.yml` (수정)
- `app/views/view_groups/` — 최소 스텁 뷰 5개 (PR4에서 완성)
- `test/controllers/view_groups_controller_test.rb` (37개 테스트)## QA 검증 결과
- 테스트: 37/37 통과, 102 assertions, 0 failures
- 보안: Brakeman 0 warnings, IDOR 방지 확인
- Rubocop: 0 offenses (수정 후)
- Major 이슈 1건(set_view_group return 누락) → guard clause로 수정 완료## QA 피드백 반영
- set_view_group: guard clause 패턴으로 리팩토링 (DoubleRenderError 방지)
- Rubocop offense 2건 수정 -
팀팀리드 상태 변경: 진행 중 → 리뷰
2026년 03월 17일 07:12:30
-
팀팀리드 위임: developer-1에게 'ViewGroupsController + 라우트 + 컨트롤러 테스트 구현' 작업 배정
2026년 03월 17일 07:00:31
-
팀팀리드 작업 시작 - [함께보기 PR3] 컨트롤러 + 라우트
2026년 03월 17일 07:00:12
상세 보기
## 작업 계획
- 목표: ViewGroupsController CRUD, 참여(join), 나가기(leave), 팀강점(team_strength) + 라우팅
- 접근 방식: developer 1명이 TDD로 컨트롤러 + 라우트 + 테스트 구현, qa-verifier가 검증## 현재 상태
- PR1 DB 레이어: review
- PR2 서비스: review
- PR3 컨트롤러: in_progress (현재) -
팀팀리드 티켓 클레임 완료
2026년 03월 17일 06:59:57
-
팀팀리드 상태 변경: 할 일 → 백로그
2026년 03월 17일 06:33:01