prepare_all_big5_rounds 세션별 캐싱
ID: f3099df8-588d-4223-bb87-de3c5dfc9b35
## 문제
`diagnosis_sessions_controller.rb#prepare_all_big5_rounds`가 매 show 요청마다 실행 (300-500ms).
90개 문항 + 번역 로드 + 45라운드 생성. 세션 ID 기반 결정론적 RNG이므로 결과 항상 동일.
## 변경
```ruby
def prepare_all_big5_rounds
Rails.cache.fetch(["big5_rounds", @session.id, I18n.locale], expires_in: 1.day) do
# 기존 로직
end
end
```
또한 `load_questions`와 `prepare_all_big5_rounds`의 이중 쿼리 통합:
- load_questions에서 한 번 로드한 것을 재활용하도록 리팩토링
## 완료 기준
- [ ] show 페이지 캐시 히트 시 응답시간 300-500ms → 10-30ms
- [ ] 새로고침 시 동일 라운드 데이터 반환
- [ ] bin/ci 통과
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
팀팀리드 리뷰 완료 - 승인 (prepare_all_big5_rounds 캐싱)
2026년 03월 09일 07:05:47
상세 보기
## 리뷰 결과
- 상태: 승인
- 코드 품질: 캐시 키 설계(session.id + locale) 적절. includes(:translations)로 N+1 방지
- 보안: 캐시 오염 불가 확인
- UX/UI: 해당 없음 -
팀팀리드 상태 변경: 리뷰 → 완료
2026년 03월 09일 07:04:42
-
Rrails-dev 캐싱 최적화 2건 구현 완료
2026년 03월 09일 05:15:03
상세 보기
## 변경 사항
### 1. `prepare_all_big5_rounds` 세션별 캐싱
- **파일**: `app/controllers/diagnosis_sessions_controller.rb`
- `Rails.cache.fetch(["big5_rounds", @session.id, I18n.locale], expires_in: 1.day)` 적용
- 세션 ID + locale 기반 캐시 키로 동일 세션 재방문 시 라운드 재생성 방지### 2. `build_description_cache` 쿼리 캐싱
- **파일**: `app/services/diagnosis/big5_result_formatter.rb`
- `Rails.cache.fetch("big5:descriptions:#{locale}", expires_in: 1.day)` 적용
- Big5Description 테이블 쿼리를 locale별로 1일 캐싱### 3. 테스트 추가
- **파일**: `test/controllers/diagnosis_sessions_controller_test.rb` — 캐시 히트/미스, locale별 분리 2건
- **파일**: `test/services/diagnosis/big5_result_formatter_test.rb` — 캐시 동작, DB 쿼리 스킵, locale별 분리, nil json_data 4건### 테스트 결과
- 14 runs, 29 assertions, 0 failures, 0 errors (관련 테스트 전체 통과)
- 기존 실패는 Admin::PaymentsTest, CustomPaymentsTest (변경과 무관) -
Rrails-dev 상태 변경: 진행 중 → 리뷰
2026년 03월 09일 05:14:50
-
Rrails-dev 캐싱 최적화 시작
2026년 03월 09일 05:11:03
상세 보기
## 작업 범위
- `prepare_all_big5_rounds` 세션별 캐싱 (diagnosis_sessions_controller.rb)
- `build_description_cache` 쿼리 캐싱 (big5_result_formatter.rb)
- 이중 쿼리 제거
- 캐싱 관련 테스트 작성 -
팀팀리드 티켓 클레임 완료
2026년 03월 09일 05:09:05
-
팀팀리드 상태 변경: 할 일 → 백로그
2026년 03월 09일 05:04:29