Skip to content

✨ [Feat] 추천 근거를 직무·트랙 항목별로 응답에 매핑#65

Merged
jwon0523 merged 1 commit into
developfrom
feat/63
Jun 4, 2026
Merged

✨ [Feat] 추천 근거를 직무·트랙 항목별로 응답에 매핑#65
jwon0523 merged 1 commit into
developfrom
feat/63

Conversation

@jwon0523

@jwon0523 jwon0523 commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

✨ PR 유형

✨ [Feat]

🛠️ 작업 내용

  • 추천 응답의 직무·트랙 근거를 영역 요약 일괄 복사 대신 항목별로 매핑
    • 직무: 항목별 근거(job_rationales)를 job_id 로 바인딩, 없으면 직무 영역 단락으로 안전 폴백
    • 트랙: 조합별 근거(track_rationales)를 combo_key 로 바인딩하고 조합 내 트랙 위치(A/B)별로 구분, 없으면 트랙 영역 단락으로 폴백
    • 조합 전체 근거(combo_rationale)를 개별 트랙 근거와 분리해 조합 reasoning 으로 노출
  • AI 응답 DTO 에 항목별 근거 레코드(JobRationale, TrackRationale) + Explanation 필드 추가
    • SnakeCaseStrategy 가 연속 대문자를 합쳐 track_arationale 로 매핑하는 문제를 @JsonProperty("track_a_rationale") 로 고정(B 동일)
  • 테스트: 결정론 단위 테스트(항목별 구분 + 안전 폴백), 계약 역직렬화 가드(snake_case 매핑), 실 AI 서버 호출 e2e(@Tag("e2e"), 서버 미기동 시 자동 스킵)

📋 추후 진행 상황

📌 리뷰 포인트

  • service/ — 항목별 근거 바인딩·폴백 우선순위(직무 job_id / 트랙 combo_key+위치 → 없으면 영역 단락) 로직 정합성
  • ai/ (DTO) — snake_case 매핑 고정(@JsonProperty)이 AI 와이어 필드명과 일치하는지
  • src/test/ — e2e 는 외부 AI 서버 의존이라 미기동 환경에서 스킵 처리되는 점(CI 실패 아님)

🔗 관련 이슈

Closes #63

📸 스크린샷

(해당 없음 — 백엔드 변경)

✅ 체크리스트

  • ./gradlew spotlessApply 로 포매팅 적용
  • ./gradlew spotlessCheck 통과
  • ./gradlew checkstyleMain checkstyleTest 통과
  • ./gradlew build 성공
  • ./gradlew test 모든 테스트 통과
  • 관련 문서 업데이트 / 커밋 메시지 컨벤션 확인

@jwon0523 jwon0523 self-assigned this Jun 4, 2026
@jwon0523 jwon0523 added the enhancement New feature or request label Jun 4, 2026
@jwon0523 jwon0523 merged commit b076c33 into develop Jun 4, 2026
@jwon0523 jwon0523 deleted the feat/63 branch June 4, 2026 21:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

✨ Feat: 추천 근거를 직무·트랙 항목별로 응답에 매핑

1 participant