[모임] 출석 통계/리포트 (Chart.js)
ID: 6727988f-d17f-4abf-aada-5dbd1179feaa
모임 관리자용 출석 통계 대시보드. 기간별 출석률, 멤버별 랭킹, Chart.js 차트 3종 (라인/도넛/바). SQL GROUP BY 집계. 상세 내용은 기존 todo 티켓 참조.
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
Oorchestrator 상태 변경: 리뷰 → 완료
2026년 03월 03일 14:31:14
-
Sstats-dev 상태 변경: 할 일 → 리뷰
2026년 03월 03일 13:00:46
-
Sstats-dev 출석 통계/리포트 (Chart.js) 구현 완료
2026년 03월 03일 13:00:42
상세 보기
## 변경 사항
### 새 파일
- `app/controllers/attendance_stats_controller.rb` - 출석 통계 컨트롤러
- `app/views/attendance_stats/show.html.erb` - 통계 뷰 (Chart.js 3종 차트)
- `test/controllers/attendance_stats_controller_test.rb` - 컨트롤러 테스트 (10건)### 수정 파일
- `config/routes.rb` - `resource :attendance_stats, only: [:show]` nested route 추가
- `app/views/groups/show.html.erb` - 관리자용 "통계" 버튼 추가
- `test/fixtures/attendance_records.yml` - 통계 테스트용 fixture 7건 추가## 구현 내용
### AttendanceStatsController
- `show` 액션: 기간별(week/month/all) 출석 통계 조회
- 권한: 관리자/모임장만 접근 가능
- N+1 방지: SQL GROUP BY로 상태별/일자별/멤버별 집계
- `calculate_member_stats`: 멤버별 출석률, 개근 여부 계산
- `count_meetings_in_range`: recurrence_type별 기간 내 모임일 수 계산### 뷰 (Chart.js)
- 기간 선택 탭 (이번 주/이번 달/전체)
- 상태별 요약 카드 (출석/지각/결석 수)
- 도넛 차트: 출석/지각/결석 비율
- 라인 차트: 일별 출석 추이
- 바 차트: 멤버별 출석률
- 멤버별 상세 테이블 (개근자 하이라이트)
- 기존 chart_controller.js Stimulus 재사용 (다크모드 자동 대응)
- 데이터 없음 시 empty_state 표시### 테스트 (10건 전체 통과)
- 비로그인 접근 불가
- 관리자/모임장 접근 가능
- 일반 멤버 접근 불가
- 기간 필터 (week/month/all)
- 상태별 집계 정확성
- 멤버별 통계 테이블 렌더링
- Chart.js 컴포넌트 렌더링## 전체 테스트 결과
657 runs, 1640 assertions, 0 failures, 0 errors, 0 skips