Skip to content

#413 [Feat] 어드민 공지 발송 대상자 수 미리보기 API 추가 - #416

Merged
si-zero merged 5 commits into
devfrom
feat/#413
Aug 26, 2026
Merged

#413 [Feat] 어드민 공지 발송 대상자 수 미리보기 API 추가#416
si-zero merged 5 commits into
devfrom
feat/#413

Conversation

@si-zero

@si-zero si-zero commented Aug 26, 2026

Copy link
Copy Markdown
Member

#️⃣ 연관된 이슈

📝 작업 내용

✨ Feat

내용 파일
유저 ID 목록 기준 디바이스 수 카운트 저장소 메서드 추가 UserDeviceRepository.java
공지 발송 대상자 수 산정 로직 추가 (notifyAdminNotice와 동일 기준 재사용) NotificationDispatchService.java
대상자 수 응답 DTO 추가 AdminNoticeTargetCountResponse.java
대상자 수 조회 서비스 로직 추가 AdminNotificationService.java
대상자 수 조회 API 엔드포인트 추가 AdminNotificationController.java

📚 Docs

내용 파일
공지 발송 대상자 수 미리보기 API 명세 추가 docs/api-specs/notification-api.md

📌 공유 사항

  1. GET /api/v1/admin/notices/target-count는 '이벤트 및 소식 알림' 설정이 ON인 유저의 등록된 디바이스 수를 반환합니다. notifyAdminNotice가 실제 발송할 때 쓰는 대상자 산정 로직과 동일 기준입니다.
  2. 목록 조회(countByUserIdIn)만 하는 가벼운 COUNT 쿼리라 실제 디바이스 리스트를 불러오지 않습니다.
  3. CONTENT 카테고리 공지는 애초에 이 대상자 산정을 타지 않으므로(관리자 발송 트리거 미적용), 이 API는 NOTICE/EVENT 등록 전 참고용으로만 의미가 있습니다.

✅ 체크리스트

  • Reviewer에 팀원들을 선택했나요?
  • Assignees에 본인을 선택했나요?
  • 컨벤션에 맞는 Type을 선택했나요?
  • Development에 이슈를 연동했나요?
  • Merge 하려는 브랜치가 올바르게 설정되어 있나요?
  • 컨벤션을 지키고 있나요?
  • 로컬에서 실행했을 때 에러가 발생하지 않나요?
  • 팀원들에게 PR 링크 공유를 했나요?

📸 스크린샷

./gradlew test 전체 통과. NotificationDispatchServiceTest/AdminNotificationServiceTest에 대상자 수 조회 케이스 추가.

@si-zero si-zero self-assigned this Aug 26, 2026
@si-zero si-zero added the ✨ Feat (기능 추가) 새로운 기능을 추가할 때 사용합니다. label Aug 26, 2026
@si-zero si-zero linked an issue Aug 26, 2026 that may be closed by this pull request
3 tasks
@si-zero
si-zero merged commit 4bdbdf3 into dev Aug 26, 2026
1 check passed
@si-zero
si-zero deleted the feat/#413 branch August 26, 2026 07:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feat (기능 추가) 새로운 기능을 추가할 때 사용합니다.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

✨ Feat: 어드민 공지 발송 대상자 수 미리보기 API 추가

1 participant