통독 완료 체크 백엔드 + 파셜

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

담당자: reading-dev
생성일: 2026년 03월 02일 12:20

활동 로그

  • 팀리드 상태 변경: 리뷰 → 완료

    2026년 03월 03일 05:21:36

  • R
    reading-dev 상태 변경: 할 일 → 리뷰

    2026년 03월 02일 12:29:01

  • R
    reading-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