•
부분취소 이슈 () (도움필요)
◦
근본 원인: 현재 강화로 추가된 캐시백 및 할인률을 반영하는 방식의 문제인 것 같다
// 강화 결과 합치기
const { policyWithUp, hasBoostUp } = await this.getPromotionPolicyWithBoostUp(
user.id,
boostId,
boostCashbackPromotion
);
if (hasBoostUp) {
boostCashbackPromotion = policyWithUp;
}
payment.cashbacks = [boostCashbackPromotion];
TypeScript
복사
•
강화 예산이 종료되면 부스트 리스트 갱신 가능할까요? 강화 예산이 종료되기 전에 앱을 실행, 이후 강화 예산이 종료된 경우 부스트 리스트가 갱신되지 않아 강화 화면에 진입이 가능합니다. - Freya
•
부스트 후적용 강화
◦
이번 스펙에 미포함?
◦
후적용 강화는 아직 테스트 못해봄
•
강화하기에 boostId가 인풋값으로 꼭 필요한가?
◦
현재 강화하기(POST /v1/boost/campaign/:campaignId/up) 인풋값
▪
부스트 구매 전: campaignId → required, boostId → null
▪
부스트 구매 후: campaignId → required, boostId → required
◦
부스트 구매 후에 boostId를 꼭 입력받게 설계한 이유?
▪
구매 전 부스트 목록(available)과 구매 후 부스트 목록(activated)에 동일한 campaignId의 부스트가 동시에 존재하는 경우, 둘을 구분하기 위해서
▪
션이 말씀하셨는데, 결제 취소 등의 이유로 동일한 campaignId의 부스트가 동시에 존재할 수 있다고 하심
•
캠페인 종료 후 강화 가능 (, ) (작업완료 후 테스트 중)
◦
강화하기 전에 ‘캠페인이 살아있는가?’ 조건을 체크하기 위해서 campaign.status === ENABLED로 부족한 것 같다.
•
강화하기 (BoostUpService.up 리팩토링)
◦
queryRunner 없애고 @Transactional 이용하는 방식으로 바꾸기
•
강화 실패하는 현상 ()
◦
데브에서는 한번도 이슈 없던 부분
◦
BoostUpService.up 리팩토링하면서 같이 해결해야 할듯
•
fix/boost-up-performance 리뷰
◦
바뀐 내용
▪
campaign 엔티티에 BoostCampaignBoostUpPolicyMapping 원투원으로 추가해서, campaign 불러올 때, 강화 정책까지 불러옴
▪
◦
boostUpEntities가 input에 들어있는 경우는 없는 것 같은데 빼도 되지 않을까요?
▪
어떤 의도로 넣은 것인지?
async getBoostUpTotal(input: IGetBoostUpTotalInput): Promise<BoostUpTotal> {
const { userId, campaign, boostPromotion, boostId } = input;
let { boostUpEntities } = input;
if (boostUpEntities) {
boostUpEntities = await this.boostUpRepository.getBoostUps({
userId,
campaignId: campaign.id,
boostId,
status: BoostUpStatus.ENABLED,
});
}
const { maxDiscountAmount, priceMin, discount: discountAmount } = boostPromotion.promotion;
return BoostUpTotal.create(boostUpEntities ?? [], { discountAmount, maxDiscountAmount, priceMin });
}
TypeScript
복사
◦
userBoostUps가 없는 경우 return this.boostUpRepository.hasBoostUp(userId, campaignId, boostId);가 실행되는데, userBostUps가 없으면 hasBoostUp으로 조회해도 무조건 없지 않을까요?
private async userHasBoostUp(input: IsUserWithBoostUpInput) {
const { userId, campaignId, boostId, userBoostUps } = input;
if (userBoostUps) {
return (
userBoostUps.filter((boostUp: BoostUp) => {
return boostUp.campaignId === campaignId && boostUp.boostId === boostId;
}).length > 0
);
}
return this.boostUpRepository.hasBoostUp(userId, campaignId, boostId);
}
TypeScript
복사
◦
TODO의 의미?
//TODO: common의 IBoostCampaign을 쓰지 말고 domain을 선언하는 식으로 변경
const boostUpPolicyEntity = (campaign as BoostCampaignEntity).boostCampaignBoostUpPolicyMapping?.boostUpPolicy;
const boostUpPolicy = boostUpPolicyEntity?.boostUpSchemePolicies
? BoostUpPolicy.create(boostUpPolicyEntity)
: undefined;
Plain Text
복사
(추가중)