백로그

0
티켓 없음

할 일

0
티켓 없음

진행 중

0
티켓 없음

리뷰

0
티켓 없음

완료 (전체)

2
긴급 7f1b04ff
서브 티켓 Big5 응답 일괄 제출 (레거시 패턴)

Server: 일괄 제출 API + upsert_all + N+1 제거

## 목표 Big5 일괄 제출을 위한 서버 API 구현 + 기존 코드 N+1 제거. ## ⚠️ 리뷰 반려 사유 (2026-03-09) ### [CRITICAL] r[:selected] 타입 안전성 (controller:110) - `r[:selected] ? 1 : 0`에서 ActionController::Parameters를 통해 문자열 `"false"`가 올 경우 Ruby에서 truthy → 모든 응답이 1로 저장되는 치명적 버그 - **수정**: `ActiveModel::Type::Boolean.new.cast(r[:selected]) ? 1 : 0` 사용 ### [HIGH] question_id 타입 불일치 (controller:87-88) - `submitted_ids`가 문자열 Set, `valid_question_ids`가 UUID Set → 검증 무력화 가능 - **수정**: `r[:question_id].to_s`로 타입 통일 ### [HIGH] valid_questions_index 키 타입 불일치 (controller:107) - `index_by(&:id)` 키가 UUID인데 `r[:question_id]`가 문자열 → dna_type이 nil로 저장 - **수정**: `valid_questions_index[r[:question_id].to_s]` 또는 키 타입 통일 --- ## 작업 내용 (이하 기존 내용 동일) ### 1. 새 컨트롤러 액션: submit_all_big5_responses - POST /diagnosis_sessions/:id/submit_all_big5_responses - params: { responses: [{ question_id:, selected: true/false, response_time: }] } - 90개 응답(30라운드 × 3문항)을 한 번에 수신 - 서버 검증: 응답 수 확인, question_id 유효성, 세션 상태 확인 ### 2. session_manager: save_responses_bulk - upsert_all 활용 ### 3. N+1 제거 (기존 코드) ### 4. 라우트 추가 ## 완료 기준 - 반려 사유 3건 모두 수정 - 타입 안전성 테스트 추가 - 기존 테스트 통과

B
backend-dev
2 days
긴급 5e4a64e1
서브 티켓 Big5 응답 일괄 제출 (레거시 패턴)

Client: Stimulus 컨트롤러 + sessionStorage + 라운드 전환

## 목표 Big5 진단의 라운드별 AJAX 제출을 클라이언트 누적 + 최종 1회 제출로 변경. ## ⚠️ 리뷰 반려 사유 (2026-03-09) ### [MUST-FIX] 접근성 ARIA 속성 누락 - 질문 카드에 `role="radio"`, `aria-checked` 없음 - 컨테이너에 `role="radiogroup"` 없음 - neither 버튼에 `aria-label` 없음 - 카운트다운에 `role="timer"`, `aria-live="polite"` 없음 - 선택 시 `aria-checked="true"` 상태 변경 필요 ### [MUST-FIX] JS 내 한국어 텍스트 하드코딩 - `_showSubmitting()`, `_showComplete()`, `_showError()` 내 텍스트가 한국어만 - 4개 언어(ko, en, zh, vi) 지원인데 i18n 미적용 - **수정**: Stimulus value로 번역 텍스트 전달 또는 서버 렌더링 `<template>` 사용 ### [MUST-FIX] 타임아웃 자동 스킵 피드백 부재 - 30초 경과 시 자동으로 다음 라운드로 넘어가지만 사용자 안내 없음 - 토스트 메시지 또는 안내 텍스트 필요 --- ## 작업 내용 (이하 기존 내용 동일) ### 1. Stimulus 컨트롤러: big5_batch_controller.js ### 2. 클라이언트 라운드 전환 ### 3. sessionStorage 폴백 ### 4. 뷰 수정 ## 완료 기준 - 반려 사유 3건 모두 수정 - ARIA 접근성 테스트 확인 - 4개 언어에서 UI 텍스트 정상 표시 - 기존 기능 동작 유지

F
frontend-dev
2 days