Conversation
Spot, SpotImage 엔티티를 생성하고, Category 필드를 Enum 타입으로 추가하였습니다. 또한 Course와 Spot 간의 다대다 관계를 표현하기 위해 중간 테이블 역할을 하는 CourseSpot 엔티티도 함께 생성하였습니다.
WebClient를 활용해 [국문 관광정보] 위치기반 관광정보 API와 공통정보 조회 API를 호출하고, 응답을 DTO로 파싱하는 코드를 구현했습니다.
출발점과 종료점에서 관광지(12)와 음식점(39) 데이터를 [국문 관광정보] 위치기반 관광정보 API로 조회하는 기능을 추가했습니다. 각 좌표와 카테고리별로 최대 5개씩 데이터를 호출하며, 중복된 externalId는 Set으로 자동 제거됩니다.
수집된 externalId를 통해 [국문 관광정보] 공통정보 조회 API를 요청하여 Spot 관련 데이터를 DB에 저장하는 기능을 추가했습니다. 기존에 저장된 Spot이 있는 경우, 해당 Spot을 가져옵니다.
Spot, SpotImage, CourseImage Entity에 대한 데이터베이스 테이블을 생성하는 DDL을 추가했습니다.
[국문 관광정보] 측으로부터 받은 장소 이미지 URL을 AWS S3에 업로드하였습니다. 원본을 기준으로 하되, 없는 경우 썸네일을 사용하였습니다.
즐길거리 수정 API의 서비스 메서드들에 대하여 테스트 코드를 구현하고 테스트를 진행했습니다.
Course 패키지 내 Spot 관련 코드를 독립된 Spot 패키지로 분리하여 구조를 명확히 했습니다. 추가적으로 Category Enum 이름을 직관적인 SpotCategory로 변경했습니다.
…der 패턴으로 통일 (#75) 통일성을 위해 RoadCondition, CourseImage, Spot 클래스의 객체 생성 코드를 생성자 호출 방식에서 Builder 패턴으로 변경했습니다.
[국문 관광정보] 공통정보 조회 API와 위치기반 관광정보 API의 응답값 필드에 대해 유효하지 않은 경우 로그를 남기고 데이터베이스에는 저장되지 않도록 처리했습니다. 관련 테스트 코드도 함께 추가했습니다.
두루누비 코스 데이터 동기화 중 새로운 코스 생성 시, 길 상태 업데이트까지 함께 실행되도록 로직을 수정했습니다.
매일 새벽 4시 30분에 두루누비 코스 동기화 작업이 실행되도록 스케줄러를 생성했습니다.
응답 시간 단축을 위해 [국문 관광정보] 공통정보 조회 API와 위치기반 관광정보 API를 호출할 때 병렬 처리되게 추가했습니다. 추가적으로 API 호출이 일부만 성공하는 경우의 테스트 코드를 추가했습니다.
[SCRUM-212] 국문관광정보 API 연동 (#75)
두루누비 동기화 API 스케줄러 등록 (#93)
마이페이지에서 사용할 내 리뷰 조회 API를 구현했습니다. - MyReviewInfoDto 생성 - ReviewController.getMyReviews() 구현 - ReviewService.getMyReviews() 구현 - ReviewRepository.findReviewsWithDetailsByMemberId() 구현
내 리뷰 조회 API의 서비스 메서드에 대하여 테스트 코드를 구현했습니다. 테스트 케이스는 다음과 같습니다. - 내 리뷰 조회 성공 (작성한 리뷰가 있을 때) - 내 리뷰 조회 성공 (작성한 리뷰가 없을 때)
마이페이지용 북마크한 코스 조회 API를 구현했습니다.
북마크한 코스 조회 API의 서비스 메서드에 대하여 테스트 코드를 구현했습니다. 테스트 케이스는 다음과 같습니다. - 북마크한 코스 조회 성공 (전체 지역, 북마크한 코스 있음) - 북마크한 코스 조회 성공 (특정 지역, 북마크한 코스 있음) - 북마크한 코스 조회 성공 (전체 지역, 북마크한 코스 없음) - 북마크한 코스 조회 성공 (특정 지역, 북마크한 코스 없음)
특정 코스의 즐길거리 전체 정보를 조회하는 API를 구현했습니다. 장소의 이름, 설명, 이미지를 응답합니다.
즐길거리 전체 조회 API의 서비스 메서드들에 대하여 테스트 코드를 구현하고 테스트를 진행했습니다. (성공 2개, 실패 1개)
코스 요약 조회 API에 즐길거리 정보를 추가했습니다. 즐길거리 정보는 랜덤으로 3개 응답하며, 이름, 설명, 이미지를 포함합니다. 관련 테스트 코드에도 즐길거리 정보 검증을 추가했습니다.
코스 요약 조회 API에서 전체 리뷰 개수 조회 로직을 수정했습니다.
코스 요약 조회 시 최신순 리뷰 2개를 반환하도록 수정했습니다.
닉네임 중복 조회 API를 구현했습니다. 중복이지 않으면 true, 중복이면 false를 반환하고, 유효성 검증도 함께 수행합니다.
내 정보 수정 API를 구현했습니다. 현재는 닉네임만 수정 가능하며, 닉네임 수정 시 유효성 검증 및 중복 확인을 수행합니다.
내 리뷰 조회 API의 엔드포인트를 /api/me로 시작하도록 수정했습니다.
내 리뷰 조회 시 리뷰들이 최신순으로 반환되도록 정렬 조건을 추가했습니다.
북마크한 코스 조회 시, 북마크한 시점을 기준으로 응답을 최신순으로 정렬하도록 수정했습니다.
[SCRUM-235] 내 리뷰 조회 API 구현 (#95)
[SCRUM-236] 북마크한 코스 조회 API 구현 (#96)
BookmarkCountDto와 BookmarkInfoDto의 상위 패키지를 domain/bookmark로 변경했습니다.
fetch join을 사용하는 메서드임을 명시하고, 기본 JPA 메서드와 구분하기 위해 findByCourseId에서 findByCourseIdWithSpotImage로 JPA 메서드명을 변경했습니다.
getSpotDetails에서는 Course 객체가 필요하지 않고 Course 존재 여부만 확인하고 있으므로 Course 존재 여부를 확인할 때 findById가 아닌 existsById를 사용하도록 변경했습니다.
코드 가독성을 위해 SpotInfoDto, SpotDetailDto 생성 로직을 서비스로부터 분리했습니다.
[SCRUM-228] 즐길거리 전체 조회 API 구현 (#80)
닉네임 최소, 최대 길이를 상수 처리함으로써 숫자에 명확한 의미를 부여했습니다.
닉네임 중복 여부 조회 API와 내 정보 수정 API에서 @validated, @Valid를 각각 사용하여 닉네임을 공백이나 Null로 요청하는 경우 @notblank를 사용해 검증하도록 수정했습니다. 추가적으로 @validated 관련 Exception을 처리하기 위해 GlobalExceptionHandler에 ConstraintViolationException를 추가했습니다.
[SCRUM-239] 내 정보 수정 API 구현 (#99)
카카오 공유 시 한글 파일명으로 인한 URL 인코딩 불일치로 썸네일 이미지 Access Denied(403) 오류가 발생했습니다. 따라서 AWS S3에 파일 저장 시 한글을 제외한 영문 파일명만 허용되도록 수정했습니다. (영문, 숫자, 하이픈, 언더스코어만 허용)
내 정보 조회 API에서 회원의 닉네임과 이메일만 조회하도록 구현했습니다. 추후 북마크한 코스 정보와 생성한 코스 정보를 추가할 예정입니다.
BookmarkCountDto의 패키지 경로가 변경되었는데 레포지토리 메서드 내에서 해당 패키지 경로를 수정하지 않아 발생한 빌드 에러를 해결하였습니다.
AWS S3 파일 저장 시 영문 파일명으로 통일되도록 수정
[SCRUM-240] 내 정보 조회 API에서 닉네임 및 이메일 조회 구현 (#101)
코스 조회와 관련된 API 응답에 포함된 코스 길이와 고도값을 자연수 형태로 수정했습니다.
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.
📝 개요 (Overview)
이번 스프린트(Sprint-5) 기간 동안 개발된 기능 및 개선 사항들을
develop브랜치에서main브랜치로 통합합니다.이번 릴리즈는 즐길거리 조회 기능 완료와 마이페이지 기능 개발을 중점적으로 진행했습니다.
✨ 주요 변경 사항 (Key Changes)
🚀 신규 기능
📈 개선 및 리팩토링
✅ 테스트 항목 (Testing Checklist)
-[x] 리뷰 엔티티
📢 참고 사항 (Additional Notes)
V1_create_course_related_tables.sql)에 해당 테이블 DDL이 추가되었습니다. 스크립트를 참고하여 운영 DB의 스키마를 업데이트해야합니다.관련 이슈 (Related Issues)