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

ID: f4ce25f9-c538-4ed1-9fb9-6e9029bed80a

높음 완료

## 목표
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 쿼리 없음

첨부 이미지

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

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

담당자: admin-user-dev
생성일: 2026년 02월 27일 15:15

활동 로그

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

    2026년 02월 27일 15:23:52

  • 팀리드 상태 변경: 할 일 → 리뷰

    2026년 02월 27일 15:20:18