성경 통독 현황 (BibleReadingLog + 66권 시각화)
ID: 6625f49d-9fa4-4c16-a1a2-514b1b775888
## 목표
BibleReadingLog 모델 생성 + 성경 66권 통독 현황 시각화 페이지 구현
## 모델
### BibleReadingLog
- user_id: UUID FK NOT NULL
- book_name: string NOT NULL (한국어 책명: "창세기", "출애굽기" 등)
- chapter: integer NOT NULL
- read_date: date NOT NULL
- INDEX: (user_id, book_name, chapter, read_date)
- 같은 장 같은 날짜 중복 허용 (여러 번 읽기 가능)
## 성경 데이터 유틸리티
### lib/bible_data.rb (모듈)
- BIBLE_BOOKS 상수: 구약 39권 + 신약 27권 데이터
- 각 책: { name: "창세기", abbrev: "창", chapters: 50, testament: :old }
- 총 1189장
- OLD_TESTAMENT, NEW_TESTAMENT 상수
- TOTAL_CHAPTERS = 1189
- 책명으로 장수 조회 메서드
## 컨트롤러
### TongtokController
- index: 통독 현황 페이지
- params[:year] (기본 올해)
- BibleReadingLog에서 해당 연도 데이터 집계
- { "창세기" => { 1 => 2, 2 => 1 }, ... } 형태로 책별/장별 읽기 횟수
- 전체 진행률 계산 (읽은 고유 장 수 / 1189 * 100)
### BibleReadingsController
- create: 통독 기록 저장
- params: { bible_reading: { book_name:, chapter:, read_date: } }
- 또는 배치: { chapters: [{ book_name:, chapter: }] } (같은 날짜)
- destroy: 통독 기록 삭제
## 뷰
### tongtok/index.html.erb
- 제목: "성경 통독 현황"
- 연도 선택 드롭다운
- 전체 진행률 표시 (N / 1189장, N%)
- 구약 / 신약 탭
- 각 책을 카드로 표시:
- 책이름 + 읽은 장/전체 장
- 장별 그리드 (읽은 횟수에 따라 색상 변화: 0=회색, 1=연초록, 2+=진초록)
- 장 클릭 시 읽기 기록 생성/삭제 토글 (Turbo Stream)
- data-testid="tongtok-book" (각 책 카드), data-testid="progress-bar" (진행률)
- 기존 shared 파셜 활용 (card, badge, tabs, progress)
## 라우트 (routes.rb는 수정하지 마세요! stats-dev가 관리합니다)
- 필요한 라우트를 팀리드에게 SendMessage로 전달하면 stats-dev가 추가합니다
- 예상 라우트:
```ruby
get "tongtok", to: "tongtok#index"
resources :bible_readings, only: [:create, :destroy]
```
## 테스트
- 모델 테스트: BibleReadingLog validations, associations
- 컨트롤러 테스트: TongtokController (index, 진행률), BibleReadingsController (create, destroy)
- lib/bible_data 테스트 (optional)
## 파일 담당 (다른 에이전트 파일 수정 금지)
- 수정 가능: app/models/bible_reading_log.rb, app/models/user.rb (has_many 추가), db/migrate/*, app/controllers/tongtok_controller.rb, app/controllers/bible_readings_controller.rb, app/views/tongtok/*, lib/bible_data.rb, test/*
- 수정 금지: config/routes.rb, app/controllers/stats_controller.rb, app/controllers/records_controller.rb
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
팀팀리드 상태 변경: 리뷰 → 완료
2026년 03월 02일 03:49:19
-
Ttongtok-dev 상태 변경: 진행 중 → 리뷰
2026년 03월 02일 03:48:17
-
Ttongtok-dev 성경 통독 현황 페이지 구현 완료
2026년 03월 02일 03:48:16
상세 보기
## 테스트 결과
262 tests, 602 assertions, 0 failures, 0 errors## 생성 파일
- `lib/bible_data.rb` - 성경 66권 데이터 모듈
- `db/migrate/20260302130000_create_bible_reading_logs.rb` - 마이그레이션
- `app/models/bible_reading_log.rb` - 모델 (validations, scopes)
- `app/controllers/tongtok_controller.rb` - 통독 현황 페이지
- `app/controllers/bible_readings_controller.rb` - 읽기 기록 CRUD
- `app/views/tongtok/index.html.erb` - 메인 페이지 (탭, 진행률)
- `app/views/tongtok/_book_card.html.erb` - 각 권 카드 파셜
- `app/views/bible_readings/create.turbo_stream.erb` - Turbo Stream
- `app/views/bible_readings/destroy.turbo_stream.erb` - Turbo Stream
- `test/fixtures/bible_reading_logs.yml` - 테스트 fixture
- `test/models/bible_reading_log_test.rb` - 모델 테스트 (12 tests)
- `test/controllers/tongtok_controller_test.rb` - 컨트롤러 테스트 (4 tests)
- `test/controllers/bible_readings_controller_test.rb` - 컨트롤러 테스트 (8 tests)## 수정 파일
- `app/models/user.rb` - `has_many :bible_reading_logs` 추가 -
Ttongtok-dev 작업 시작 - 성경 통독 현황 페이지
2026년 03월 02일 03:44:02
상세 보기
## 작업 범위
- BibleData 모듈 (lib/bible_data.rb)
- BibleReadingLog 모델 + 마이그레이션
- TongtokController + BibleReadingsController
- 뷰 (index, book_card, turbo_stream)
- Fixture + 테스트 -
Ttongtok-dev 티켓 클레임 완료
2026년 03월 02일 03:43:59