diagnoses + strength_profile API endpoints
ID: 09c54fa9-0991-49c8-99f0-a63571e11ba4
## 작업 내용
1. 먼저 기존 모델 구조 파악:
- `app/models/diagnosis_session.rb` — 진단 세션 모델 확인
- `app/models/` — 강점 관련 모델 확인 (strength, diagnosis_result 등)
- 기존 뷰에서 진단 결과 어떻게 표시하는지 확인
2. `Api::V1::Users::DiagnosesController` 생성 (`GET /api/v1/users/:user_id/diagnoses`):
- doorkeeper scope: `:diagnoses`
- Client Credentials일 경우 params[:user_id]로 사용자 조회
- Authorization Code일 경우 현재 토큰 소유자만 허용 (또는 user_id 일치 확인)
- 응답: 진단 이력 목록 (id, completed_at, status 등)
3. `Api::V1::Users::StrengthProfilesController` 생성 (`GET /api/v1/users/:user_id/strength_profile`):
- doorkeeper scope: `:strengths`
- 가장 최근 완료된 진단의 강점 프로필 반환
- 응답: top strengths, 점수, 완료 일시 등
4. JSON 직렬화:
- jbuilder 사용 (프로젝트에 이미 있을 경우) 또는 `render json:` + `as_json`
- 민감 정보 제외 (password_digest 등)
## 의존성
- backend-dev의 BaseController + routes 완료 후 작업
## 참고
- `Api::V1::BaseController`를 상속
- doorkeeper_authorize! 는 BaseController에서 처리됨
- scope별 접근 제어: `before_action -> { doorkeeper_authorize! :diagnoses }`
## 완료 기준
- GET /api/v1/users/:id/diagnoses 동작
- GET /api/v1/users/:id/strength_profile 동작
- scope 미충족 시 403 응답
- Client Credentials + Authorization Code 모두 지원
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
팀팀리드 상태 변경: 리뷰 → 완료
2026년 03월 01일 03:50:21
-
Aapi-dev 상태 변경: 할 일 → 리뷰
2026년 03월 01일 03:46:56
-
Aapi-dev 진단/강점 API 구현 완료 - 테스트 20개 전체 통과
2026년 03월 01일 03:46:55
상세 보기
## 생성한 파일
- `app/controllers/api/v1/users/diagnoses_controller.rb` - 진단 세션 목록 API
- `app/controllers/api/v1/users/strength_profiles_controller.rb` - 강점 프로필 API
- `test/controllers/api/v1/users/diagnoses_controller_test.rb` - 진단 API 테스트 (10개)
- `test/controllers/api/v1/users/strength_profiles_controller_test.rb` - 강점 API 테스트 (10개)## 구현 내용
### DiagnosesController
- `GET /api/v1/users/:user_id/diagnoses`
- `doorkeeper_authorize! :diagnoses` scope 검증
- Authorization Code: 자기 자신만 조회 가능 (user_id 일치 확인)
- Client Credentials: user_id로 조회 (제한 없음)
- 응답: 진단 세션 목록 (id, status, locale, is_primary, start_time, end_time, diagnosis_type)
- 민감 정보(json_data, share_token, payment_id) 제외### StrengthProfilesController
- `GET /api/v1/users/:user_id/strength_profile`
- `doorkeeper_authorize! :strengths` scope 검증
- 가장 최근 completed 진단의 강점 결과 반환
- 진단 결과 없으면 404
- 응답: top_dna(5개), top_way, top_domain, way_scores, domain_scores, session 메타데이터## 테스트 결과
- API 전체 48개 테스트 통과 (기존 28 + 신규 20)
- 기존 테스트 regression 없음 -
Aapi-dev 작업 시작 - 진단/강점 API
2026년 03월 01일 03:43:43
상세 보기
## 구현 대상
- `app/controllers/api/v1/users/diagnoses_controller.rb` - 진단 세션 목록 API
- `app/controllers/api/v1/users/strength_profiles_controller.rb` - 강점 프로필 API## 모델 구조 파악 완료
- DiagnosisSession: status, json_data, user_id, diagnosis_type_id
- DiagnosisType → DiagnosisCategory + DiagnosisTarget
- Diagnosis::ResultFormatter → json_data에서 강점 데이터 추출
- Doorkeeper scopes: diagnoses, strengths