Skip to content

[Refactoring] 알림 전반적인 최적화 #157#158

Closed
rlgkghkd wants to merge 141 commits intodevfrom
refactor/#157/notificaion-allaround-refactor
Closed

[Refactoring] 알림 전반적인 최적화 #157#158
rlgkghkd wants to merge 141 commits intodevfrom
refactor/#157/notificaion-allaround-refactor

Conversation

@rlgkghkd
Copy link
Copy Markdown
Collaborator

📌 관련 이슈

✨ 기능 요약

항목 내용
🆕 기능명 알림 전반적인 성능 최적화
🔍 목적 빠르고 강한 알림
🛠️ 변경사항 알림 수신자 기준 인덱싱 적용, 알림 생성 메서드 레퍼런스 맵핑 일괄 적용

📝 상세 내역

번호 내용
1️⃣ notification_info 수신자 기준으로 인덱싱
2️⃣ 모든 알림 생성 전략 수신자 맵핑을 엔티티에서 레퍼런스로 교체
3️⃣ 구독자 알림 탐색 쿼리 최적화

mo00ai and others added 30 commits May 30, 2025 00:30
* feat: Review 엔티티

* feat: Comment 엔티티 생성

* feat: Notification 관련 엔티티 및 에넘

* fix: deletedAt, isRead 기본값 수정

* fix: Review isPresented 필드 추가

* fix: added generated id, added AllArgsConstructor, fixed incorrect annotation usage
* ✨feat : store 도메인 엔티티 생성

* ✨ feat : 기본 생성자 및 빌더 추가

* ✨ feat : repository 틀 생성 및 빌더 적용

* ✨ feat : 생성자 어노테이션 추가

* ✨ feat : Enumerated 어노테이션 적용

* ✨ feat : Getter 어노테이션 적용
* feat : image entity 구현

* feat : BaseCreatedEntity 생성

* feat : Pk 관련 Entity,enum 파일  생성

* style : checkstyle 반영

* refactor : builder 수정

* refactor : enumerated 추가

* refactor : rank 예약어 오류 수정
* feat: 게시글(Board) 엔티티 생성(연관관계 제외)

- BoardType, BoardStatus enum 매핑 적용

* feat: 게시글-해시태그 연관관계 설정 및 이벤트 관련 엔티티 생성

- Board ↔ BoardHashtag 양방향 연관관계 설정 (게시글 기준 해시태그 조회)
- BoardHashtag → Hashtag 단방향 다대일 연관관계 설정
- 연관관계 일관성 유지를 위한 편의 메서드 구현
- Like, Event, BoardEvent 엔티티 생성
- 게시글과 이벤트 간 연관관계 설정
- 모든 엔티티 생성자에 빌더 패턴 적용 (팀 규칙 반영)

* rename: Like 엔티티 테이블명을 'likes'로 변경

- 예약어 'like'로 인한 충돌 방지를 위해 테이블명을 'likes'로 수정

* refactor: Event 엔티티 필드에 @column(nullable = false) 설정 추가

* refactor: BoardEvent 생성자에서 잘못된 void 반환 타입 제거
* Feat: 유저 엔티티 추가

* Feat: 파티, 파티초대, 유저/파티 매칭 조건 추가

* Feat: Chat 엔티티 추가

* Feat: 생성일 엔티티 상속 적용

* Feat: 유저 생성자 추가

* Feat: 유저 이미지 연관관계 추가
* ✨feat : store 도메인 엔티티 생성

* ✨ feat : 기본 생성자 및 빌더 추가

* ✨ feat : repository 틀 생성 및 빌더 적용

* ✨ feat : 생성자 어노테이션 추가

* ✨ feat : Enumerated 어노테이션 적용

* ✨ feat : Getter 어노테이션 적용

* ♻️  refactor : User 연관관계 추가 및 어노테이션 적용
* feat: 게시글(Board) 엔티티 생성(연관관계 제외)

- BoardType, BoardStatus enum 매핑 적용

* feat: 게시글-해시태그 연관관계 설정 및 이벤트 관련 엔티티 생성

- Board ↔ BoardHashtag 양방향 연관관계 설정 (게시글 기준 해시태그 조회)
- BoardHashtag → Hashtag 단방향 다대일 연관관계 설정
- 연관관계 일관성 유지를 위한 편의 메서드 구현
- Like, Event, BoardEvent 엔티티 생성
- 게시글과 이벤트 간 연관관계 설정
- 모든 엔티티 생성자에 빌더 패턴 적용 (팀 규칙 반영)

* rename: Like 엔티티 테이블명을 'likes'로 변경

- 예약어 'like'로 인한 충돌 방지를 위해 테이블명을 'likes'로 수정

* refactor: Event 엔티티 필드에 @column(nullable = false) 설정 추가

* refactor: BoardEvent 생성자에서 잘못된 void 반환 타입 제거

* feat: 게시글, 공감 엔티티의 연관관계 및 편의 메서드 설정

- 연관관계 설정 및 편의 메서드 구현

* feat: 댓글과 게시글 간 연관관계 설정

* feat: 게시글과 게시글 이미지 연관관계 설정

- 연관관계 편의 메서드 정의하여 양방향 관계 유지
* refactor: 리뷰 연관관계 수정

* fix: joinColumn 수정

* fix: store and board 연관관계 수정
* Feat: 유저 엔티티 추가

* Feat: 파티, 파티초대, 유저/파티 매칭 조건 추가

* Feat: Chat 엔티티 추가

* Feat: 생성일 엔티티 상속 적용

* Feat: 유저 생성자 추가

* Feat: 유저 이미지 연관관계 추가

* Feat: 파티 도메인 연관관계 추가

* Feat: 팔로우 엔티티 추가

* Feat: 유저 취향 엔티티 추가

* Feat: 생성자 추가

* Fix: 연관 관계 맵핑 수정

* Fix: 연관 관계 맵핑 수정

* Feat: Favor 생성자 추가

* Feat: Favor 생성자 추가
* refactor: Comment 연관관계 설정

* feat: create comment controller, service, repository, dto for create request

* [Feature] Board, Hashtag, Like 관련 entity 생성 #6 (#12)

* feat: 게시글(Board) 엔티티 생성(연관관계 제외)

- BoardType, BoardStatus enum 매핑 적용

* feat: 게시글-해시태그 연관관계 설정 및 이벤트 관련 엔티티 생성

- Board ↔ BoardHashtag 양방향 연관관계 설정 (게시글 기준 해시태그 조회)
- BoardHashtag → Hashtag 단방향 다대일 연관관계 설정
- 연관관계 일관성 유지를 위한 편의 메서드 구현
- Like, Event, BoardEvent 엔티티 생성
- 게시글과 이벤트 간 연관관계 설정
- 모든 엔티티 생성자에 빌더 패턴 적용 (팀 규칙 반영)

* rename: Like 엔티티 테이블명을 'likes'로 변경

- 예약어 'like'로 인한 충돌 방지를 위해 테이블명을 'likes'로 수정

* refactor: Event 엔티티 필드에 @column(nullable = false) 설정 추가

* refactor: BoardEvent 생성자에서 잘못된 void 반환 타입 제거

* [Feature] User, Party, Chat, RandomMatchingCondition 엔티티 #7 (#13)

* Feat: 유저 엔티티 추가

* Feat: 파티, 파티초대, 유저/파티 매칭 조건 추가

* Feat: Chat 엔티티 추가

* Feat: 생성일 엔티티 상속 적용

* Feat: 유저 생성자 추가

* Feat: 유저 이미지 연관관계 추가

* feat: add comment creation

* feat:add update comment

* feat: add update, soft delete api

* feat: add getAllComment api

* feat: add api to get single comment

* feix: add parent, root, child relationships to Comment

* refactor: separate root and nested comments for pagination

* refactor: remove unnecessary ResponseEntity

* fix: corret delete mapping

---------

Co-authored-by: modesty <108976049+Chaemin07@users.noreply.github.com>
Co-authored-by: YejinYoon <68535398+YejinY00n@users.noreply.github.com>
# Conflicts:
#	src/main/java/com/example/taste/domain/image/entity/BoardImage.java
#	src/main/java/com/example/taste/domain/image/entity/Image.java
* feat : image entity 구현

* feat : BaseCreatedEntity 생성

* feat : Pk 관련 Entity,enum 파일  생성

* style : checkstyle 반영

* refactor : builder 수정

* refactor : enumerated 추가

* refactor : rank 예약어 오류 수정

* feat : image, pk entity들 연관관계 추가

* feat : image S3 Service 분리

* feat : image 테스트 전, 기능 구현 완료, 수정 필요

* fix : 테스트 하면서 수정함

* fix : PR template 위치 수정

* fix : 주석 삭제, 불필요한 코드 제거

* fix : ImageService update 수정

* fix : ImageResponseDto builder 삭제 후 생성자 사용
* Feat: 자신의 프로필 조회 기능 추가

* Feat: 다른 유저 프로필 조회 기능 추가

* Feat: 유저 정보 수정 기능 추가

* Feat: 유저 탈퇴 기능 추가

* Feat: 유저 언/팔로우 기능 추가

* Feat: 유저 입맛 취향 수정 기능 추가

* Feat: 팔로우/언팔로우 숫자 반영

* Feat: 팔로우/팔로워 목록 조회 기능 추가

* Feat: 입맛 취향 관리자 추가/수정 기능 추가

* Feat: 입맛 관리자 CRUD 기능 추가
* ✨feat : createBucket 구현

* ✨feat : addStore 구현

* ✨feat : getStore 구현

* ✨feat : 기본 crud 구현

* ✨feat : 기본 crud 구현

* ✨feat : 유효성 검증

* 🚚move : 유저 관련 error code 이동

* 🚚 move : User 도메인 errorcode 이동

* 🐛fix : USER_NOT_FOUND status 수정

* ✨feat : valid 추가 및  message 옵션 적용

* ♻️ refactor : 코드 통일 및 명확성을 위해 enum 클래스 수정

* 🐛 fix : NPE 방지

* 🐛fix : 컨트롤러-서비스 연결안된 부분 연결

* 🐛fix : addBucketItem 트랜잭션 적용

* ♻️ refactor : 버킷명 중복 확인 로직 분리

* ♻️ refactor : validated 에러 핸들러 리턴 타입 수정

* 🔥remove : jpaRepo에서 제공하는 메서드 중복 삭제
* feat : image entity 구현

* feat : Pk 포인트 유형 CRUD 구현

* feat : Pk 포인트 기준 등록시 중복 확인

* feat : 포인트 오버플로우 예외처리

* fix : 오타 수정

* fix : PK 타입 중복 검사 로직 수정

* fix : PK 포인트 적립의 일관성 수정

* fix : requestDto 역직렬화 문제 방지

* fix : Enum Validator 공용 객체로 변경
* style: 테스트를 위해 @NoArgsConstructor access 속성 제거

- 추후 접근제한자 복원 필요 여부 검토 예정

* feat: 게시글 생성 요청 DTO 상속 구조 설계 및 구현

- BoardRequestDto를 상속한 하위 DTO 타입(Normal, Hongdae)을 instanceof로 분기
- 각 타입별로 BoardMapper를 통해 엔티티 변환 및 저장 처리
- dto 내부가 아닌 서비스 계층에서 비즈니스 로직 분기 책임을 수행
- 미구현된 유저/가게 연관 관계는 추후 주석 해제 예정

* refactor: CommonResponse.success 파라미터 타입을 BaseCode로 수정

- SuccessCode에서 BaseCode로 추상화해 공통 코드 처리

* feat: 게시글 관련 성공 및 에러 코드 enum 클래스 구현

* feat: 게시글 엔티티 및 CRUD용 컨트롤러, 서비스 로직 구현

- Board 엔티티 설계 및 User, Store 연관관계 설정 예정
- BoardController에서 게시글 생성/조회/수정/삭제 API 구현
- 서비스에서는 게시글 타입에 따라 분기 처리 및 저장 로직 구성
- 게시글 단건/목록 조회, 상세 조건 기반 조회 기능 기본 틀 마련

* feat: 게시글 요청 DTO → 엔터티 변환용 BoardMapper 클래스 구현

- 일반 게시글과 홍대병 게시글 요청 DTO를 Board 엔터티로 매핑
- Board → BoardListResponseDto 변환 메서드 추가

* feat: 게시글 수정 및 응답 처리를 위한 DTO 클래스 생성

- BoardUpdateRequestDto: 게시글 수정 요청 필드 정의
- BoardResponseDto: 게시글 단건 조회 응답 구조 정의
- BoardListResponseDto: 게시글 목록 조회 응답 구조 정의

* feat: QueryDSL 지원을 위한 커스텀 리포지토리 인터페이스 및 구현체 생성

- 게시글 동적 조회를 위한 BoardRepositoryCustom, BoardRepositoryImpl 클래스 추가
- 기존 BoardRepository에 BoardRepositoryCustom 확장 적용
- QueryDSL 기반 페이징 및 조건 검색 로직 구현 준비

* fix: @builder 사용 시 리스트 초기화를 위한 @Builder.Default 적용

- Lombok 빌더 사용 시 컬렉션 필드가 null로 초기화되는 문제 방지

* refactor: 연관관계 편의 메서드 일관성을 위해 @Setter 제거

- setBoard 메서드를 통한 연관관계 설정 방식으로 통일

* feat: BoardType enum에 @JsonCreator 적용하여 문자열 매핑 지원

- from(String) 메서드에 @JsonCreator 추가로 JSON 역직렬화 시 자동 매핑 가능
- 외부 요청에서 문자열 타입을 안전하게 BoardType으로 변환하도록 개선

* feat: 사용자 ID로 조회하는 findById 서비스 메서드 추가

- userRepository를 통해 사용자 엔티티 조회
- 존재하지 않을 경우 USER_NOT_FOUND 예외 발생 처리

* feat: Store 조회 메서드 추가 및 @transactional 어노테이션 수정

- storeId로 매장 조회하는 findById 메서드 추가
- 매장 미존재 시 STORE_NOT_FOUND 예외 발생
- 트랜잭션 설정이 정상 작동하도록 jakarta → spring 패키지로 변경

* refactor: 게시글 생성 시 사용자 및 맛집 도메인 서비스로부터 조회 처리

- createBoard 메서드에 userId, storeId 파라미터 추가
- userService, storeService를 통해 실제 엔티티 조회

* feat: WebClient 기반 네이버 지도 API 호출 로직 구현

- Controller에서 Service를 통해 Geocoding API 호출 처리
- Service에서 WebClient 사용해 외부 API 동기 방식으로 호출 (block 사용)
- 직렬화 오류 해결 전 임시 커밋

* chore: 불필요한 NaverMap 파일 제거

* fix: 잘못된 @param import 수정

- Lettuce용 @param을 JPA용 org.springframework.data.repository.query.Param으로 수정
- JPA @query 문법에서의 파라미터 바인딩 오류 방지 목적

* remove: 테스트용 DummySecurityConfig 파일 삭제

* fix: updatedAt 필드명 오타 수정

* fix: 엔티티 무분별한 인스턴스 생성 방지

- @NoArgsConstructor(access = AccessLevel.PROTECTED) 추가

* feat: 요청 DTO에 유효성 검사 어노테이션 추가

- @Valid를 통한 컨트롤러 단 유효성 검사 적용

* fix: createdAt 필드명 오타 수정

- 잘못된 필드명으로 인한 정렬 오류 방지

* fix: 성공 코드 중복으로 인한 식별 불가 문제 해결

- 각 작업에 고유한 코드(B003~B007) 부여하여 명확한 식별 가능하도록 수정
* feat: Review create dto

* feat, fix: add Review creation, fix comment request annotations

* chore: fix typo

* feat: add update, get Review api

* feat: add review deletion api, receipt validation api

* refactor: apply custom error

* fix: change controller request param to MultipartFile

* refactor: replace temporal objects

* refactor: replace temporal entities, use custom error of ReviewService

* refactor: replace temporal entities, use custom error of CommentService

* refactor: add isPresented field to review creation, update dto

* chore: security 임시 무력화

* fix: typo, unignore annotation, add pattern annotations

* fix: match data type int-> inteager

* fix: paging at db level

* fix: Review entity, match type, remove redundant validation setting

* fix: replace requestbody to requestpart, add null check for image files

* fix: prevent image npe, create and use ocr failed custom error

* fix: fecting store id instead of user id for redis search key

* fix: contents empty check, correct key typo, use custom exception when fetching store

* fix: fix key typo, remove image npe check from service

* fix: add image npe check at service
* Feat: 로그인 기능 초안

* Feat: 스프링 시큐리티 Config 설정

* Feat: 스프링 시큐리티 설정

* Feat: 회원 가입

* Feat: 로그인 기능

* Feat: 로그인 및 인증

* Feat: 로그아웃 구현

* Fix: 입맛 취향 역직렬화 오류 문제 해결

* Fix: 입맛 취향 역직렬화 오류 문제 해결

* Fix: 회원 가입 시 입맛 취향 저장 로직 에러 수정

* Refactor: 회원 정보 조회 반환 값 수정

* Feat: Favor 값 초기화 컴포넌트 추가

* Refactor: Valid 추가 및 UserFavor Setter 제거

* Refactor: UserErrorCode 수정

* Refactor: Image Cacade 수정

* Refactor: 로그아웃 시 세션 비우기, 회원가입 이미지 저장 로직 변경

* Refactor: signup 검증 어노테이션 및 파라미터명 명시

* Refactor: Favor Admin 리스트 검증 추가

* Refactor: 입맛 취향 업데이트 로직 변경
* feat : image entity 구현

* refactor : Pk 포인트 관리 캐싱 로직 리팩토링

* refactor : Pk 컨트롤러에 security 추가

* refactor : reviewService 내 redisTemplate 형변환 수정

* refactor : 코드래빗 코드리뷰 반영 수정

* refactor : LocalDate 시스템 로케일 수정
* ♻️ refactor : 버킷명 중복 검사 로직에 패턴 적용

* ✨ feat : 이미지 추가 반환

* ✨ feat : 리뷰 생성, 삭제 시 store에도 반영

* ️  refactor : 공통 응답 적용 및 유저 id 추출

* ♻️  refactor : dto에서 비즈니스 로직 분리

* ♻️ refactor : 정적 팩토리 메서드명 변경

* ️  refactor : NPE 방지
rlgkghkd and others added 26 commits June 30, 2025 09:29
* fix : pkTermRanking batch tasklet에 배치 사이즈 적용 jooqCursor

* fix : pkTermRanking batch tasklet에 배치 사이즈 적용 jooqCursor

* fix : user 프록시 객체 만들기 적용

* fix : 유저 포인트 초기화 로그 남기기

* chore : testuser -> postgres로 바꾸기

* refactor : 배치 리팩토링

* chore : cloudfront 의존성 변경

* rafactor : 시간 변경

* rafactor : user id 세터 제거

* rafactor : retry utils 제거

* rafactor : ai 리팩토링, 커넥션 프로바이더, 서킷 브레이커, 에러 메시지큐 적용

* chore : rabbitmq ci/cd 적용

* chore : rabbitmq ci/cd 적용, recommend mq ttl 수정

* refactor : ttl 적용

* refactor : ttl 적용

* chore : build gradle retry 추가

* chore : build gradle retry 추가

* chore : build gradle retry 추가

* chore : build gradle retry 추가

* chore : build gradle retry 추가
* 🐛 fix : dto 정규표현식 수정

* ✨ feat : 포스팅 횟수 증가 및 예외처리

* ✨ feat : postingCount 스케줄링

* ✨  feat : 게시글 조회시 검증 로직 추가

* ✨ feat : 오픈런 게시글 closed 하는 스케줄러 구현

* ♻️  refactor : 스케줄링 누락 방지

* ✨ feat : board status 변경 메서드 구현

* 🐛 fix : 에러코드 수정

* ✨ feat : 선착순 기능 구현 및 책임 분리

* 🐛 fix : 오류 해결

* ✨ feat : 오픈런 게시글 조회 api 구현

* ✨ feat : 페이징 디폴트값 설정

* 🐛 fix : 임시 버그 수정

* ✨ feat : 웹소켓 관련 오픈런 게시글 기능 구현

* 🔥 remove : 주석 정리

* 🐛 fix : jpa 메서드명 관련 오류 해결

* 🐛 fix : 오류 수정 및 리팩토링

* 🐛 fix : 유효성 검증 어노테이션 수정

* ♻️  refactor : 불필요한 래퍼 클래스 기본 타입으로 변경, clearAutomatically 옵션 적용

* ♻️  refactor : 삭제된 데이터 제외하고 조회

* 🧪 test : 테스트코드 작성 및 일부 수정

* 🐛 fix : 코드리뷰 반영

* ♻️  refactor : 하드코딩된 코드 수정

* 🐛 fix : 웹소켓 config 수정 반영

* 🐛 fix : null 검증

* 🐛 fix : 오류 해결

* 🐛 fix : 오류 해결

* ✨ feat : 소켓 세션 수 모니터링 위한 클래스 생성

* ✨ feat : 구독 시점에 성능 테스트 하도록 구조 변경

* ✨ feat : 부하테스트 로직 구현

* fix : import 수정

* ♻️  refactor : 책임 분리

* 🧪 test : 테스트코드 위치 수정 및 오류 수정

* 🔥 remove : 불필요한 모니터링 설정 삭제

* 🐛 fix : npe 오류 해결

* ✨ feat : 테스트용 소켓 registry 추가

* ✨ feat : 선착순 게시글 redis 캐시 적용

* ✨ feat : 소켓 통신 로그 설정 추가

* ✨ feat : redis 메모리 사용 최적화

* 🛠️ chore : 클래스명 변경

* 🛠️ chore : 주석 제거 및 로깅

* ♻️  refactor : dto 세터 제거 및 쿼리 반환용 dto 생성

* ✨ feat : 메세지큐 적용

* 🧪 test : 테스트코드 작성

* ♻️  refactor : 테스트코드 예외 try-catch

* ♻️  refactor : boardFixture 메서드 통일

* ♻️  refactor : rabbitMQ 상수 클래스 분리

* 🛠️ chore : 설정 파일 수정

* 🛠️ chore : host 명 변경

* 🛠️ chore : host명 변경

* 🛠️ chore : rabbitmq 설정 수정

* 🐛 fix : 스레드 대기, 타임아웃 시간 연장

* fix : 테이블 유니크 설정, 테스트코드 태그 적용

* fix : ci 제외
* remove: 설정 통합으로 불필요한 설정 클래스 제거

* feat: OpenAI 임베딩 및 PostgreSQL 설정 추가

- 공통 및 로컬 프로퍼티에 OpenAI 임베딩 설정 항목 추가
- 로컬 환경용 PostgreSQL DataSource 설정 추가 (search 스키마 기반)
- spring-ai 및 postgresql 의존성 추가로 임베딩 및 벡터 검색 기반 기능 준비

* feat: 다중 데이터소스 환경 구성 및 배치 설정 개선

- EventWinnerBatchConfig에 DataSource 및 TransactionManager 의존성 주입
- MySQL, PostgreSQL 각각의 JPA 설정 클래스 분리 (MySQL은 기본 설정으로 구성)
- PostgreSQL 설정에 Hibernate 속성 추가 (hbm2ddl.auto, dialect)
- 각 데이터소스에 맞춰 @EnableJpaRepositories로 Repository 범위 지정

* feat: 임베딩 테스트용 컨트롤러 및 검색 전용 엔티티 추가

- StoreSearch 엔티티 생성 (PostgreSQL, pgvector 기반)
- store_name, 위도/경도, categoryName, embeddingVector 필드 포함
- 임베딩 벡터 저장 및 동기화 상태 관리를 위한 SyncStatus 필드 추가
- 간단한 임베딩 테스트용 컨트롤러, 서비스, 요청 DTO 구성

* feat: 가게 저장 및 임베딩 벡터 생성을 위한 기능 추가 중

- Store 엔티티에 위도/경도 좌표 변환용 static 메서드 추가
- 행정동 주소 추출 실패 시 ADMCODE_NOT_FOUND 예외 코드 정의
- 가게 저장 및 임베딩 생성을 위한 서비스 로직 구현 중 (진행 중)

* feat: PGVector 필드 도입 및 카테고리 매니저 클래스 생성

- pgvector 라이브러리 의존성 추가
- 임베딩 저장을 위한 PGVector 필드 추가 예정에 따른 준비 작업
- CategoryManager 클래스 생성하여 음식 카테고리 및 지역 키워드 관리
- 검색 요청 시 카테고리 유효성 검사 및 빈도 카운팅 기능 포함

* chore: Hibernate Vector 지원 설정 추가

- 데이터소스 URL에 stringtype=unspecified 옵션 추가
- hibernate.type.preferred_vector_jdbc_type=ARRAY 설정으로 Vector 컬럼 매핑 지원

* feat: 지하철역 GEOM 데이터 CSV 파일 추가

- 지하철역 위치 정보를 담은 '지하철역_GEOM (역사마스터).csv'  resources/data 하위에 추가
- 향후 공간 기반 기능 및 데이터 분석에 활용 예정

* feat: 가게 임베딩 벡터 기반 검색 기능 추가

- 가게 검색용 Request/Response DTO에 벡터 검색 관련 필드 추가
- StoreService에 임베딩 벡터 유사도 기반 검색 로직 구현
- StoreController에 벡터 검색 처리용 메서드 추가
- Store 엔터티에 벡터 검색용 필드 및 매핑 추가

* feat: 벡터 유사도 검색용 QueryDSL 확장 유틸 추가

- pgvector 연산자(<=>, <->, <#>) 대응용 SimpleExpression 메서드 정의

* feat: 지하철역(station) 도메인 엔티티 및 초기화 로직 추가

- Station 엔티티 및 CSV 파싱용 StationCsv dto클래스 추가
- 초기 데이터 로드를 위한 StationInitializer 구성

* feat: 임베딩 벡터 생성 및 초기화 기능 추가

- EmbeddingService, EmbeddingController 구현으로 임베딩 생성 로직 분리
- Store 임베딩 초기화를 위한 StoreEmbeddingUpdater 클래스 추가
- 벡터 임베딩 기능 테스트용 임시 컨트롤러 메서드 작성

* chore: 게시글 벡터 검색 기능 구현 전 임시 커밋

- Board 도메인 관련 엔티티, 레포지토리, 서비스 클래스 정비
- 벡터 검색 기능 구현을 위한 기반 코드 및 조건 클래스 추가
- CategoryManager 등 일부 유틸 클래스 수정 포함

* chore: Spring AI 임베딩용 환경 변수 분리 적용

- spring.ai.openai.api-key 설정을 OPENAI_EMBEDDING_API_KEY로 수정

* chore: 사용하지 않는 코드 주석 처리

* chore: ci 수정

* chore: DB 확장 필드 추가

* chore: 도커 이미지 수정

* refactor: 게시글 검색 조건 null 처리 및 필터 기준 상수화

* fix: /api/em으로 엔드포인트수정

* refactor: 임베딩 검색 로직 개선 및 테스트 API 보안 강화

- board.getTitle(), board.getContents()에 대한 null 안전성 확보
- 키워드 필터링 조건을 하드코딩에서 상수로 분리하여 유연성 향상
- VectorQueryDslExtension을 final 클래스로 선언하여 유틸리티 성격 명확화
- 테스트 API 경로를 /api/em으로 수정하여 프로덕션 노출 방지
- KoreanTextProcessor 메서드를 재사용하여 중복된 위치 키워드 로직 제거
- 임베딩 벡터 로깅 시 전체 대신 길이만 출력하도록 수정
- @notblank 어노테이션 주석 해제하여 검색어 유효성 검증 추가
* jooq 삭제, 경로 변경

* Revert "jooq 삭제, 경로 변경"

This reverts commit 76625ad.

* refactor: 알림 발행 전략 패턴 적용

* feat: 관리자 개인 알림 발송 엔드포인트 추가

* refactor: : ocr 서비스 응답 추출 과정 클래스 메서드화, 응답 null 예외 처리

* refactor: 리뷰 수정에서 빈칸은 내용 지움, null은 수정 없음 으로 변경

* refactor: 알림 조회 메서드 하나로 병합

* test: 유저 직접 주입/ 더미 유저 주입 비교 테스트

* test: 리뷰, 댓글 서비스 테스트코드, 알림 생성 엔드 투 엔드 테스트 대비 로깅

* fix: 알림 삭제 방식 변경

* chore: 미사용 로직 제거

* chore: 예외 메시지 수정

* chore:  테스트용 로직 제거

* fix: 단체 알림 생성 서비스 잘못된 user id 사용 수정

* test: notification admin service test

* test: 알림 테스트

* refactor: web push service 외부 주입

* test: admin notification service 테스트 정밀화

* test: 테스트 오탈자 수정

* test: 테스트 오탈자 수정

* test: 바뀐 board fixture 적용

* chore: store repository 수정
* jooq 삭제, 경로 변경

* Revert "jooq 삭제, 경로 변경"

This reverts commit 1ed2be7.

* refactor: 알림 발행 전략 패턴 적용

* feat: 관리자 개인 알림 발송 엔드포인트 추가

* refactor: : ocr 서비스 응답 추출 과정 클래스 메서드화, 응답 null 예외 처리

* refactor: 리뷰 수정에서 빈칸은 내용 지움, null은 수정 없음 으로 변경

* refactor: 알림 조회 메서드 하나로 병합

* test: 유저 직접 주입/ 더미 유저 주입 비교 테스트

* test: 리뷰, 댓글 서비스 테스트코드, 알림 생성 엔드 투 엔드 테스트 대비 로깅

* fix: 알림 삭제 방식 변경

* chore: 미사용 로직 제거

* chore: 예외 메시지 수정

* chore:  테스트용 로직 제거

* fix: 단체 알림 생성 서비스 잘못된 user id 사용 수정

* test: notification admin service test

* test: 알림 테스트

* refactor: web push service 외부 주입

* test: admin notification service 테스트 정밀화

* test: 테스트 오탈자 수정

* test: 테스트 오탈자 수정

* test: 바뀐 board fixture 적용

* chore: store repository 수정
* Feat: 파티 조회 정렬 기준 및 페이징(Slice) 추가

* Feat: 파티 상태 업데이트 배치 임시 저장

* Feat: 파티 만료/삭제 스케줄러 --> 배치로 구현

* Remove: 배치 JooQ 관련 파일 삭제

* Fix: 배치 실행 오류 해결

* Test: 파티 상태 업데이트 배치 테스트 코드 추가

* Test: 파티 랜덤 매칭 테스트 및 더미데이터 추가 코드

* Refactor: 로그인 프로젝션 추가

* Refactor: 로그인 프로젝션 추가

* Feat: PartyRandomMatchInfo 캐싱 적용 및 캐시 정보(파티 평균 연령) 업데이트 로직 추가

* Fix: 로직 오류 수정

* Fix: 빌더 충돌 해결

* Fix: 매치/유저 더미 성능 테스트 프로필 test-int 변경

* Fix: 배치 테스트 프로필 교체

* Test: 테스트 코드 로깅 수정

* Fix: 로컬 병합 충돌 해결

* Refactor: CI 테스트 제외 수정
* Feat: 파티 조회 정렬 기준 및 페이징(Slice) 추가

* Feat: 파티 상태 업데이트 배치 임시 저장

* Feat: 파티 만료/삭제 스케줄러 --> 배치로 구현

* Remove: 배치 JooQ 관련 파일 삭제

* Fix: 배치 실행 오류 해결

* Test: 파티 상태 업데이트 배치 테스트 코드 추가

* Test: 파티 랜덤 매칭 테스트 및 더미데이터 추가 코드

* Refactor: 로그인 프로젝션 추가

* Refactor: 로그인 프로젝션 추가

* Feat: PartyRandomMatchInfo 캐싱 적용 및 캐시 정보(파티 평균 연령) 업데이트 로직 추가

* Fix: 로직 오류 수정

* Fix: 빌더 충돌 해결

* Fix: 매치/유저 더미 성능 테스트 프로필 test-int 변경

* Fix: 배치 테스트 프로필 교체

* Test: 테스트 코드 로깅 수정

* Fix: 로컬 병합 충돌 해결

* Refactor: CI 테스트 제외 수정
* Test: 유저 서비스(팔로우, 입맛, 기본 CRUD) 테스트 코드 작성

* Test: UserFacade 서비스 테스트

* Test: UserService 테스트 추가

* Test: FavorAdminService 테스트 코드 추가 및 userFavor 연관관계 삭제 로직 추가

* Test: AuthnService 테스트 코드 추가

* Test: FavorAdminService 업데이트 테스트 코드 추가

* Fix: 테스트 mock return 추가

* Fix: 오류 수정
* remove: 설정 통합으로 불필요한 설정 클래스 제거

* feat: OpenAI 임베딩 및 PostgreSQL 설정 추가

- 공통 및 로컬 프로퍼티에 OpenAI 임베딩 설정 항목 추가
- 로컬 환경용 PostgreSQL DataSource 설정 추가 (search 스키마 기반)
- spring-ai 및 postgresql 의존성 추가로 임베딩 및 벡터 검색 기반 기능 준비

* feat: 다중 데이터소스 환경 구성 및 배치 설정 개선

- EventWinnerBatchConfig에 DataSource 및 TransactionManager 의존성 주입
- MySQL, PostgreSQL 각각의 JPA 설정 클래스 분리 (MySQL은 기본 설정으로 구성)
- PostgreSQL 설정에 Hibernate 속성 추가 (hbm2ddl.auto, dialect)
- 각 데이터소스에 맞춰 @EnableJpaRepositories로 Repository 범위 지정

* feat: 임베딩 테스트용 컨트롤러 및 검색 전용 엔티티 추가

- StoreSearch 엔티티 생성 (PostgreSQL, pgvector 기반)
- store_name, 위도/경도, categoryName, embeddingVector 필드 포함
- 임베딩 벡터 저장 및 동기화 상태 관리를 위한 SyncStatus 필드 추가
- 간단한 임베딩 테스트용 컨트롤러, 서비스, 요청 DTO 구성

* feat: 가게 저장 및 임베딩 벡터 생성을 위한 기능 추가 중

- Store 엔티티에 위도/경도 좌표 변환용 static 메서드 추가
- 행정동 주소 추출 실패 시 ADMCODE_NOT_FOUND 예외 코드 정의
- 가게 저장 및 임베딩 생성을 위한 서비스 로직 구현 중 (진행 중)

* feat: PGVector 필드 도입 및 카테고리 매니저 클래스 생성

- pgvector 라이브러리 의존성 추가
- 임베딩 저장을 위한 PGVector 필드 추가 예정에 따른 준비 작업
- CategoryManager 클래스 생성하여 음식 카테고리 및 지역 키워드 관리
- 검색 요청 시 카테고리 유효성 검사 및 빈도 카운팅 기능 포함

* chore: Hibernate Vector 지원 설정 추가

- 데이터소스 URL에 stringtype=unspecified 옵션 추가
- hibernate.type.preferred_vector_jdbc_type=ARRAY 설정으로 Vector 컬럼 매핑 지원

* feat: 지하철역 GEOM 데이터 CSV 파일 추가

- 지하철역 위치 정보를 담은 '지하철역_GEOM (역사마스터).csv'  resources/data 하위에 추가
- 향후 공간 기반 기능 및 데이터 분석에 활용 예정

* feat: 가게 임베딩 벡터 기반 검색 기능 추가

- 가게 검색용 Request/Response DTO에 벡터 검색 관련 필드 추가
- StoreService에 임베딩 벡터 유사도 기반 검색 로직 구현
- StoreController에 벡터 검색 처리용 메서드 추가
- Store 엔터티에 벡터 검색용 필드 및 매핑 추가

* feat: 벡터 유사도 검색용 QueryDSL 확장 유틸 추가

- pgvector 연산자(<=>, <->, <#>) 대응용 SimpleExpression 메서드 정의

* feat: 지하철역(station) 도메인 엔티티 및 초기화 로직 추가

- Station 엔티티 및 CSV 파싱용 StationCsv dto클래스 추가
- 초기 데이터 로드를 위한 StationInitializer 구성

* feat: 임베딩 벡터 생성 및 초기화 기능 추가

- EmbeddingService, EmbeddingController 구현으로 임베딩 생성 로직 분리
- Store 임베딩 초기화를 위한 StoreEmbeddingUpdater 클래스 추가
- 벡터 임베딩 기능 테스트용 임시 컨트롤러 메서드 작성

* chore: 게시글 벡터 검색 기능 구현 전 임시 커밋

- Board 도메인 관련 엔티티, 레포지토리, 서비스 클래스 정비
- 벡터 검색 기능 구현을 위한 기반 코드 및 조건 클래스 추가
- CategoryManager 등 일부 유틸 클래스 수정 포함

* chore: Spring AI 임베딩용 환경 변수 분리 적용

- spring.ai.openai.api-key 설정을 OPENAI_EMBEDDING_API_KEY로 수정

* chore: 사용하지 않는 코드 주석 처리

* chore: ci 수정

* chore: DB 확장 필드 추가

* chore: 도커 이미지 수정

* test: 게시글 생성 및 조회 단위 테스트 코드 작성 및 빌더 생성자 메서드 형식 통일

- BoardFixture에 createNormalBoard(dto, store, user) 메서드 추가
- NormalBoardCreationStrategy에 title, contents, type, accessPolicy 필드 명시적 설정
- 게시글 서비스 생성 및 조회 단위 테스트 코드 작성

* test: 게시글 해시태그 적용 단위 테스트 작성

* test: 가게 서비스 단위 테스트 코드 작성

- 가게 생성, 조회, 삭제 기능 단위 테스트 작성
- 카테고리 조회 및 생성 로직에 대한 테스트 추가
- 유사도 기반 가게 검색 및 예외 상황 테스트 포함
- 임베딩 텍스트 생성 테스트 검증

* test: 지오코드 api 임시 커밋

* test: 임시 커밋

* test: 네이버 지도 api 단위 테스트 코드 작성

* test: 게시글 조회 시 FCFS 정책에 따른 예외/성공 시나리오 테스트 보완

* chore: 주석 제거

* feat: 접근제어자 수정
* test : 주소 api 서비스 코드 생성

* test : open api 임베딩 key 환경변수 등록

* test : address, weather 테스트 코드 작성

* test : 이미지, 추천 통합 테스트 코드 작성

* test : ai 추천 서비스 테스트 코드 작성, 필요 없는 코드들/주석 삭제

* test : ai 추천 서비스 테스트 코드 작성, 필요 없는 코드들/주석 삭제

* chore : 주석 삭제

* chore : 주석 삭제
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Jul 11, 2025

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@rlgkghkd rlgkghkd changed the title Refactor/#157/notificaion allaround refactor [Refactoring] 알림 전반적인 최적화 #157 Jul 11, 2025
@rlgkghkd rlgkghkd self-assigned this Jul 11, 2025
@rlgkghkd rlgkghkd closed this Jul 11, 2025
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.

5 participants