사용자 관리 인덱스 개선 + 인라인 역할 수정 + 진단 뷰어
ID: bf7bfb3f-92a4-438c-8984-e0c25a162d8c
관리자 사용자 관리 페이지를 개선합니다.
## 요구사항
### 1. 인덱스 테이블 컬럼 추가
현재 index에는 이름/이메일/역할/생성일만 표시됩니다.
다음 컬럼을 추가하세요:
- **전화번호**: user_profiles 테이블의 phone_country_code + phone_number (예: +82 1012345678)
- **소속 워크스페이스**: workspace_members를 통한 워크스페이스 이름 목록 (쉼표 구분)
- **진단**: 진단 세션 수 (클릭 시 목록 표시)
### 2. 컨트롤러 수정 (app/controllers/admin/users_controller.rb)
- index 액션에서 `includes(:profile, :workspaces, :diagnosis_sessions)` eager loading 추가
- 검색(q 파라미터)에서 전화번호 검색도 지원: `LEFT JOIN user_profiles ON user_profiles.user_id = users.id` 후 phone_number ILIKE 검색 추가
- `update_role` 액션 추가: PATCH 요청으로 역할만 업데이트, Turbo Stream으로 응답
### 3. 인라인 역할 수정
- 역할 컬럼에서 역할 뱃지를 클릭하면 드롭다운(select)이 나타나도록
- Turbo Frame 또는 Stimulus 컨트롤러 사용
- 역할 선택 시 즉시 PATCH 요청으로 서버에 저장
- 성공 시 뱃지로 다시 표시
### 4. 진단 목록 뷰어
- 진단 수를 클릭하면 해당 사용자의 진단 세션 목록이 표시되도록
- Turbo Frame으로 진단 목록을 로드하거나 모달 사용
- 진단 목록에 표시할 정보: 진단 유형, 상태, 완료일
### 5. i18n
- 새로 추가되는 텍스트의 번역 키를 config/locales/ko.yml에 추가
## 주요 파일
- `app/controllers/admin/users_controller.rb`
- `app/views/admin/users/index.html.erb`
- `config/routes.rb` (update_role 라우트 추가 필요시)
- `config/locales/ko.yml`
- Stimulus 컨트롤러가 필요하면 `app/javascript/controllers/` 에 생성
## 참고
- 전화번호는 users 테이블이 아닌 user_profiles에 있음 (phone_country_code, phone_number)
- User 모델에 `has_one :profile, class_name: "UserProfile"` 연관 있음
- User 모델에 `has_many :workspaces, through: :workspace_members` 연관 있음
- 기존 role_label, role_badge_class 헬퍼가 이미 존재함
- 현재 정렬 가능 컬럼: name, email_address, role, created_at
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
팀팀리드 상태 변경: 리뷰 → 완료
2026년 02월 28일 07:37:33
-
Iimpl-dev 상태 변경: 할 일 → 리뷰
2026년 02월 28일 07:23:10
-
팀팀리드 impl-dev 구현 완료 확인, 테스트 에이전트 시작
2026년 02월 28일 07:23:05
상세 보기
## 완료된 작업
- 컨트롤러 eager loading, 전화번호 검색, update_role 액션
- 인덱스 뷰에 전화번호/워크스페이스/진단 컬럼 추가
- 인라인 역할 수정 (Stimulus inline-edit 재사용)
- 진단 목록 모달 (Stimulus toggle 재사용)
- i18n 번역 키 추가## 변경 파일
- `app/controllers/admin/users_controller.rb`
- `app/views/admin/users/index.html.erb`
- `app/views/admin/users/_role_cell.html.erb` (신규)
- `app/views/admin/users/_diagnosis_modal.html.erb` (신규)
- `config/routes.rb`
- `config/locales/ko.yml`기존 테스트 8건 통과 확인
-
Iimpl-dev Task 1~5 구현 완료, 기존 테스트 모두 통과
2026년 02월 28일 07:22:43
상세 보기
## 변경 사항
### Task 1: 컨트롤러 개선
- `app/controllers/admin/users_controller.rb`
- `includes(:profile, :workspaces, :diagnosis_sessions)` eager loading 추가
- 검색: `left_joins(:profile)` + `user_profiles.phone_number ILIKE` 추가
- `update_role` 액션 추가 (PATCH, Turbo Stream 응답)
- `before_action :set_user`에 `update_role` 추가
- `config/routes.rb`에 `patch :update_role` 라우트 추가### Task 2: 인덱스 뷰 개선
- `app/views/admin/users/index.html.erb`
- 전화번호 컬럼 추가 (phone_country_code + phone_number)
- 소속 워크스페이스 컬럼 추가 (truncate + title tooltip)
- 진단 컬럼 추가 (클릭 가능한 진단 수)### Task 3: 인라인 역할 수정
- `app/views/admin/users/_role_cell.html.erb` 생성
- 기존 `inline-edit` Stimulus 컨트롤러 재사용
- 뱃지 클릭 → select 드롭다운 표시
- 선택 시 `onchange`로 즉시 PATCH 요청
- Turbo Stream으로 뱃지 교체 응답### Task 4: 진단 목록 뷰어
- `app/views/admin/users/_diagnosis_modal.html.erb` 생성
- `toggle` Stimulus 컨트롤러로 모달 토글
- 진단 유형, 상태, 완료일, 상세 링크 표시### Task 5: i18n
- `config/locales/ko.yml`에 번역 키 추가
- phone, workspaces, diagnosis_count, role_updated
- diagnosis_modal 섹션 (title, type, status, completed_at, view, empty)## 테스트 결과
- 기존 admin 컨트롤러 테스트: 8 runs, 16 assertions, 0 failures -
Iimpl-dev 코드베이스 분석 완료, Task 1 (컨트롤러 개선) 및 Task 5 (i18n) 작업 시작
2026년 02월 28일 07:19:07
상세 보기
## 분석 완료 항목
- `app/controllers/admin/users_controller.rb` - 현재 eager loading 없음, 검색에 이름/이메일만 지원
- `app/views/admin/users/index.html.erb` - 이름/이메일/역할/가입일 4컬럼만 표시
- `app/helpers/admin_helper.rb` - role_badge_class, role_label 헬퍼 확인
- `app/javascript/controllers/inline_edit_controller.js` - 기존 인라인 편집 Stimulus 컨트롤러 존재
- `config/locales/ko.yml` - admin.users 섹션 확인
- User 모델: has_one :profile, has_many :workspaces (through), has_many :diagnosis_sessions
- UserProfile 모델: phone_number, phone_country_code 필드 확인