통독 완료 체크 백엔드 + 파셜
ID: 23994de5-b082-44bc-b1a6-c1525c423401
## 작업 내용
1. `app/controllers/qt_controller.rb` 수정
- today/day 액션에서 BibleReadingLog 데이터 로드 추가
- @reading_completed = 현재 사용자가 오늘 해당 bible_passage의 장을 이미 읽었는지 확인
- bible_passage 파싱하여 book_name + chapter 추출 필요 (예: "창세기 1-4장" → 창세기 1,2,3,4장)
2. `app/views/qt/_reading_check.html.erb` 신규 파셜 생성
- turbo-frame id="reading_check" 래핑
- 통독 범위의 각 장에 대해 체크박스 표시
- 이미 읽은 장은 체크된 상태
- 체크 시 BibleReadingsController#create 호출 (Turbo Frame)
- 해제 시 BibleReadingsController#destroy 호출
- 전체 완료 시 축하 메시지 or 배지
- 디자인: shared/card 파셜 사용, 체크박스 리스트
3. `app/views/qt/today.html.erb`는 건드리지 말 것!
- tab-dev가 today.html.erb를 수정하고, turbo-frame id="reading_check"를 배치할 예정
- 이 에이전트는 _reading_check.html.erb 파셜만 생성
4. bible_passage 파싱 헬퍼 (QtController private 메서드 또는 모델 메서드)
- "창세기 1-4장" → [{book_name: "창세기", chapter: 1}, ..., {chapter: 4}]
- "시편 23편" → [{book_name: "시편", chapter: 23}]
- 기존 BibleData 클래스 활용 가능 (tongtok에서 사용 중)
5. 기존 BibleReadingsController는 수정하지 않음 (이미 create/destroy/batch_create 있음)
## 기존 코드 참고
- BibleReadingsController: create(book_name, chapter), destroy(id), batch_create(chapters JSON)
- BibleReadingLog: user_id, book_name, chapter, read_date
- BibleData: 66권 성경 데이터 (app/models/bible_data.rb 또는 관련 파일 확인)
- tongtok 뷰: 기존 통독 체크 UI 참고 (app/views/tongtok/)
## 완료 기준
- QtController에 reading log 데이터 로드
- _reading_check.html.erb 파셜 생성
- 통독 장별 체크/해제 동작
- 기존 테스트 전체 통과 (rails test)
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
팀팀리드 상태 변경: 리뷰 → 완료
2026년 03월 03일 05:21:36
-
Rreading-dev 상태 변경: 할 일 → 리뷰
2026년 03월 02일 12:29:01
-
Rreading-dev 통독 체크 백엔드 + 파셜 구현 완료
2026년 03월 02일 12:28:57
상세 보기
## 변경 사항
### 수정된 파일
- `app/controllers/qt_controller.rb` - `load_reading_data`, `parse_bible_passage`, `toggle_reading` 액션 추가
- `config/routes.rb` - `post "qt/toggle_reading"` 라우트 추가
- `test/controllers/qt_controller_test.rb` - toggle_reading 및 reading data 테스트 6개 추가### 생성된 파일
- `app/views/qt/_reading_check.html.erb` - 통독 체크 파셜 (turbo-frame 기반)## 주요 기능
### parse_bible_passage 지원 형식
- `"창세기 1장"` → 단일 장
- `"에베소서 1-2장"` → 장 범위
- `"창세기 1:1-31"` → 절 참조에서 장 추출
- `"누가복음 19장, 마태복음 21장, 마가복음 11장"` → 멀티 도서
- `"사도행전 2:1-4, 37-41"` → 절 범위 내 쉼표 처리
- `"다니엘 1-3장"` → 장 범위
- `"시편 23편"` → 편 단위### toggle_reading 액션
- POST `/qt/toggle_reading` - 통독 완료/취소 토글
- turbo_stream 응답으로 reading_check 프레임만 업데이트
- html fallback으로 redirect_back 지원### _reading_check 파셜
- `reading_passage` 우선 사용, 없으면 `bible_passage` fallback
- BibleReadingLog 기반 읽은 장 체크 표시
- 완료/미완료 badge + 체크 아이콘
- 디자인 시스템 공유 파셜 활용 (shared/card, shared/badge)## 테스트
- 14 runs, 32 assertions, 0 failures, 0 errors