Skip to content

Conversation

@nayonsoso
Copy link
Collaborator

한 일

  • 추천 대학 조회 API 로직을 수정했습니다.
    • 코드를 개선했습니다. (개행 / 하드코딩 제거 등)
    • LazyLoading 예외를 해결했습니다.
  • 추천 대학 조회 API에 대한 테스트 코드를 작성했습니다.
    • 관심 국가만 설정한 회원
    • 관심 지역만 설정한 회원
    • 관심 국가와 지역 모두 설정한 회원
    • 회원이 아닌 사람
    • 4가지 경우에 대해 모두 테스트 코드 작서했습니다.
  • data.sql 을 사용해서 초기 데이터를 설정하는 환경에서 대학 목록이 조회되지 않는 문제를 해결했습니다.
    • data.sql에 language_requirement 를 추가해주었습니다.
    • language_requirement가 없더라도 대학교가 조회되도록, 조회 쿼리문의 join을 수정했습니다.

@leesewon00
Copy link
Member

leesewon00 commented Jul 24, 2024

추천 대학 조회

우선 빠르게 피드백 반영해주셔서 감사합니다.
pr 올리신 브랜치에서 수정사항 확인해보았습니다.
image

우선 테스트 코드들은 모두 정상동작함을 확인했습니다.
testcode

파악한 현재 상황입니다.

로그인하지 않았을 때

빈 리스트가 반환됩니다.
no-auth

관심 국가, 지역 모두 설정하지 않았을 때

아래와 같은 오류가 발생합니다.
no-both

관심 국가만 설정했을 때

아래와 같은 오류가 발생합니다.
interested_country

관심 지역만 설정했을 때

status 200
interested_region

관심 국가, 지역 모두 설정했을 때

status 200
both

요청사항

테스트 코드는 모두 정상적으로 동작함을 확인했습니다.
그런데 제가 swagger 및 postman 으로 확인할때, 위와같은 문제상황이 발생하는데
가능하시다면 로컬환경에서 다른 api 들도 swagger 및 postman 으로 정상동작하는지 확인 한번씩만 부탁드리겠습니다.

@leesewon00
Copy link
Member

leesewon00 commented Jul 24, 2024

회원가입

추가적으로 회원가입시 발생하는 문제입니다.
아래와 같이 회원가입 요청을 보냈을때, 관심 지역과 국가가 insert 되지 않고 있습니다.
이부분도 한번 확인해주시면 감사하겠습니다.

회원가입요청_1 회원가입요청_2 sql_1 sql2 sql_3

@nayonsoso
Copy link
Collaborator Author

nayonsoso commented Jul 24, 2024

꼼꼼히 확인해주셔서 감사합니다!
테스트 코드는 돌아가는데 로컬 환경에서는 안된다니.. 😓
제가 테스트 코드만 신경썼던 것 같네요😢

대학 추천 관련

발생하는 문제가 한가지로 해결되었습니다. 바로 GeneralRecommendUniversities에서 처음에 일반 추천 대학 목록을 초기화할 때 @PostConstruct@EventListener(ApplicationReadyEvent.class)로 바꾸니 해결되었습니다.

data.sql 로 데이터를 초기화하려면 yml 파일에서 jpa.defer-datasource-initialization: true로 설정해야 하는데요, 이 설정 때문에 Hibernate 로 테이블이 다 만들어진 다음 data.sql 초기화가 이루어졌습니다. 테이블을 먼저 완성하고 데이터를 insert 하는 것까지는 아주 자연스러운 순서이지요,

그런데 PostConstruct 는 해당 빈이 생성된 이후에 실행되는 메서드이므로, 스프링 컨테이너를 띄우는 과정에서 'Hibernate로 테이블을 생성 - 일반 추천 대학 목록 초기화 - data.sql 로 초기화'가 진행되었습니다. 이 과정에서 'DB 로부터 대학을 조회해오는' 일반 추천 대학 목록 초기화가 제대로 작동하지 않았습니다. 왜냐하면 data.sql 로 초기화되어야 할 데이터가 없으니까요!😱

@EventListener(ApplicationReadyEvent.class)를 사용하면 스프링 컨테이너가 다 준비가 된 상태에서 init 메서드를 호출할 수 있으므로 일반 대학 추천 목록을 잘 불러올 수 있었습니다. 수정 후, swagger로 호출해서 정상 작동 확인했습니다.

관심 국가 & 지역을 설정하지 않은 로그인 사용자

image

관심 지역(아시아)만 설정한 로그인 사용자

image

관심 국가(독일)만 설정한 로그인 사용자

image

로그인하지 않은 사용자

image

@nayonsoso
Copy link
Collaborator Author

nayonsoso commented Jul 24, 2024

관심 국가 & 지역 요청 형식

image

["아시아권", "유럽권"]과 같이 json 문자열배열로 요청주시면 됩니다!

자바에서 문자열을 표현하는게 "" 인데,
Swagger example를 자바 문자열로 지정할 때
JSON 에서 문자열 표기를 할 때도 "가 들어가서 이를 구분하기 위해서 \와 "를 포함해서 줬었는데요,
(윗줄처럼 하면 컴파일 에러 생기므로 아랫줄처럼 구성함)

그런데 스웨거에서 "[\"일본\", \"독일\"]" 형태 그대로 예시가 보여지는건 몰랐네요 ㅠㅠ
헷갈리셨을 것 같아 죄송합니다..
지금은 스웨거 example 수정해두었습니다.
요청을 주실때는 그냥 ❗️JSON 문자열 배열 ❗️처럼 주시면 됩니다!
그리고 그렇게 스웨거에서 요청주면 DB에 반영되는 것도 확인했습니다👍

스크린샷 2024-07-25 오전 12 21 24

@leesewon00
Copy link
Member

초기화 시점 때문에 발생한 문제였네요,, 하나 배워갑니다!!
고생 많으셨습니다~
추가로 작업하실 거 없으시면 병합해도 될 것 같습니다👍

@nayonsoso nayonsoso merged commit 63f832d into solid-connection:main Jul 25, 2024
@nayonsoso nayonsoso deleted the recommend-university-refactor branch August 1, 2024 06:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants