Skip to content

[ Notification ] 알림 설정 기본값·모두 끄기 교정 및 채널 상태 노출 #76

Description

@RosieOh

🧑‍💻 오늘의 개발하면서 생긴 크고 작은 이슈사항을 기록해주세요

💚 어떤 기능인가요?

알림 설정과 관리자 정책 수정에서 사용자가 요청하지 않은 결과가 나오는 문제 세 가지를 고칩니다.

1. 요청한 적 없는 이메일 알림이 켜진다

createDefaultPreference()emailEnabled = true 로 기본 행을 만듭니다.
그런데 설정 행이 없을 때 NotificationDispatcher 가 실제로 발송하는 채널에는 이메일이 없습니다.

사용자가 설정 화면에서 다른 채널 하나를 끄는 순간, 그 시점에 기본 행이 만들어지면서
요청한 적 없는 이메일 알림이 켜집니다.

기본값은 설정 행이 없을 때 실제로 발송되는 채널과 같아야 합니다.

2. "모두 끄기" 가 동작하지 않는 사용자가 있다

disableAllNotifications()저장된 행만 끕니다.
설정을 한 번도 건드린 적 없는 사용자는 행이 없어서, "모두 끄기" 를 눌러도 아무것도 바뀌지 않고
인앱·푸시 기본값으로 계속 알림을 받습니다.

알림을 끄려는 사용자에게 알림이 계속 가는 것은 신뢰 문제입니다.

3. 채널을 왜 못 쓰는지 알려주지 않는다

FCM 자격증명이 없으면 푸시가 비활성화되는데, 설정 화면에서는 그냥 켜지지 않을 뿐
이유를 알 수 없습니다. 사용자는 자기 문제인 줄 압니다.

왜 못 쓰는지는 채널마다 다르고(자격증명 미설정, 사업자 미연동) 발송기 자신만 압니다.

4. 관리자 정책 수정이 전체 교체만 가능하다

update() 는 요청에 없는 필드를 null 로 만듭니다.
금액 하나만 고치려 해도 모든 값을 담아 보내야 하고, 빠뜨리면 데이터가 지워집니다.

부분 수정에서는 "비우기" 와 "건드리지 않기" 를 구분해야 하는데,
값의 null 여부만 보면 둘을 구분할 수 없습니다. 요청 JSON 에 키가 왔는지를 봐야 합니다.

✅ To Dos

  • 알림 설정 기본값을 실제 발송 채널과 일치시키기
  • "모두 끄기" 가 설정 행 없는 유형까지 처리하도록 수정
  • 채널별 사용 불가 사유 노출 API
  • 관리자 정책 부분 수정(PATCH) 지원
  • ERD 문서 갱신 (알림 설정 기본값·관계 정정)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:apiAPI 계약/스키마priority:P1높은 우선순위type:bug버그/회귀 이슈

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions