백로그

0
티켓 없음

할 일

0
티켓 없음

진행 중

0
티켓 없음

리뷰

0
티켓 없음

완료 (전체)

1
높음 f4ce25f9
서브 티켓 사용자 진단

사용자 상세 - 진단 이력 확장 (DNA 5개, 결제상태 변경, 메모)

## 목표 admin/users/show 페이지의 진단 이력 섹션을 확장합니다. ## 현재 상태 - `app/views/admin/users/show.html.erb` 55-80행에 기본 진단 이력 있음 (slug, 날짜, status만 표시) - `app/controllers/admin/users_controller.rb` show 액션에서 `@diagnosis_sessions` 로드 ## 변경 사항 ### 1. 컨트롤러 수정 (`app/controllers/admin/users_controller.rb`) - `show`에서 `includes(:diagnosis_type, :payment)` 추가 - `includes`에 `diagnosis_type: [:category, :target]`도 포함 ### 2. 뷰 수정 (`app/views/admin/users/show.html.erb`) 진단 이력 테이블에 다음 컬럼 추가: - **진단 유형**: `session.diagnosis_type.slug` (예: "strength_adult") - **Top 5 DNA**: `session.json_data["scored_dna"]`에서 상위 5개 DNA name 표시 - `json_data["scored_dna"]`가 배열로 [{key, name, score}, ...] 형태 - 없으면 `json_data.dig("top_dna")` 확인 - 각 DNA name을 작은 badge로 표시 - **결제 상태**: 결제 여부 badge + 변경 버튼 - `session.report_purchased?` → "유료" (green badge) - 미결제 → "무료" (gray badge) + "유료로 변경" 버튼 - 유료 → "무료로 변경" 버튼 (결제 해제) - **메모**: `session.memo` 표시 (truncate 50) - **완료일**: `session.end_time` 표시 ### 3. 결제 상태 변경 API - `admin/users_controller.rb`에 `toggle_payment` 액션 추가 - 라우트: `patch :toggle_payment` (member) - 로직: - 유료→무료: `session.update!(payment: nil)` (payment_id를 nil로) - 무료→유료: 새 Payment 생성 (free payment) ```ruby payment = Payment.create!( user: session.user, order_id: "admin_free_#{session.id}_#{Time.current.to_i}", amount: 0, status: "completed", payment_type: "report", currency: "KRW", payment_key: "admin_granted", approved_at: Time.current ) session.update!(payment: payment) ``` - Turbo를 사용하거나 단순 redirect_to로 처리 ### 4. 라우트 추가 (`config/routes.rb`) admin namespace 안에: ```ruby resources :users, only: %i[index show edit update] do member { patch :toggle_payment } end ``` 주의: 기존 `resources :users, only: %i[index show edit update]`를 block 형태로 변경 ## 스타일 참고 - 기존 admin 뷰 패턴 따르기 (Tailwind CSS) - badge: `inline-flex items-center px-2 py-0.5 rounded text-xs font-medium` - green: `bg-status-success-light text-status-success-text` - gray: `bg-gray-100 text-gray-600` - 버튼: `text-xs text-admin-primary hover:underline` ## 완료 기준 - 진단 이력에 유형, DNA 5개, 결제상태, 메모, 완료일 표시 - 결제 상태 토글 동작 (유료↔무료) - N+1 쿼리 없음

A
admin-user-dev
12 days