Search

요구사항정의서(PRD) 상세보기

목표

실제 사용자가 수신한 알림 수와 오픈율을 파악하여 정확한 알림 영향도를 측정한다.
향후 배포될 알림 관련건에 대한 정확한 지표 추적을 위해 개선하고자함

문제정의 & 가설

문제정의

알림 관련 지표 문제점 확인 - 알림 센터 데이터 지표 개선
1. Title/Body 내 변수 값 분리
예시: 알림 문구에 대한 정보가 분리(종목 또는 상승/하락 등 구체적인 정보)되어 있지 않아, 시세알림이 나갔을 때, 어떤 종목에 대한 영향이 갔는지 추적 불가.
2. 알림 ON/OFF 설정 로그 저장
유저가 설정한 알림 ON/OFF 변경 이력이 가장 최근에 설정한 상태만 저장되어, 발송 시점에 ON/OFF 여부를 알 수 없다.
3. 오픈 측정 방식 오류
EX) 2월 3일에 시세-구간 상승 알림에 대한 오픈율이 아니라, 2월 2일에 보낸 것 2월 3일에 보낸 것, 날짜/종목/등락율 별 구분없이 단순 시세구간 상승 알림에 대한 전체 오픈율을 보여준다. (해당 일자에 보낸 알림의 수에 대한 값이 아닌, 해당 구간의 전체 오픈율이다.)
4. 코인원 앱 시스템 알림설정 상태 확인 불가
코인원 앱 시스템 알림설정 상태를 확인할 수 없어, 실제 알림을 수신한 유저에 대한 파악이 어렵다.

가설

1. Title/Body 내 변수 값 분리 - 백엔드
Title/Body 내 변수 값을 분리하여 적재할 수 있다면, 시세 알림등 각 알림에 대한 세부 지표 측정(종목별/상승하락율 등)이 가능할 것이다.
2. 유저별 알림 설정 데이터 로그 적재 - 데이터셀
유저 별 알림 설정 데이터를 로그형식(이벤트 별 알림 설정 상태에 대한 기록)으로 적재할 수 있다면, 푸쉬가 발송된 시점의 오픈율을 명확히 추적할 수 있다.
3. 알림 오픈 유무 데이터 적재 - 데이터 & 앱
알림 오픈 유무에 대한 데이터를 적재할 수 있다면, 각 알림에 대한 오픈율을 정확히 측정할 수 있을 것이다.
4. 시스템 알림설정 상태 적재 - 백엔드&앱
유저의 시스템 알림설정 유무를 적재할 수 있다면, 실세 알림을 수신하는 유저에 대한 측정이 가능할 것이다.

프로젝트 성과 지표

Goal
Metric
신뢰도 높은 알림 별 오픈율 파악
알림 유형별 푸시 오픈율
종목 별/변동 비율 별 영향도 측정
종목 별/변동 비율 별 영향도 측정<br>• 오픈율<br>• 주문 전환율
신뢰도 높은 알림 수신 유저 영향도 측정
오픈율/주문 전환율 등 알림 지표 측정 모수 시스템 알림 설정 OFF 유저 제외
일자별 알림 설정 OFF 유저 측정
일자별 알림 OFF 유저

주요 일정 (선택)

가설 내 작업 범위별 일정 산정:
가설 내 1번: [푸시 메세지 내 변수 값 분리] Backend 작업만 필요 Title/Body 내 변수 값 분리
가설 내 2번: [알림 ON/OFF 설정데이터 로그 적재] 데이터셀 작업만 필요
가설 내 3번: [알림 발송 데이터 오픈 유무 값 적재] 데이터셀 & 앱
가설 내 4번: [시스템 알림 설정 값 적재] 백엔드 & 앱
위 내용 토대로, 가능한 일정 산정

요구사항 목록

1. 알림 발송 데이터 테이블 푸시 메시지 변수값 분리 개선 (notification_sends 테이블)

기획상 중요도: MUST HAVE
담당: Backend Only(선행 작업)
요구 사항: 푸시 메시지 타이틀/본문 변수 값 분리 필요
상세 동작:
하단 notification_sends 테이블 notification(title/body) 정보 변수값 분리 정리 참고
notifiaction.title과 notifiaction.body 내 변수 데이터 분리 적재
예시:
notifiaction.title {data.orderType} {orderSide} 체결 - {coinName} notifiaction.body {krwValue} KRW {quantity} {ticker} notifiaction.data { "data.orderType": "지정가", "data.orderSide": "매수", "data.coinName": "비트코인", "data.ticker": "BTC", "data.quantity": "0.00370103", "data.krwValue": "148270000" }
Plain Text
복사

2. 알림 설정 상태 테이블 적재 개선

기획상 중요도: MUST HAVE
요구 사항: 알림 설정 변경 이벤트가 일어났을 때 로그 형식으로 적재 필요
상세 동작:
유저의 알림설정 변경 시, 별도의 행으로 로그 적재
log_stg_notification_settings 적재

3. 알림 발송 데이터 오픈 유무 값 적재

기획상 중요도: MUST HAVE
담당: 데이터/APP
요구 사항: 푸시 발송건별 오픈 유무 값 적재 필요
상세 동작:
유저가 앱푸시를 오픈한 시점에 해당 발송건에 대한 오픈 유무와 오픈 일시 적재(앱 로그)
예시:
유저 해당 알림 오픈 → 알림 오픈 특정 함수 호출 → 발송 메시지별 오픈 이벤트 저장
오픈 이벤트 별 message_id, 오픈 일시
참고: 오픈 유무 값 로그 적재 방식 논의 필요

4. 알림 설정 상태 테이블 개선

기획상 중요도: MUST HAVE
담당: Backend/APP
요구 사항: 코인원 앱 시스템 설정 알림 ON/OFF 값 적재 필요
상세 동작:
유저에 대한 코인원 앱 시스템 설정값(ON/OFF) 적재
예시:
system_notification 값 추가 - 기본값 초기 일괄 설정값 업데이트
시스템 앱 푸시 알림 설정 변경 이벤트 발생 → system_notification 값 변경값(true/false)으로 업데이트

알림 대분류별 상세 정보

알림 대분류
알림 하위분류
푸시 메시지 문구 포맷(title/body)
오픈 경로
변수
BASIC (일반 알림)
FEE_COUPON_EXPIRY (얼리버드 만료 알림)
수수료 얼리버드 구매 완료<br>매수/매도 주문 중 수수료 얼리버드 추가 구매가 완료되었습니다. (이용 중인 수수료 혜택 확인하기)
coinoneapp://my/feecoupon/history
수수료 얼리버드 만료 예정 안내<br>현재 이용 중인 수수료 얼리버드가 일주일 내 만료될 예정입니다.
coinoneapp://my/feecoupon/history
수수료 얼리버드 소진 안내<br>이용 중이던 수수료 얼리버드가 모두 소진된 상태입니다
coinoneapp://my/feecoupon/detail
LOGIN (로그인 알림)
새로운 로그인 발생<br>대한민국에서 로그인 (IP ******)
coinoneapp://my/security/login
PLUS_REWARD (플러스 알림)
{종목명} {데일리/스테이킹} 리워드 지급 완료<br>{수량}{티커} 지급이 완료되었어요
coinoneapp://plus/property
{종목명} {데일리/스테이킹} {건수}
{종목명} {데일리/스테이킹} 외 {건수}건 리워드 지급 완료<br>{수량}{티커} 외 {건수}건의 리워드가 지급됐어요
coinoneapp://plus/property
STOP_ORDER_TRIGGER (예약주문 알림)
[주문 실행] 예약가 {매수/매도} - {종목명}<br>감시가 도달 {김시가 금액} KRW / 주문 실행 {주문 금액} KRW {수량} {티커}
coinoneapp://trading?tradingpair={티커}-KRW&trade_panel=open
{매수/매도} {종목명} {감시가 금액} {주문 금액} {수량} {티커}
TRADE (체결 알림)
{지정가/시장가/예약가} {매수/매도} 체결 - {종목명}<br>{금액} KRW {수량} {티커}
coinoneapp://trading?tradingpair={티커}-KRW&trade_panel=open
{지정가/시장가/예약가} {매수/매도} {종목명}
TRANSACTION (입출금 알림)
입금 완료<br>{종목명}({티커}) {수량} {티커/원} 입금 완료
coinoneapp://dnw/detail?symbol={티커}&filter=deposit
{입금/출금} {종목명} {티커} {수량} {티커/원}
출금 완료<br>{종목명}({티커}) {수량} {티커/원} 출금 완료
coinoneapp://dnw/detail?symbol={티커}&filter=withdraw
QUOTES (시세 알림)
HELD_ASSETS_RANGE_CHANGE (보유자산 5% 구간 상승/하락)
보유자산 알림<br>{종목명} ({티커}) 매수평균가 대비 {퍼센트}% {상승/하락}<br>현재가 {금액}원
coinoneapp://trading?tradingpair={티커}-KRW
{종목명} {티커} {퍼센트} {상승/하락} {금액}
LIMIT_PRICE (지정가)
지정가 도달<br>{종목명} ({티커}) 목표가 도달<br>현재가 {금액}원
coinoneapp://trading?tradingpair={티커}-KRW
{종목명} {티커} {금액}
PRICE_RANGE_DOWN (10% 구간 하락)
구간 하락 알림<br>{종목명} ({티커}) {-퍼센트}% 하락<br>현재가 {금액}원
coinoneapp://trading?tradingpair={티커}-KRW
{종목명} {티커} {퍼센트} {금액}
PRICE_RANGE_UP (10% 구간 상승)
구간 상승 알림<br>{종목명} ({티커}) {퍼센트}% 상승<br>현재가 {금액}원
coinoneapp://trading?tradingpair={티커}-KRW
{종목명} {티커} {퍼센트} {금액}
PRICE_RECENT_HIGH (최근 7일 신고가)
신고가 알림<br>{종목명} ({티커}) 7일 신고가 갱신<br>현재가 {금액}원
coinoneapp://trading?tradingpair={티커}-KRW
{종목명} {티커} {금액}
PRICE_RECENT_LOW (최근 7일 신저가)
신저가 알림<br>{종목명} ({티커}) 7일 신저가 갱신<br>현재가 {금액}원
coinoneapp://trading?tradingpair={티커}-KRW
{종목명} {티커} {금액}
TIME_INTERVAL (시간 설정)
시간 알림<br>{종목명} ({티커}) {hh:mm} 기준<br>현재가 {금액}원
coinoneapp://trading?tradingpair={티커}-KRW
{종목명} {티커} {hh:mm} {금액}
UP_DOWN_FROM_CLOSE (종가 대비 상승/하락)
전일대비 알림<br>{종목명} ({티커}) 전일 종가 대비 {퍼센트}% {상승/하락}<br>현재가 {금액}원
coinoneapp://trading?tradingpair={티커}-KRW
{종목명} {티커} {퍼센트} {상승/하락} {금액}
COMMUNITY (커뮤니티 알림)
MY_FOLLOWING_ACTIVITY (내가 팔로우 한 유저(팔로잉)의 활동 알림)
{닉네임}님의 새 글 알림<br>{종목명} 커뮤니티에 {내용} 글을 남겼어요. (코인원 커뮤니티)
coinoneapp://communityboard?id={id}
{닉네임} {종목명} {내용}
MY_NEW_FOLLOWER (나를 팔로우하는 유저(팔로워)가 추가되었을 때 알림)
새로운 팔로워 알림<br>{닉네임}님이 회원님을 팔로우하기 시작했어요. (코인원 커뮤니티)
coinoneapp://profile?id={id}
{닉네임}
MY_POST_COMMENT (내 게시글 댓글)
{종목명} 커뮤니티 새로운 댓글 알림<br>내 {내용}글에 {닉네임}님이 새로 댓글을 남겼어요.
coinoneapp://communityboard?id={id}
{종목명} {내용} {닉네임}
MY_POST_LIKE (내 게시글 좋아요)
커뮤니티 새로운 좋아요 알림<br>내 {내용}글을 {닉네임}님이 좋아해요.
coinoneapp://communityboard?id={id}
{내용} {닉네임}

notification_settings(알림센터 알림 설정 상태) 구조

basic (일반알림)

구분
설명
유형
기본 설정값
fee_coupon
얼리버드 알림
boolean
ON
fee_coupon_expriry
얼리버드 만료
boolean
ON
login
로그인 알림
boolean
ON
plus_reward
플러스 알림
boolean
ON
stop_order_trigger
예약주문 알림
boolean
ON
trade
체결 알림
boolean
ON
transaction
입출금 알림
boolean
ON

quotes (시세알림)

1depth
2depth
3depth
설명
유형
기본 설정값
held_assets_range_up_and_down (보유자산 알림)
subscribe
보유자산 알림
boolean
OFF
minium_market_value
평가금액 5천원 이상인 알림
boolean
minimum_base_volume
거래대금 기준 적용
boolean
OFF
price_range_up_and_down
10% 상승/하락 알림
boolean
OFF
price_range_up_and_down_favorites
관심 종목만 알림 받기
boolean
OFF
recent_price_high_and_low
신고가/신저가 알림
boolean
OFF

silent_mode (야간모드)

구분
설명
유형
기본 설정값
enabled
활성유무
boolean
OFF
end
종료시간
string
start
시작시간
string

community (커뮤니티 알림)

구분
설명
유형
기본 설정값
my_following_activity
내 팔로잉 활동
boolean
OFF
my_new_follower
내 새로운 팔로워
boolean
OFF
my_post_comment
내 포스트
boolean
ON
my_post_like
내 포스트 좋아요
boolean
ON
popular_post_recommendation
인기 포스트 추천
boolean
OFF
기타 필드
last_modified_at : 수정일자 (timestamp)
created_at : 생성일자 (timestamp)

알림 내역 정책

알림 설정 기본값이 ON인 기본알림의 경우에만 알림 ON/OFF와 무관하게 알림 내역에서는 조회 가능 → OFF 상태여도 notification_sends 기록됨
히스토리: 기본알림은 일반적인 활동내역으로 보아 OFF 상태에서도 알림내역에서 확인할 수 있도록 함
알림 설정
알림 내역
푸시 발신
기본 알림 ON(기본값)
기록 O
O
기본 알림 OFF
기록 X
X
선택 알림 ON
기록 O
O
선택 알림 OFF(기본값)
기록 X
X

UI & 디자인 초안

화면 수정 없음

확인해야 할 사항

질문
답변 / 결과
알림 내역 정책 바꾸지 않더라도 실 발송자 측정할 수 있을 지 확인 필요 (데이터 셀)
실제 푸시 발송 DB 컬럼 추가로 논의 완료
오픈 유무 값 로그 적재 방식 논의
firebase 이벤트 적재<br>기존 nofication_open 이벤트와 별개의 tracking plan으로 적재