Skip to content

feat: 기존 알림함에 대댓글 좋아요 팔로우 알림 추가 - #748

Open
Whale0928 wants to merge 15 commits into
mainfrom
feat/issues-383
Open

feat: 기존 알림함에 대댓글 좋아요 팔로우 알림 추가#748
Whale0928 wants to merge 15 commits into
mainfrom
feat/issues-383

Conversation

@Whale0928

@Whale0928 Whale0928 commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

대댓글 작성 시 직접 부모 댓글 작성자도 알림을 받고, 리뷰 좋아요와 새 팔로우가 기존 notifications 알림함에 저장되도록 확장합니다. 댓글·좋아요는 한 번의 활동 이벤트를 History와 Notification이 각각 처리하며 기존 History 내용과 기록 조건을 유지합니다.

  • 대댓글은 리뷰 작성자와 직접 부모 댓글 작성자에게 전달하고, 행위자와 중복 수신자를 제외합니다.
  • 좋아요·팔로우는 활성 전이에만 생성하며 같은 관계의 반복·취소·재활성화에도 최초 알림 한 건을 유지합니다.
  • 최초 좋아요 동시 요청은 기존 리뷰 행 잠금을 Facade로 획득해 관계 조회부터 커밋까지 직렬화합니다. 관계도 잠금 조회하여 기존 트랜잭션의 과거 snapshot에서 없던 관계를 중복 생성하지 않습니다. 새 좋아요 트랜잭션은 READ_COMMITTED를 사용합니다.
  • 기존 (source_type, source_id, user_id) 고유 키로 같은 원본의 동시 중복을 원자적으로 처리합니다. 중복 요청은 기존 본문·읽음 상태·감사 시각을 유지하며 수신자별 저장 실패를 격리합니다.
  • 기존 OPEN_REVIEW v1 댓글 이동과 OPEN_HELP v1을 유지하고, 리뷰 상세는 OPEN_REVIEW v2, 팔로우 대상은 OPEN_USER v1으로 반환합니다.

관련 이슈: bottle-note/workspace#383, bottle-note/workspace#373

새 테이블, 푸시 발송 및 수신 설정 API, 베스트 리뷰 선정 변경은 포함하지 않습니다. CI workflow와 스키마는 기존 구성을 그대로 사용합니다. #383의 수신 설정·보관 정책·운영 규모 성능 검증은 후속 범위이므로 이슈를 닫지 않습니다. 기존 비동기 이벤트 경로의 프로세스 장애 시 유실 가능성과 재시도 부재는 남습니다. 같은 리뷰의 좋아요 요청은 직렬 처리되므로 인기 리뷰의 대규모 부하 성능은 별도 검증이 필요합니다.

검증은 commit·push 후 GitHub Actions에서만 수행했습니다. 전체 검증 및 최종 빌드가 성공했으며, XML 보고서 기준 1,783개 검사에서 실패·오류·건너뜀은 모두 0개입니다.

  • ./gradlew unit_test: 946개.
  • ./gradlew check_rule_test: 66개.
  • 기존 Batch popularity 테스트: 106개.
  • ./gradlew integration_test: 385개(공유 모듈 16개, Product 369개).
  • ./gradlew admin_integration_test: 280개.
  • ./gradlew build -x test --build-cache --parallel: 성공.

최초 LIKE 요청 8건의 동시 실행과 후속 취소·재활성화, 과거 REPEATABLE_READ snapshot을 가진 요청의 경쟁을 추가 검증했습니다. 두 회귀 테스트의 성공을 원격 XML에서 확인했습니다. 기존 동일 원본 재전달·읽음 보존·원본 rollback·수신자 실패 격리·활동 History·Action JSON·OpenAPI 검사도 통과했습니다.

최종 HEAD 03956b133876db0c7afc6f6d56db6bf17b062892와 Actions 실행 SHA가 일치하며 모든 job이 성공했습니다. 로컬 Docker·Gradle·테스트·빌드는 실행하지 않았습니다.

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.

1 participant