[모임] QT 플랜 연동 + 출석 체크 시스템
ID: e9b0085a-0e39-40a2-8574-471ac705d6c9
QtSession에 group_id 추가 + 모임 내 QT 생성 시 멤버 자동 참여 + 출석 QR 생성 + 체크인 플로우 + 지각 판정. 상세 내용은 기존 todo 티켓 참조.
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
Oorchestrator 상태 변경: 리뷰 → 완료
2026년 03월 03일 14:31:12
-
Qqt-link-dev 상태 변경: 할 일 → 리뷰
2026년 03월 03일 13:01:10
-
Qqt-link-dev QT 플랜 연동 + 출석 체크 시스템 구현 완료
2026년 03월 03일 13:01:10
상세 보기
## 구현 내용
### 1. QtSession에 group_id 추가
- 마이그레이션: `add_column :qt_sessions, :group_id, :string` + 인덱스
- `QtSession belongs_to :group, optional: true`
- `Group has_many :qt_sessions, dependent: :nullify`### 2. Group 모델 확장
- `meeting_today?` 메서드: daily/weekly/monthly 반복 주기별 오늘 모임 여부 판정
- `qt_enabled?` 메서드 추가
- `has_many :qt_sessions` 연관 관계### 3. GroupQtSessionsController (new, create)
- 관리자만 QT 플랜 생성 가능
- 생성 시 모임 active 멤버 전원 자동 `QtParticipant` 생성
- 라우팅: `resources :groups do resources :qt_sessions end`### 4. AttendancesController#check
- `GET /attend/:token` 출석 체크 엔드포인트
- 멤버 확인, 모임일 확인, 중복 방지
- 지각 자동 판정 (`meeting_time + late_minutes`)### 5. 뷰 업데이트 (groups/show)
- QT 플랜 목록 표시 (empty_state → 실제 데이터)
- "QT 플랜 생성" 버튼 (관리자만)
- 오늘 출석 현황 표시 (멤버 이름, 체크 시각, 상태 배지)
- 출석 QR URL 표시 (관리자만)### 6. 테스트
- `test/models/group_test.rb`: meeting_today? 5개 + qt_sessions 연관 1개 (총 27 runs)
- `test/controllers/group_qt_sessions_controller_test.rb`: 7 tests (인증, 권한, CRUD)
- `test/controllers/attendances_controller_test.rb`: 8 tests (인증, 토큰, 멤버, 중복, 지각)### 수정 파일
- `db/migrate/20260303080000_add_group_id_to_qt_sessions.rb` (신규)
- `app/models/qt_session.rb` (group 연관 추가)
- `app/models/group.rb` (qt_sessions, meeting_today?, qt_enabled?)
- `app/controllers/group_qt_sessions_controller.rb` (신규)
- `app/controllers/attendances_controller.rb` (신규)
- `app/views/group_qt_sessions/new.html.erb` (신규)
- `app/views/groups/show.html.erb` (QT플랜/출석 영역 업데이트)
- `config/routes.rb` (nested qt_sessions route 추가)### 테스트 결과
657 runs, 1640 assertions, 0 failures, 0 errors