Skip to content

feat: 키워드 알림 기능 (관심 키워드 상품 근처 등록 시 알림) #17

Description

@chaeyoungeee

개요

사용자가 관심 있는 키워드를 미리 등록해두면, 해당 키워드와 일치하는 상품이 내 주변(위치 기반)에 새로 등록될 때 알림을 받는 기능입니다.

소분 거래 특성상 원하는 상품이 항상 올라와 있지 않기 때문에, "찾던 상품이 근처에 떴을 때" 즉시 알려주면 재방문율과 거래 성사율을 높일 수 있습니다.

배경 / 재사용 가능한 기존 자산

  • Notification / NotificationHistory (인앱 알림 피드) 도메인 및 조회 API
  • ✅ Redis GEO 기반 위치 검색 (RedisUtil, MEMBER_KEY)
  • ✅ 검색 기록(SearchHistory) — 키워드 입력 UX 재사용
  • ✅ UseCase 애플리케이션 레이어 패턴

작업 범위

1. 키워드 구독 CRUD

  • KeywordNotification 엔티티 (member + keyword)
  • POST /api/v1/member/me/keywords — 키워드 등록
  • GET /api/v1/member/me/keywords — 내 키워드 목록 조회
  • DELETE /api/v1/member/me/keywords/{id} — 키워드 삭제
  • 검증: 공백 불가, 중복 불가, 회원당 최대 개수 제한, 본인 소유만 삭제

2. 신규 상품 등록 시 매칭 알림

  • 상품 등록(SaveGoodsUseCase) 시점에 훅 추가
  • 등록된 상품명과 일치하는 키워드를 구독한 회원 조회
  • 그중 상품 위치 반경 내에 있는 회원(Redis GEO, MEMBER_KEY)만 필터
  • 판매자 본인 제외 / 회원 중복 제거
  • 매칭된 회원에게 Notification + NotificationHistory 생성 (인앱 알림 피드)
  • 알림 생성 실패가 상품 등록 자체를 막지 않도록 방어 처리

향후 확장 (out of scope)

  • FCM 푸시 발송 연동 (현재 Member에 fcmToken 미존재 → 인앱 알림으로 우선 구현)
  • 카테고리/가격 조건 필터

완료 조건

  • 키워드 등록/조회/삭제 API 동작
  • 신규 상품 등록 시 매칭+근처 회원에게 알림 생성
  • 기존 알림 조회 API(/me/notifications)에 노출 확인
  • 빌드 및 테스트 통과

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureImprovements or additions to documentation

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions