[함께보기 PR1] DB 레이어: ViewGroup + ViewGroupMember 모델
ID: 33ef2964-7309-4068-a9f3-4ac5316de80e
## 설명
"함께 보기" 기능의 DB 모델 레이어 구현.
## DB 설계
### view_groups
- id: uuid (PK)
- name: string, null: false, max 50자
- invite_code: string, unique, null: false (SecureRandom.alphanumeric(8).upcase)
- user_id: uuid, FK(users), null: false (소유자)
- created_at, updated_at
### view_group_members
- id: uuid (PK)
- view_group_id: uuid, FK(view_groups), null: false
- user_id: uuid, FK(users), null: false
- diagnosis_session_id: uuid, FK(diagnosis_sessions), null: false
- created_at, updated_at
- unique index: [view_group_id, user_id]
## 모델 규칙
- ViewGroup: belongs_to :user (소유자), has_many :view_group_members, dependent: :destroy
- ViewGroupMember: belongs_to :view_group, belongs_to :user, belongs_to :diagnosis_session
- invite_code는 생성 시 자동 발급 (before_create)
- 소유자는 view_group_members에 포함하지 않음 (별도 user_id로 관리)
## 완료 기준
- [ ] 마이그레이션 migrate/rollback/migrate 성공
- [ ] 모델 테스트 통과 (유효성, 연관관계, invite_code 고유성)
- [ ] fixtures 생성 (view_groups.yml, view_group_members.yml)
- [ ] diagnosis_session은 report_purchased: true인 것만 연결 가능
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
서브 티켓 (1/1 완료)
활동 로그
-
팀팀리드 상태 변경: 리뷰 → 완료
2026년 03월 17일 07:54:10
-
팀팀리드 팀 작업 완료 - [함께보기 PR1] DB 레이어
2026년 03월 17일 06:49:25
상세 보기
## 수정된 기능
- ViewGroup + ViewGroupMember 모델, 마이그레이션, 테스트, fixtures 구현 완료## 생성/수정 파일
- `db/migrate/20260317064325_create_view_groups.rb`
- `db/migrate/20260317064334_create_view_group_members.rb`
- `app/models/view_group.rb` (신규)
- `app/models/view_group_member.rb` (신규)
- `app/models/user.rb` (has_many 추가)
- `test/fixtures/view_groups.yml`, `view_group_members.yml` (신규)
- `test/models/view_group_test.rb` (13개 테스트)
- `test/models/view_group_member_test.rb` (11개 테스트)## QA 검증 결과
- 테스트: 24/24 통과, 38 assertions, 0 failures
- 보안: FK 제약, unique 인덱스, 이중 보호 모두 정상
- 종합: 리뷰 진행 가능 (Critical/High 이슈 없음)## Minor 이슈 (즉각 수정 불필요)
- `is_report_purchased` → `is_report_purchased?` 권장
- `diagnosis_session_id` 단독 인덱스 미추가 (향후 필요 시 추가) -
팀팀리드 상태 변경: 진행 중 → 리뷰
2026년 03월 17일 06:49:16
-
팀팀리드 위임: developer-1에게 '마이그레이션 + 모델 + 테스트 + fixtures 구현' 작업 배정
2026년 03월 17일 06:41:56
-
팀팀리드 작업 시작 - [함께보기 PR1] DB 레이어
2026년 03월 17일 06:41:50
상세 보기
## 작업 계획
- 목표: ViewGroup + ViewGroupMember 모델, 마이그레이션, 테스트, fixtures 생성
- 접근 방식: developer 1명이 TDD로 전체 구현, qa-verifier가 검증## 현재 상태
- 보드 현황: backlog 5 / in_progress 1 / done 137
- 관련 기존 작업: 함께보기 기능 계획 (5개 PR 시리즈의 첫 번째) -
팀팀리드 티켓 클레임 완료
2026년 03월 17일 06:41:39
-
팀팀리드 기능 계획 수립 - 함께 보기
2026년 03월 17일 06:33:23
상세 보기
## 기능 개요
- 커리어테크 아래 "함께 보기" 메뉴 신설
- 개인이 그룹 생성 → QR코드로 초대 → 팀강점 매트릭스 함께 보기
- Workspace와 달리 경량 구조 (승인/크레딧/결제 없음)## 분석 결과
- 영향 범위: 모델 2개 신규, 컨트롤러 1개 신규, 뷰 5개, 서비스 1개, 사이드바/하단탭 수정
- 기존 패턴: Workspace의 invite_code, QrCodeHelper, TeamStrengthAnalyzer 참고
- 재사용: rqrcode gem, QrCodeHelper#qr_code_svg, 팀강점 차트 데이터 구조## 생성된 티켓 (5개)
1. [함께보기 PR1] DB 레이어 (priority: high)
2. [함께보기 PR2] TeamStrengthAnalyzer 서비스 (priority: high)
3. [함께보기 PR3] 컨트롤러 + 라우트 (priority: high)
4. [함께보기 PR4] 뷰 (priority: high)
5. [함께보기 PR5] 네비게이션 + i18n (priority: medium)## 의사결정 사항
- 참여 시 진단 세션 선택 필수 (report_purchased: true만)
- 소유자 나가기 → 그룹 삭제
- 전 locale에서 메뉴 표시
- 무료 검사로는 참여 불가## 리스크
- TeamStrengthAnalyzer 결합도 → 별도 서비스로 분리하여 기존 코드 영향 없음
- 모바일 비로그인 QR → return_to 리다이렉트 활용 -
팀팀리드 상태 변경: 할 일 → 백로그
2026년 03월 17일 06:32:59