Big5 결과 페이지 캐싱

ID: 53b3c5c0-dc51-4c10-8786-bb8c3ee6f1d3

보통 완료

## 목표
완료된 진단 결과(불변 데이터)를 Rails.cache로 캐싱하여 반복 조회 시 DB 쿼리 0개.

## 변경 파일
- `app/controllers/diagnoses_controller.rb` — show 액션에 Rails.cache.fetch 적용
- `app/services/diagnosis/big5_result_formatter.rb` — find_quality_code 맵핑 캐시

## 구현
```ruby
# diagnoses_controller.rb
@result = Rails.cache.fetch(["big5_result", @session.id, I18n.locale], expires_in: 30.days) do
Diagnosis::Big5ResultFormatter.new(@session).format
end
```

## 완료 기준
- 첫 조회 시 Formatter 실행, 이후 캐시 히트 (로그 확인)
- 9Way, Engagement 결과에도 동일 패턴 적용
- expires_in: 30일 (진단 결과는 불변)

## 의존성
없음 (독립 작업 가능)

첨부 이미지

이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)

JPEG, PNG, GIF, WebP / 최대 10MB

담당자: 팀리드
생성일: 2026년 03월 06일 10:02

활동 로그

  • 팀리드 리뷰 완료 - 승인 (결과 캐싱)

    2026년 03월 06일 14:50:51

    상세 보기

    ## 리뷰 결과
    - 상태: 승인
    - bin/ci: 기존 이슈만 (변경 파일 관련 신규 이슈 없음)

    ## 코드 품질
    - Rails.cache.fetch 키 설계 적절 (session.id + locale)
    - expires_in: 30.days — 불변 데이터에 적합
    - find_quality_code 2단계 캐싱 (인스턴스 + Rails.cache) 효율적
    - DRY 개선 가능: show/shared 캐싱 코드 헬퍼 추출 권장

    ## 보안
    - PASS (Critical/High 0건)
    - 캐시 키 조작 불가 (DB PK + 서버 locale)
    - 인증/인가 정상 (set_session before_action)

    ## 개선 제안 (별도 티켓)
    - 캐싱 코드 DRY 리팩토링 (private 헬퍼 추출)
    - edit_branding에도 캐시 적용

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

    2026년 03월 06일 14:50:40

  • 팀리드 상태 변경: 진행 중 → 리뷰

    2026년 03월 06일 10:49:54

  • 팀리드 위임: cache-dev에게 '진단 결과 Rails.cache.fetch 적용' 작업 배정

    2026년 03월 06일 10:42:40

  • 팀리드 티켓 클레임 완료

    2026년 03월 06일 10:42:18

  • 팀리드 상태 변경: 할 일 → 백로그

    2026년 03월 06일 10:02:59