PART2 쌍대비교 전환 (3지선다 → BIG5식 페어링)

ID: 58e3255a-cb16-4f9e-a7af-9d9474e7be8b

높음 완료

## 설명
강점 진단 PART2를 3지선다(36라운드)에서 BIG5식 쌍대비교(54라운드)로 변경.

### 변경 내용
- 매 라운드: 2개 도메인에서 1개씩 페어링 + "둘 다 해당 안됨"
- 페어링: 사고-관계 / 사고-행동 / 관계-행동 (18쌍씩, 랜덤 셔플)
- 사전 생성 방식 (session_seed 기반 deterministic)
- "둘 다 해당 안됨" = 타임아웃과 동일 패턴 (value=0, time=null)

### 변경 파일
1. `diagnosis_sessions_controller.rb` — 페어링 알고리즘, 상수, round 계산
2. `_part2_round.html.erb` — 2버튼 + "해당없음"
3. `_part2_guide.html.erb` — 미리보기 변경
4. `diagnosis_controller.js` — skipPart2Round 추가
5. i18n (4개 locale)
6. 컨트롤러 테스트

### DB 마이그레이션: 불필요
### 채점 로직 변경: 불필요

## 완료 기준
- [ ] 54라운드 쌍대비교 UI 정상 동작
- [ ] 108문항 정확히 소진 (중복 없음, 누락 없음)
- [ ] 18-18-18 페어 균형 보장
- [ ] "둘 다 해당 안됨" 선택 시 value=0 저장
- [ ] 30초 타임아웃 정상 동작
- [ ] 가이드 화면 업데이트
- [ ] i18n 4개 언어
- [ ] 기존 완료 세션 채점 호환
- [ ] 테스트 통과

첨부 이미지

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

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

담당자: 미배정
생성일: 2026년 03월 26일 05:45

활동 로그

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

    2026년 03월 26일 05:57:37

  • 팀리드 PART2 쌍대비교 전환 구현 완료

    2026년 03월 26일 05:51:55

    상세 보기

    ## 변경 사항

    ### 컨트롤러 (`diagnosis_sessions_controller.rb`)
    - `PART2_DOMAIN_PAIRS`, `PART2_QUESTIONS_PER_ROUND` 상수 추가
    - `prepare_part2_round_sequence`: 54라운드 사전 생성 (deterministic, session_seed 기반)
    - `next_part2_round`: 시퀀스에서 미응답 페어 반환
    - `setup_part2_state`: total_rounds = 시퀀스 크기
    - `current_round_number`: / 2로 변경

    ### 뷰
    - `_part2_round.html.erb`: 2버튼 + "둘 다 해당 안됨" 버튼
    - `_part2_guide.html.erb`: 미리보기 2개 + "해당없음"

    ### JS (`diagnosis_controller.js`)
    - `skipPart2Round` 메서드 추가
    - 선택자: `[data-part2-choice]`로 구분
    - response_time null 처리 개선

    ### i18n (ko, en, zh, vi)
    - `none_of_above` 키 추가
    - instruction/description 텍스트 변경
    - preview_3 제거

    ### 테스트
    - 기존 테스트 2개→3개로 수정 (pairwise, skip, constants)
    - 진단 관련 54개 테스트 전체 통과

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

    2026년 03월 26일 05:51:45

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

    2026년 03월 26일 05:45:31