feat: 정책 목록/상세 응답에 자격조건 코드 필드 추가 (추천 하드필터 복구) - #220
Merged
Conversation
프론트 추천 하드필터(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>
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (6 files)
Reviewed by step-3.7-flash · Input: 78.3K · Output: 12.1K · Cached: 778.1K |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
변경 내용
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