Skip to content

feat: 정책 목록/상세 응답에 자격조건 코드 필드 추가 (추천 하드필터 복구) - #220

Merged
sjungwon03 merged 1 commit into
devfrom
feat/92-policy-eligibility-codes
Jul 24, 2026
Merged

feat: 정책 목록/상세 응답에 자격조건 코드 필드 추가 (추천 하드필터 복구)#220
sjungwon03 merged 1 commit into
devfrom
feat/92-policy-eligibility-codes

Conversation

@sjungwon03

Copy link
Copy Markdown
Member

변경 내용

  • PolicyDetailResponse, PolicyCardResponse에 자격 판정용 내부 코드 5종(maritalStatusCode, majorCodes, jobCodes, schoolCodes, specializationCodes) 추가. Policy 엔티티는 이미 해당 필드를 갖고 있어 엔티티 변경은 없음 — from(Policy, ...) 매핑만 갱신.
  • PolicyCardResponse도 함께 추가한 이유: 이 백엔드 저장소만으로는 프론트의 buildRecommendations(front-end#91)가 카드 응답과 상세 응답 중 어느 쪽을 소비하는지 확인할 수 없었음. 이슈 본문 지침대로 PolicyDetailResponse는 필수 추가, PolicyCardResponse는 기본적으로 추가하는 방향을 택함 — 추가 필드가 전부 짧은 콤마목록 문자열이라 payload 증가가 미미하고, 카드 목록에서도 프론트가 동일한 하드필터를 적용할 수 있어야 화면 종류와 무관하게 부적격 정책이 새지 않기 때문.
    • 참고로 확인해보니 이 백엔드에는 이미 /api/v1/recommended-policies(RecommendedPolicyService)라는 별도의 서버사이드 맞춤추천 엔드포인트가 있고, 여기는 Policy 엔티티를 직접 참조해 결혼·전공·취업·학력·특화조건 하드필터를 이미 정확히 수행 중이다. 이슈에서 말하는 프론트 buildRecommendations는 이 엔드포인트와는 별개로 프론트가 카드/상세 목록을 가지고 자체적으로 돌리는 로직으로 보인다(프론트 코드가 이 저장소에는 없어 단정은 불가). 이번 PR은 이슈 지시대로 PolicyCardResponse/PolicyDetailResponse에 필드를 노출하는 것까지만 처리했고, RecommendedPolicyResponse(카드 응답과 별도로 자체 필드를 갖는 DTO)는 이미 서버에서 필터링이 끝난 뒤의 결과라 범위에 포함하지 않음.
  • PolicyComparisonItemResponse는 이번에 필드를 추가하지 않음 — 비교표는 원문 필드(추가 자격조건·참여 제한사항 등)만 나란히 보여주는 용도로 유지. 다만 그 javadoc과 docs/api-spec.md의 "상세와 동일하게 노출하지 않는다"는 문구가 이번 변경으로 사실과 달라져(상세는 이제 노출) 오해를 막기 위해 문구만 최신화함.

검증

  • export JAVA_HOME="$HOME/.sdkman/candidates/java/21.0.10-tem" 후:
    • ./gradlew spotlessApply — 통과 (포맷 정리)
    • ./gradlew test — 전체 테스트 통과 (BUILD SUCCESSFUL)
    • ./gradlew spotlessCheck — 통과
  • PolicyServiceTest: getDetail/getCards 응답에 새 필드 5종이 Policy 엔티티 값 그대로 채워지는지 검증하는 assertion 추가.
  • PolicyControllerTest: 상세 조회 API의 JSON 응답에 새 필드가 그대로 내려오는지 jsonPath 검증 추가.

프론트 매핑 필요 여부

새 응답 필드 5종을 추가했으므로, 프론트에서 PolicyDetailResponse/PolicyCardResponse를 매핑하는 지점(front-end#91에서 언급된 buildRecommendations 매퍼)에 이 필드들을 반영해 하드필터를 복구해야 함. 백엔드는 하위호환(필드 추가만, 기존 필드 변경 없음)이라 별도 마이그레이션은 필요 없음.

연결 이슈

Closes #92

프론트 추천 하드필터(buildRecommendations)가 결혼·전공·취업·학력·특화조건으로
부적격 정책을 제외하려면 정책 응답에 해당 코드가 있어야 하는데, PolicyCardResponse/
PolicyDetailResponse에는 이 필드가 없어 프론트 매퍼가 전부 '제한없음'으로 고정되고
있었다. Policy 엔티티는 이미 해당 필드를 갖고 있어 엔티티 변경 없이 두 응답 DTO에
jobCodes/schoolCodes/maritalStatusCode/majorCodes/specializationCodes를 추가하고
from(Policy) 매핑을 갱신했다. PolicyComparisonItemResponse는 여전히 비교표용 원문
필드만 노출하므로 관련 javadoc/문서만 최신화했다.

Closes #92

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@sjungwon03 sjungwon03 added the feat 기능 개발 label Jul 24, 2026
@sjungwon03 sjungwon03 self-assigned this Jul 24, 2026
@kilo-code-bot

kilo-code-bot Bot commented Jul 24, 2026

Copy link
Copy Markdown

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (6 files)
  • docs/api-spec.md
  • src/main/java/com/bop/youthpick/policy/dto/PolicyCardResponse.java
  • src/main/java/com/bop/youthpick/policy/dto/PolicyComparisonItemResponse.java
  • src/main/java/com/bop/youthpick/policy/dto/PolicyDetailResponse.java
  • src/test/java/com/bop/youthpick/policy/controller/PolicyControllerTest.java
  • src/test/java/com/bop/youthpick/policy/service/PolicyServiceTest.java

Reviewed by step-3.7-flash · Input: 78.3K · Output: 12.1K · Cached: 778.1K

@sjungwon03
sjungwon03 requested a review from myh7754 July 24, 2026 08:28
@sjungwon03
sjungwon03 merged commit 1b4c43d into dev Jul 24, 2026
2 checks passed
@sjungwon03
sjungwon03 deleted the feat/92-policy-eligibility-codes branch July 24, 2026 08:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feat 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: 정책 목록/상세 응답에 자격조건 코드 필드 추가 (추천 하드필터 복구)

1 participant