//
Search
🎰

Engineering: 부스트 강화

Spec

강화하기
강화하기
1.
부스트 강화 가능여부 체크하기 + '후적용, 구매전, 구매후' 위치별 체크 추가
2.
강화하기()
부스트 강화 가능여부 체크하기
1.
강화하고자 하는 캠페인에 묶인 강화 정책이 존재하는가?
2.
강화가 가능한 Boost Promotion 타입인가? (일반 부스트만 가능, 선착순·타임어택·정기결제 → 불가능)
3.
캠페인이 진행중인가? or (구매한부스트 강화라면) 부스트가 사용 가능한가?
4.
강화가 켜져 있는가?
5.
강화 가능한 시간인가?
6.
강화 가능한 시점(부스트 구매전, 구매후, 후적용)인가?
7.
강화예산이 남아있는가?
8.
강화할 번개가 있는가?
강화하기()
1.
부스트 강화 가능여부 체크하기
2.
(관리하기에서 정한 확율로) '실패 | 성공 | 잭팟' 여부를 저장 및 출력
부스트 강화 결과 보여주기
부스트 목록에서 강화 표시하기
부스트 목록에서 캠페인을 강화 버전으로 보여주기
부스트 상세에서 강화 가능여부 보여주기
부스트 강화 가능여부 체크하기
이미 강화된 내용이 있으면 보여주기
오늘의 잭팟 유저 보여주기 or 해당 부스트 잭팟 유저 보여주기: 미확정
기존 부스트 관련 수정
부스트 구매에 강화 적용하기
boostId를 update한다.
부스트 캐시백 지급에 강화 적용하기
강화 상태를 '사용완료'로 수정한다.
강화된 부스트가 적용된 결제의 취소 시 에 강화 적용하기
강화 상태를 '미사용상태'로 변경하고 취소된 boostId를 삭제(=null처리) 해준다. (캠페인 목록에 다시 강화가 보여지게)
부스트 강화 관리하기
강화 예산, 온오프, 날짜 등 보여주기
강화 예산, 온오프, 날짜 등 설정하기
강화 스키마 설정하기
성공,실패,잭팟 별로 캐시백,할인율, 캐시백단위 설정하기
결제 취소
1.
(대부분은) 부스트를 다시 살려준다.
a.
구매한 부스트 목록에 강화가 적용되도록 변경한다.
b.
상태를 ‘enabled’로 변경
2.
(일부는) 부스트를 번개로 환불 해준다.
a.
캠페인 목록에 강화가 적용되도록 변경한다
b.
상태를 ‘enabled’로 변경 & boostId = null
Q. 업체측 사유로 결취를 당한 경우 억울하지 않을까? Q. 해당 캠페인이 종료 되었다면 억울하지 않을까?

비기능적 Spec

누적 강화 결과를 key-value로 빠르게 조회 가능하게 하자.
강화 예산 소진을 memory에서 최대한 짧은 transaction으로 처리하자.
한도가 거의 다 되가면 slack, 종료되도 slack 알림을 쏴주자

Design

Search
강화 API
상태
이름
분류
Uri
Request
Response
설명
Done
신규
Post
/v1/boost/campaign/:id/up /boostUp
불필요예상
신규
Get
/v1/boostUpPolicy /boostUpPolicy
불필요예상
신규
Get
/v1/boostUp /boostUp
Done
수정
Get
/v1/boost/promotion/available /BoostPromotion/visible
불필요예상
수정
Get
/v1/boost/campaign/:id/boostPromotion /campaign/:id/boostPromotion
Done
수정
Post
/v1/boost/campaign/:id/buy /boost/buy
Done
/v1/boost/:Id/cancel /boost/cancel
수정
Async
/v1/payment/:Id/cancel
Async
신규
액티비티쪽에서도 기능추가가 필요하다
Done
신규_관리
Post
/boostUpAdmin/boostUpPolicy
Done
신규_관리
Get
/boostUpAdmin/boostUpPolicy
Done
신규_관리
Get
/boostUpAdmin/boostUpPolicy/:boostUpPolicyId
Done
신규_관리
Put
/boostUpAdmin/boostUpPolicy/:boostUpPolicyId
Done
신규_관리
Post
/boostUpAdmin/campaign/:campaignId/boostUpPolicy/:boostUpPolicyId
Done
신규_관리
Get
/boostUpAdmin/boostUp/:userId
Url는 ~/v1 으로 시작하는 것은 api-server의 Url이고 없는건 boost-server url이다.
Response는 Response 객체 자체이거나 기존 Response에 추가되는 객체를 표시한다.
자세한 API스펙은 Swagger에 추가할 예정.

Relation Overview [Updated 12.18]

누런색이 추가된 엔티티

Relations [Updated 12.18]

Boost Up Flow [Updated 12.18]

실제 강화 로직

Search
엔티티명
태그
설명
정책
부스트 강화 정책
정책
부스트 강화 스킴 정책 (성공, 실패, 잭팟에 대한 정책)
BoostUp [Updated 12.15]
Open
히스토리
부스트 강화 내역
매핑
조인_테이블
BoostCampaign과 BoostUpPolicy 엔티티 매핑
단순응답값
단순응답값
api-server 응닶값
입력파라메터
강화하기 입력값

DEV환경

boost-server Swagger
api-server 호출과 input, output이 약간 다르다.
캠페인에 강화정책 맵핑 추가하기
현재 dev에 강화 가능하도록 맵핑 된 campaignId
246, 250, 265, 233, 249, 220, 251, 107
필요 시 추가 맵핑하면 됨

Q&A

질문 및 요청사항 있으시면 여기에 추가해주세요~ 멘션까지 해주시면 더 빠르게 반응합니다~

Todo

BoostCampain - BoostUpPolicy 간 매핑 테이블 만들기
BoostUp - Brand 연관관계 추가
BoostUpPolicyHistory 엔티티 추가 ≤= 불필요!
BoostUpSchemePolicyHistory 엔티티 추가 ≤= 불필요!
강화 결과 에니메이션타입 추가 : 미스, 일반, 대박, 잭팟
nullable 옵션 추가
최소 결제 금액 필드 추가
액티비티
상세 노출 내용 협의 필요
사용자_캠페인 강화 최종 상태 저장
BoostUp의 누적 관련 속성 삭제
설계 추가 사항
1차 강화 > 2차 강화 > 부스트1_구매 > 결제with부스트1 > 3차 강화 > 결제with부스트2
1, 2차 강화 상태는 '사용완료', boostId는 1이 기록되어야 한다.
1차 강화 > 2차 강화 > 부스트1_구매 > 결제with부스트1 > 3차 강화 > 결제with부스트2 > 결제+1부스트 취소
1, 2차 강화 상태는 '사용전', boostId 1은 삭제(null) 로 업데이트 되어야 한다.
그래야 해당 캠페인을 재구매 할 때 1, 2차 강화가 살아서 붙을 수 있다.
1차 강화 > 2차 강화 > 부스트1_구매 > 결제with부스트1 > 3차 강화 > 결제with부스트2 > 결제+부스트1 취소 > 4차 강화 > 결제+부스트3
결제+부스트3에는 취소된 1, 2차 강화와 신규로 추가한 4차 강화가 누적 되어서 캐시백을 받을 수 있다.
BoostUp.status 추가